トップ :: H 電気 :: H04 電気通信技術




【発明の名称】 画像処理装置、画像形成装置およびプログラム
【発明者】 【氏名】玉谷 光之

【氏名】山田 和雄

【要約】 【課題】画像処理装置において、種々のフィルタ演算に適用可能であり、かつ、メモリを効率良く使用することを可能にする。

【構成】RAM204には、列方向に連続する4個の階調データが記憶され、これらの階調データはフリップフロップ205に保持される。シフト演算器207eに上述の4個の階調データに連続する5番目の階調データが供給されるときに、フリップフロップ205からは対応する4個の階調データが読み出される。このとき、フリップフロップ205から読み出された階調データが記憶されていたRAM204の記憶領域の書き換えが行われる。具体的には、上述の4個の階調データのうち、1番目の階調データが記憶されていた記憶領域に2番目の階調データが書き込まれ、以下同様に、2番目、3番目、4番目の階調データが記憶されていた記憶領域に、3番目、4番目、5番目の階調データがそれぞれ書き込まれる。
【特許請求の範囲】
【請求項1】
行方向および列方向に配列されることにより所定の画像を表す複数の階調データに対して、m行n列(mおよびnは、m≧2、n≧1をそれぞれ満たす整数)のフィルタ係数の集合によるフィルタ演算を実行する画像処理装置であって、
前記階調データの入力を受け付ける受付手段と、
少なくともm−1個の前記階調データを連続的に読み出し可能に記憶する記憶領域を有する記憶手段と、
前記受付手段に入力され、または、前記記憶手段に記憶された階調データに対して、所定のフィルタ係数に応じたフィルタ演算を実行する演算手段と、
前記記憶手段に対する前記階調データの読み出しおよび書き込みと、前記演算手段に対する前記階調データの入力とを制御する制御手段とを備え、
前記制御手段は、
列方向に連続するm個の前記階調データのうち、1番目からm−1番目までの階調データを前記記憶手段に書き込み、
前記m−1番目の階調データに連続するm番目の階調データが前記受付手段に入力されるときに、前記記憶手段に記憶された1番目からm−1番目までの階調データを読み出し、これらm個の階調データを前記演算手段に入力し、
前記1番目からm−1番目までの階調データが読み出された前記記憶手段の記憶領域に、2番目からm−1番目までの階調データと、前記入力手段に入力されたm番目の階調データとを書き込む
ことを特徴とする画像処理装置。
【請求項2】
前記記憶手段は、第1のメモリと第2のメモリとを備え、
前記制御手段は、
前記1番目からm−1番目までの階調データのうち、1番目からx−1番目(xは、2<x<m−1を満たす整数)までの階調データを前記第1のメモリに書き込むとともに、x番目からm−1番目までの階調データを前記第2のメモリに書き込み、
前記m個の階調データを前記演算手段に入力した後に、前記1番目からx−1番目までの階調データが読み出された前記第1のメモリの記憶領域に、2番目からx−1番目までの前記階調データと、x番目の階調データとを書き込むとともに、前記x番目からm−1番目までの階調データが読み出された前記第2のメモリの記憶領域に、x+1番目からm−1番目までの階調データと、前記入力手段に入力されたm番目の階調データとを書き込む
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記記憶手段は、少なくとも第1のメモリと第2のメモリとを備え、
前記制御手段は、
前記1番目からm−1番目までの階調データのうち、1番目からx−1番目(xは、2<x<m−1を満たす整数)までの階調データを前記第1のメモリに書き込むとともに、x番目からy番目(yは、x<y<m−1を満たす整数)までの階調データを前記第2のメモリに書き込み、
前記m個の階調データを前記演算手段に入力した後に、前記1番目からx−1番目までの階調データが読み出された前記第1のメモリの記憶領域に、2番目からx−1番目までの前記階調データと、x番目の階調データとを書き込むとともに、前記x番目からy番目までの階調データが読み出された前記第2のメモリの記憶領域に、x+1番目からy番目までの階調データと、y+1番目の階調データとを書き込む
ことを特徴とする請求項1に記載の画像処理装置。
【請求項4】
請求項1ないし3に記載の画像処理装置を備えることを特徴とする画像形成装置。
【請求項5】
行方向および列方向に配列されることにより所定の画像を表す複数の階調データに対して、m行n列(mおよびnは、m≧2、n≧1をそれぞれ満たす整数)のフィルタ係数の集合によるフィルタ演算を実行するコンピュータであって、
前記階調データの入力を受け付ける受付手段と、
少なくともm−1個の前記階調データを連続的に読み出し可能に記憶する記憶領域を有する記憶手段と、
前記受付手段に入力され、または、前記記憶手段に記憶された階調データに対して、所定のフィルタ係数に応じたフィルタ演算を実行する演算手段と、
前記記憶手段に対する前記階調データの読み出しおよび書き込みと、前記演算手段に対する前記階調データの入力とを制御する制御手段とを備えるコンピュータに、
列方向に連続するm個の前記階調データのうち、1番目からm−1番目までの階調データを前記記憶手段に書き込む処理と、
前記m−1番目の階調データに連続するm番目の階調データが前記受付手段に入力されるときに、前記記憶手段に記憶された1番目からm−1番目までの階調データを読み出し、これらm個の階調データを前記演算手段に入力する処理と、
前記1番目からm−1番目までの階調データが読み出された前記記憶手段の記憶領域に、2番目からm−1番目までの階調データと、前記入力手段に入力されたm番目の階調データとを書き込む処理と
を実行させることを特徴とするプログラム。

【発明の詳細な説明】【技術分野】
【0001】
本発明は、画像処理装置、画像形成装置およびプログラムに関する。
【背景技術】
【0002】
画像データに対してフィルタ処理を行う画像処理装置においては、フィルタサイズに応じた容量のメモリを備える構成が一般的である。このようなメモリは、ラインメモリやラインバッファと呼ばれる。例えば、フィルタサイズが5×5(画素)である場合には、4行分または5行分のラインメモリを設けることが多い(図13参照)。
【特許文献1】特開2003−317094号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
ところで、上述の従来例のような構成においては、それぞれのラインメモリにはそれぞれの行に応じた画像データが記憶される。このような構成においては、フィルタサイズが大きくなるほど、多くのラインメモリを備える必要があった。また、画像データのサイズやフィルタサイズが変化した場合には、有効に使用されない記憶領域がラインメモリに生じることがあった。
【0004】
一方、特許文献1には、1個のラインメモリで所定のフィルタ効果を得るための発明が開示されている。しかしながら、特許文献1に記載の発明は特定のフィルタにのみ適用可能なものであるため、汎用性に乏しいという不都合がある。
【0005】
本発明はかかる事情に鑑みてなされたものであり、その目的は、画像処理装置において、種々のフィルタ演算に適用可能であり、かつ、メモリを効率良く使用することを可能にする技術を提供することにある。
【課題を解決するための手段】
【0006】
上述の目的を達成するために、本発明は、行方向および列方向に配列されることにより所定の画像を表す複数の階調データに対して、m行n列(mおよびnは、m≧2、n≧1をそれぞれ満たす整数)のフィルタ係数の集合によるフィルタ演算を実行する画像処理装置であって、前記階調データの入力を受け付ける受付手段と、少なくともm−1個の前記階調データを連続的に読み出し可能に記憶する記憶領域を有する記憶手段と、前記受付手段に入力され、または、前記記憶手段に記憶された階調データに対して、所定のフィルタ係数に応じたフィルタ演算を実行する演算手段と、前記記憶手段に対する前記階調データの読み出しおよび書き込みと、前記演算手段に対する前記階調データの入力とを制御する制御手段とを備え、前記制御手段は、列方向に連続するm個の前記階調データのうち、1番目からm−1番目までの階調データを前記記憶手段に書き込み、前記m−1番目の階調データに連続するm番目の階調データが前記受付手段に入力されるときに、前記記憶手段に記憶された1番目からm−1番目までの階調データを読み出し、これらm個の階調データを前記演算手段に入力し、前記1番目からm−1番目までの階調データが読み出された前記記憶手段の記憶領域に、2番目からm−1番目までの階調データと、前記入力手段に入力されたm番目の階調データとを書き込むことを特徴とする画像処理装置を提供する。
【0007】
この態様において、前記記憶手段は、複数のメモリによって構成されていてもよい。例えば、前記記憶手段が2つのメモリ(第1のメモリと第2のメモリ)を備え、前記制御手段が、前記1番目からm−1番目までの階調データのうち、1番目からx−1番目(xは、2<x<m−1を満たす整数)までの階調データを前記第1のメモリに書き込むとともに、x番目からm−1番目までの階調データを前記第2のメモリに書き込み、前記m個の階調データを前記演算手段に入力した後に、前記1番目からx−1番目までの階調データが読み出された前記第1のメモリの記憶領域に、2番目からx−1番目までの階調データと、x番目の階調データとを書き込むとともに、前記x番目からm−1番目までの階調データが読み出された前記第2のメモリの記憶領域に、x+1番目からm−1番目までの階調データと、前記入力手段に入力されたm番目の階調データとを書き込む構成であってもよい。
また、前記記憶手段が3つ以上のメモリを備える構成としてもよい。すなわち、前記記憶手段は、少なくとも第1のメモリと第2のメモリとを備え、前記制御手段は、前記1番目からm−1番目までの階調データのうち、1番目からx−1番目(xは、2<x<m−1を満たす整数)までの階調データを前記第1のメモリに書き込むとともに、x番目からy番目(yは、x<y<m−1を満たす整数)までの階調データを前記第2のメモリに書き込み、前記m個の階調データを前記演算手段に入力した後に、前記1番目からx−1番目までの階調データが読み出された前記第1のメモリの記憶領域に、2番目からx−1番目までの前記階調データと、x番目の階調データとを書き込むとともに、前記x番目からy番目までの階調データが読み出された前記第2のメモリの記憶領域に、x+1番目からy番目までの階調データと、y+1番目の階調データとを書き込む構成であってもよい。
【0008】
なお、上述した複数のメモリを備える構成においては、例えば、「2番目からx−1番目までの階調データ」や「x+1番目からm−1番目までの階調データ」などが、1個の階調データとなることを妨げない。具体的には、例えば、前記mが「5」であり、前記xが「3」である場合には、前記制御手段は、1番目から2(x−1)番目の階調データを前記第1のメモリに書き込むとともに、3(x)番目から4(m−1)番目の階調データを前記第2のメモリに書き込み、5(m)個の階調データを前記演算手段に入力した後に、1番目から2(x−1)番目までの階調データが読み出された前記第1のメモリの記憶領域に、2(x−1)番目の階調データと、3(x)番目の階調データとを書き込むとともに、3(x)番目から4(m−1)番目までの階調データが読み出された前記第2のメモリの記憶領域に、4(x+1、m−1)番目の階調データと、前記入力手段に入力された5番目の階調データとを書き込む、といったようになる。すなわち、この場合においては、「2番目からx−1番目までの階調データ」は「2番目の階調データ」と同意であり、「x+1番目からm−1番目までの階調データ」は「4番目の階調データ」と同意である。
【0009】
また、本発明は、上述した形態と異なる形態によっても提供され得る。例えば、本発明は、上述の画像処理装置を備える画像形成装置の形態によって提供されることも可能であるし、また、上述の画像処理装置が有する機能を実現させるためのプログラムの形態で提供されることも可能である。例えば、本発明に係るプログラムには、行方向および列方向に配列されることにより所定の画像を表す複数の階調データに対して、m行n列(mおよびnは、m≧2、n≧1をそれぞれ満たす整数)のフィルタ係数の集合によるフィルタ演算を実行するコンピュータであって、前記階調データの入力を受け付ける受付手段と、少なくともm−1個の前記階調データを連続的に読み出し可能に記憶する記憶領域を有する記憶手段と、前記受付手段に入力され、または、前記記憶手段に記憶された階調データに対して、所定のフィルタ係数に応じたフィルタ演算を実行する演算手段と、前記記憶手段に対する前記階調データの読み出しおよび書き込みと、前記演算手段に対する前記階調データの入力とを制御する制御手段とを備えるコンピュータに、列方向に連続するm個の前記階調データのうち、1番目からm−1番目までの階調データを前記記憶手段に書き込む処理と、前記m−1番目の階調データに連続するm番目の階調データが前記受付手段に入力されるときに、前記記憶手段に記憶された1番目からm−1番目までの階調データを読み出し、これらm個の階調データを前記演算手段に入力する処理と、前記1番目からm−1番目までの階調データが読み出された前記記憶手段の記憶領域に、2番目からm−1番目までの階調データと、前記入力手段に入力されたm番目の階調データとを書き込む処理とを実行させることを特徴とするものがある。
【発明の効果】
【0010】
本発明によれば、画像処理装置において、メモリを効率良く使用しつつも、種々のフィルタ演算に適用することが可能となる。
【発明を実施するための最良の形態】
【0011】
以下、本発明の実施の形態について図面を参照しつつ説明する。なお、以下に説明する実施形態においては、「階調データ」とは、階調を表す8ビット(すなわち256階調)のモノクロデータであるとする。また、「画像データ」とは、上述の階調データを行方向および列方向に配列した集合であり、それぞれの階調データが表す階調により所定のグレースケール画像を表すデータであるとする。
【0012】
[第1実施形態]
図1は、本発明の第1の実施形態である画像形成装置100の構成を示すブロック図であり、図2は、この画像形成装置100が備える画像処理装置200の構成を示すブロック図である。図1に示すように、画像形成装置100は、画像読取部1と、画像加工部2と、画像形成部3とを備える。画像読取部1はいわゆるスキャナの機能を有し、原稿を光学的に読み取って画像データを生成する。画像加工部2は、画像読取部1により生成された画像データに対して種々の画像処理を実行する。画像形成部3はいわゆるプリンタの機能を有し、画像加工部2により画像処理が実行された画像データに応じた画像を用紙等のシート状物に形成する。
【0013】
画像処理装置200は、画像加工部2の一部を構成するものである。図2に示すように、画像処理装置200は、画像メモリ10と、画像処理部20と、制御部30とを備え、これらの各部はバス40によって互いに接続されている。画像メモリ10は、1ページ分または1ページを所定のバンド単位で分割した分の階調データを記憶する。画像メモリ10としては、例えばDRAM(Dynamic Random Access Memory)を用いることができる。画像処理部20は、加算器やシフト演算器などにより構成され、画像メモリ10からバス40を介して階調データの入力を受け付けて、所定のフィルタ演算を実行する。制御部30はCPU(Central Processing Unit)、ROM(Read Only Memory)およびRAM(Random Access Memory)等を備えた演算装置であり、CPUがRAMをワークエリアとして用いながらROMに記憶されたプログラムを実行し、これにより画像処理装置200全体の動作を制御する。なお、制御部30は、画像形成装置100全体の動作を制御するものであってもよい。
【0014】
ここで、画像処理部20の詳細な構成を図3に示す。同図に示すように、画像処理部20は、フリップフロップ(FF)201と、シフト演算器202と、OR演算器203と、RAM204と、フリップフロップ205と、選択スイッチ206と、シフト演算器207a、207b、207c、207dおよび207eと、加算器208aおよび208bと、フリップフロップ209と、加算器210と、フリップフロップ211a、211b、211c、211dおよび211eと、シフト演算器212a、212b、212c、212dおよび212eと、加算器213と、除算器214とを備える。なお、同図に示す矢印は、データの流れを表している。また、同図においてシフト演算器のブロックに示す数字は、その演算器におけるシフト演算のビット数を表している。
【0015】
フリップフロップ201は、8ビット分のデータを保持可能な記憶回路である。フリップフロップ201に保持されたデータは、シフト演算器207eとOR演算器203とに供給される。シフト演算器202は、フリップフロップ205から供給される16ビットのデータに対して、左方向に8ビットのシフト演算(ビットシフト)を行う演算回路である。なお、このとき桁あふれする上位8ビットのデータは、演算結果に影響を与えない(すなわち無視される)。つまり、シフト演算器202は、例えば二進数で「1111111111111111」なるデータが供給された場合には、二進数で「1111111100000000」なるデータを出力する。OR演算器203は、フリップフロップ201または205からのデータとシフト演算器202からのデータの論理和を出力する演算回路である。つまり、OR演算器203は、例えばフリップフロップ201から「10101010」、シフト演算器202から「1111111100000000」なる二進数のデータが供給された場合には、二進数で「1111111110101010」なるデータを出力する。
【0016】
RAM204は、フィルタ演算を実行するためのデータを記憶するメモリであり、いわゆるラインメモリに相当する。RAM204は、1ワードあたり16ビットのデータを一時的に保持し、その全体としての記憶容量は、4ライン分の階調データに相当する容量であると望ましい。このようなRAM204としては、例えばSRAM(Static RAM)を用いることができる。
【0017】
フリップフロップ205は、32ビット分のデータを保持可能な記憶回路であり、RAM204から供給されたデータを保持する。選択スイッチ206は、フリップフロップ205から供給されるデータを選択的に振り分ける回路である。選択スイッチ206は、シフト演算器207a、207b、207cおよび207dに対して、連続する8ビットのデータを供給する。
【0018】
シフト演算器207a、207b、207c、207dおよび207eは、それぞれ、左方向に所定のビット数のシフト演算を実行する演算回路である。シフト演算器207a、207b、207c、207dおよび207eのそれぞれにおけるシフト演算のビット数は、画像処理装置200が実現するフィルタ演算に相当するフィルタのフィルタ係数に応じて決められるが、詳細については後述する。本実施形態においては、それぞれのシフト演算器におけるシフト演算のビット数は、シフト演算器207aが「0」、207bが「1」、207cが「2」、207dが「1」、207eが「0」である。なお、ここにおいて、シフト演算のビット数が「0」であるというのは、シフト演算を実行しないことと同意である。本実施形態においては、説明の便宜上、シフト演算のビット数が「0」である部分にもシフト演算器を設けた表示としている。
【0019】
加算器208aは、シフト演算器207aおよび207bによる演算結果を表すデータを加算する演算回路であり、加算器208bは、シフト演算器207c、207dおよび207eによる演算結果を表すデータを加算する演算回路である。フリップフロップ209は、加算器208bによる演算結果を表すデータを保持する記憶回路である。加算器210は、加算器208aから供給されるデータとフリップフロップ209から供給されるデータとを加算する演算回路である。
【0020】
フリップフロップ211a、211b、211c、211dおよび211eは、それぞれ、加算器210から供給されるデータを保持する記憶回路である。フリップフロップ211eは、加算器210から供給されるデータを保持し、加算器210から新たなデータが供給されてきたときには、これを上書きして保持する。なお、上書きされる前にフリップフロップ211eに保持されていたデータは、フリップフロップ211dに供給される。また、フリップフロップ211dは、フリップフロップ211eから供給されるデータを保持し、フリップフロップ211eから新たなデータが供給されてきたときには、これを上書きして保持する。また、フリップフロップ211c、211bおよび211aも同様に動作するが、フリップフロップ211aには、データを供給すべき後段のフリップフロップが存在しない。
【0021】
シフト演算器212a、212b、212c、212dおよび212eは、それぞれ、左方向に所定のビット数のシフト演算を実行する演算回路である。シフト演算器212a、212b、212c、212dおよび212eのそれぞれにおけるシフト演算のビット数は、シフト演算器207a、207b、207c、207dおよび207eのそれと同様に、画像処理装置200が実現するフィルタ演算に相当するフィルタのフィルタ係数に応じて決められるが、詳細については後述する。本実施形態においては、それぞれのシフト演算器におけるシフト演算のビット数は、シフト演算器212aが「0」、212bが「1」、212cが「2」、212dが「1」、212eが「0」である。なお、ここにおいても、シフト演算のビット数が「0」であるというのは、シフト演算を実行しないことと同意である。
【0022】
加算器213は、シフト演算器212a、212b、212c、212dおよび212eによる演算結果を表すデータを加算する演算回路である。除算器214は、加算器213により供給されるデータを所定の値Cで除算する演算回路である。除算器214における値C、すなわち除数は、画像処理装置200が実現するフィルタ演算に相当するフィルタに応じて決められる正規化のための値であるが、詳細については後述する。
【0023】
なお、以下においては、シフト演算器207a、207b、207c、207dおよび207eの各々を区別する必要がない場合には、これらを総称して「シフト演算器207」という。同様に、フリップフロップ211a〜211eおよびシフト演算器212a〜212eについても、各々を区別する必要がない場合には、これらを総称して「フリップフロップ211」および「シフト演算器212」という。
【0024】
画像処理部20のうち、シフト演算器207、加算器208a、208b、フリップフロップ209、加算器210、フリップフロップ211、シフト演算器212、加算器213および除算器214は、フィルタ係数の集合(説明の便宜上、以下においては単に「フィルタ」ともいう。)で表されるフィルタ演算を実現するものである。そこで、以下では、これらの各部を総称して「フィルタ演算部50」という。
【0025】
フィルタ演算部50は、図4に示すフィルタに相当するフィルタ演算を実行するものである。つまり、画像処理部20におけるフィルタ演算を行列で表現すると、行列Mは以下の(1)式のようになる。
【数1】


【0026】
本実施形態におけるフィルタ、すなわち行列Mには、以下の特徴がある。すなわち、第i行第j列(ただし、iおよびjは、2≦i≦5、2≦j≦5をそれぞれ満たす整数)のフィルタ係数の分子は、第1行第j列のフィルタ係数の分子と第i行第1列のフィルタ係数の分子の積により表される。
【0027】
また、第1行のフィルタ係数の分子と第1列のフィルタ係数の分子は、シフト演算器207a〜207eおよびシフト演算器212a〜212eにおけるシフト演算のビット数と所定の対応関係を有する。具体的には、シフト演算器207b、207c、207dおよび207eにおけるシフト演算のビット数は、それぞれ、第1行第1列、第2行第1列、第3行第1列、第4行第1列および第5行第1列のフィルタ係数の分子によって定められ、シフト演算器212a、212b、212c、212dおよび212eにおけるシフト演算のビット数は、それぞれ、第1行第1列、第1行第2列、第1行第3列、第1行第4列および第1行第5列のフィルタ係数の分子によって定められる。これらの値の間には、それぞれのシフト演算のビット数をn、それぞれのフィルタ係数の分子をmとしたとき、以下の(2)式の関係が成立する。
【数2】


【0028】
つまり、例えば左方向に1ビットのシフト演算を行う場合には、2の1乗が「2」であることから、対応するフィルタ係数の分子mは「2」となる。これは、第1行第2列のフィルタ係数の分子とシフト演算器207bにおけるシフト演算のビット数の関係に対応する。また、第1行第4列とシフト演算器207d、第2行第1列とシフト演算器212bおよび第4行第1列とシフト演算器212dのそれぞれについても同様の関係を有している。また、例えば左方向に2ビットのシフト演算を行う場合には、2の2乗が「4」であることから、対応するフィルタ係数の分子mは「4」となる。これは、第1行第3列のフィルタ係数の分子とシフト演算器207cにおけるシフト演算のビット数の関係や、第3行第1列のフィルタ係数の分子とシフト演算器212cにおけるシフト演算のビット数の関係に対応する。
【0029】
なお、正規化のための値C、すなわち各フィルタ係数の分母に相当する値は、例えば、各フィルタ係数の分子の総和であると望ましい。この場合、本実施形態における値Cは「100」となる。しかしながら、もちろん、値Cは他の方法により決定されてもよい。
【0030】
以上の構成のもと、画像形成装置100は、読み取った原稿に基づいて画像データを生成し、生成した画像データに種々の画像処理を実行し、その後、画像データに応じた画像を形成する。このとき、画像処理装置200は、上記(1)式によって定められるフィルタ演算を画像処理の一部として実行する。以下では、画像処理装置200がフィルタ演算を実行する際の動作について説明する。
【0031】
画像読取部1から階調データが入力されると、画像処理装置200の制御部30は、これを画像メモリ10に順次格納する。そして、所定量の階調データが画像メモリ10に格納されると、制御部30は画像メモリ10から階調データを読み出し、画像処理部20のRAM204に書き込んでいく。このときRAM204に書き込まれる階調データは、画像データの4行分に相当する。
【0032】
RAM204に書き込まれる階調データについて、図5および図6を参照しながら説明する。図5は、画像メモリ10に格納された状態の階調データを模式的に示す図であり、図6は、RAM204に書き込まれた状態の階調データを模式的に示す図である。なお、これらの図においては、説明の便宜上、行をアルファベットで表記し、列を数字で表記している。ここにおいて、第A行が第1行、第B行が第2行に対応しており、以下同様に、第C行(第3行)、第D行(第4行)、…、というように続く。
【0033】
図5に示すように、階調データは、画像メモリ10においては行方向および列方向に連続的に格納されている。制御部30は、このように格納された階調データを読み出し、階調データが図6に示すような順序で並ぶようにRAM204に書き込む。つまり、制御部30は、列方向に連続する行(第A行と第B行、第C行と第D行)の隣り合う階調データが同一ワード内に記憶されるように階調データを書き込む。その結果、RAM204においては、第1ワードには第A行第1列と第B行第1列、第2ワードには第C行第1列と第D行第1列、第3ワードには第A行第2列と第B行第2列、というように階調データが書き込まれていく。なお、図6においては、第A行第1列の階調データ(8ビット)が上位側にあり、第B行第1列の階調データ(8ビット)が下位側にある。これらは合わせて16ビットであり、ワード全体を占めている。
【0034】
このように階調データが書き込まれると、制御部30が読み出しアドレスとして第1ワードのアドレスを指定することで、第A行第1列と第B行第1列の階調データを連続的に読み出すことができる。また、制御部30が読み出しアドレスとして第2ワードのアドレスを指定することで、第C行第1列と第D行第1列の階調データを連続的に読み出すことができる。そして、このような読み出し動作を連続的に行うことによって、4行分の階調データを連続的に読み出すことができる。
【0035】
なお、以下においては、階調データのそれぞれを区別するために、画像メモリ10に格納されているときの行と列の位置に応じた表記を行う。具体的には、例えば、第A行第1列の階調データを「A1」、第B行第2列の階調データを「B2」、というように、それぞれの行と列の位置に対応する符号を階調データに付す。
【0036】
さて、上述のように階調データがRAM204に書き込まれると、制御部30は、フィルタ演算部50に階調データを入力すべく、各階調データの読み出しを行う。本実施形態におけるフィルタは5×5(画素)のフィルタサイズを有するため、制御部30は5行分の階調データの読み出しを行う。5行分の階調データのうちの4行分はRAM204に書き込まれているから、制御部30は4行分の階調データをRAM204から読み出す。一方、これら4行に後続する5行目の階調データは画像メモリ10に格納されているから、制御部30はこの5行目の階調データを画像メモリ10から読み出す。このとき制御部30が行う動作は、以下の通りである。
【0037】
図7は、RAM204の記憶内容の変化を模式的に示す図である。以下、同図を適宜参照しながら、制御部30が行う動作を説明する。まず、制御部30は、第E行第1列の階調データ、すなわち階調データE1を画像メモリ10から読み出し、これをフリップフロップ201に記憶させる。次に、制御部30は、4行分の階調データA1、B1、C1およびD1をRAM204の第1および第2ワードから連続的に読み出し、これをフリップフロップ205に記憶させる。そして、制御部30は、フリップフロップ201およびフリップフロップ205から5行分の階調データA1、B1、C1、D1およびE1を読み出し、それぞれをフィルタ演算部50に入力する。
【0038】
フィルタ演算部50は、対応する階調データのそれぞれについて、図4に示すフィルタ係数を乗じ、その総和を算出して出力する。フィルタ演算部50から出力されるデータは、例えば、フィルタの中央に位置する階調データの演算結果に対応する。なお、フィルタ演算部50において、シフト演算器207による演算結果を加算する処理(すなわち前段の処理)は、階調データの演算(シフト演算)結果どうしの総和を列単位で算出する処理に対応している。また、フィルタ演算部50において、シフト演算器212による演算結果を加算する処理(すなわち後段の処理)は、階調データの演算(シフト演算)結果どうしの総和を行単位で算出する処理に対応している。すなわち、加算器210において各列の階調データの演算結果を加算し、その加算結果に対してシフト演算器212a、212b、212c、212dおよび212eにおいて各行に対応するシフト演算を行い、その結果を加算器213において加算することにより、図4に示すフィルタに相当するフィルタ演算を実行している。
【0039】
このようなフィルタ演算を実行している間に、制御部30は、RAM204の書き換えを適当なタイミングで行っている。制御部30は、5行1列分の階調データをフィルタ演算部50に入力する毎に、その階調データを読み出した記憶領域を書き換える。例えば、階調データA1〜E1をフィルタ演算部50に入力したときには、制御部30はRAM204の第1および第2ワードに記憶されたデータの書き換えを行う。具体的には、制御部30は、フリップフロップ205から第1ワードの階調データA1、B1を読み出し、これをシフト演算器202に入力するとともに、フリップフロップ205から第2ワードの階調データC1を読み出し、これをOR演算器203に入力する。
【0040】
OR演算器203には、シフト演算器202による演算結果と階調データC1とが入力される。シフト演算器202では8ビットのビットシフトが行われるので、OR演算器203による演算結果は、上位8ビットが階調データB1と同等であり、下位8ビットが階調データC1と同等であるデータとなる。そして、制御部30は、このデータをRAM204の第1ワードに書き込む。その結果、この書き込みの前後において、RAM204の記憶内容は図7の(a)から(b)のように変化する。
【0041】
このようにして第1ワードの書き換えを行ったら、制御部30は第2ワードの書き換えを行う。具体的には、制御部30は、フリップフロップ205から第2ワードの階調データC1、D1を読み出し、これをシフト演算器202に入力するとともに、フリップフロップ201から階調データE1を読み出し、これをOR演算器203に入力する。
【0042】
OR演算器203には、シフト演算器202による演算結果と階調データE1とが入力されるので、OR演算器203による演算結果は、上位8ビットが階調データD1と同等であり、下位8ビットが階調データE1と同等であるデータとなる。そして、制御部30は、このデータをRAM204の第2ワードに書き込む。その結果、この書き込みの前後において、RAM204の記憶内容は図7の(b)から(c)のように変化する。
【0043】
以上の処理が第1列の第A行〜第E行に相当する処理である。制御部30は、このような処理を第2列についても同様に実行する。すなわち、制御部30は、階調データE2を画像メモリ10から読み出すとともに、階調データA2、B2、C2およびD2をRAM204から読み出し、その後第3および第4ワードの書き換えを行う。これにより、RAM204の記憶内容は、図7の(c)から(d)、そして(e)のように変化する。そしてさらに、制御部30は、このような処理を第3列以降についても同様に実行する。
【0044】
このような処理をRAM204の全体について実行すると、図7の(f)に示すように、記憶されていた第A行〜第D行の階調データのうち、第A行の階調データのみが削除される。そして、第A行の階調データにかわって、第E行の階調データが記憶される。第B行〜第E行の階調データは、第B行と第C行が同一ワードに記憶され、第D行と第E行が同一ワードに記憶されるとともに、これらのワードが交互に並ぶように配置される。そのため、第B行〜第F行についても、第A行〜第E行の場合と同様の要領でフィルタ演算を実行することが可能となる。
【0045】
このように、本実施形態の画像処理装置200によれば、フィルタ演算部50に階調データを入力するためのメモリ(RAM204)を1個とすることが可能となる。また、この画像処理装置200によれば、制御部30が、必要な階調データが連続的に読み出されるようにメモリに対して書き込みおよび読み出しを行うので、1個のメモリであっても処理速度の低下を抑制することが可能となる。加えて、この画像処理装置200によれば、メモリの数がフィルタサイズに依存しないので、使用するフィルタが異なるサイズのものに切り替えられた場合であっても、メモリを無駄なく効率的に使用することが可能となる。
【0046】
なお、この画像処理装置200において、使用するフィルタに応じて変化するのは、画像処理部20のうちフィルタ演算部50のみであって、それ以外の部分の構成については、本質的には同様である。ゆえに、本実施形態の画像処理装置200は、種々のフィルタ演算に適用可能であるといえる。ただし、フィルタサイズが異なる場合には、選択スイッチ206の振り分け先の数が変化する。
【0047】
[第2実施形態]
続いて、本発明の第2の実施形態について説明する。本実施形態は、画像処理装置内の構成および動作を除けば、上述した第1実施形態と同様である。そこで、以下においては、上述した第1実施形態と異なる部分を中心に説明する。なお、上述した第1実施形態と同様の構成要素については、本実施形態においても同じ符号を付し、その説明を適宜省略する。また、上述した第1実施形態の画像処理装置200および画像処理部20と区別するために、本実施形態の画像処理装置および画像処理部には、それぞれ、「画像処理装置200a」、「画像処理部20a」と符号を付す。
【0048】
図8は、画像処理部20aの構成を示す図である。本実施形態の画像処理部20aを図3に示した第1実施形態の画像処理部20と比較すると、画像処理部20のメモリは1個(RAM204)であるのに対して、画像処理部20aのメモリは2個(RAM204a、204b)である点に主たる相違がある。また、これに伴い、画像処理部20では1個ずつであったRAM204周辺の構成(シフト演算器202、OR演算器203およびフリップフロップ205)も、それぞれ2個ずつ(シフト演算器202a、202b、OR演算器203a、203bおよびフリップフロップ205a、205b)となり、選択スイッチ206に相当する部分はなくなっている。
【0049】
なお、フィルタ演算部50aの内部構成は、上述した第1実施形態のフィルタ演算部50とほぼ同様であり、対応するフィルタも、上述した第1実施形態のフィルタ(図4)と同様である。図8において、加算器210aは、第1実施形態の加算器208a、208b、フリップフロップ209および加算器210に相当するものである。第1実施形態においては、第A行および第B行の階調データと第C行〜第E行の階調データの出力タイミングが一致しないためにフリップフロップ209を設けていたが、本実施形態においてはこれらの出力タイミングが一致するため、1個の加算器で加算をすることが可能である。
【0050】
RAM204aおよび204bは、それぞれ2ライン分の階調データを記憶する記憶容量を有する。つまり、RAM204a、204bそれぞれの記憶容量は、上述したRAM204の記憶容量の半分である。また、フリップフロップ205aおよび205bは、それぞれ16ビット分のデータを保持する。つまりこれも、フリップフロップ205が保持するデータの半分である。
【0051】
続いて、画像処理装置200aにおける動作を説明する。まず、画像読取部1から階調データが入力されると、画像処理装置200aの制御部30は、これを画像メモリ10に順次格納する。このとき、階調データは図5に示すような状態で画像メモリ10に格納される。そして、所定量の階調データが画像メモリ10に格納されると、制御部30は画像メモリ10から階調データを読み出し、画像処理部20のRAM204aおよび204bに書き込んでいく。このときRAM204aおよび204bに書き込まれる階調データは、それぞれ2行分である。
【0052】
RAM204aおよび204bに書き込まれる階調データについて、図9および図10を参照しながら説明する。図9は、RAM204aに書き込まれた状態の階調データを模式的に示す図であり、図10は、RAM204bに書き込まれた状態の階調データを模式的に示す図である。なお、階調データの表記方法は、上述した第1実施形態の図6に準じている。
【0053】
これらの図に示すように、RAM204aには第A行と第B行の階調データが格納され、RAM204bには第C行と第D行の階調データが格納される。RAM204aにおいては、第1ワードには第A行第1列と第B行第1列、第2ワードには第A行第2列と第B行第2列、第3ワードには第A行第3列と第B行第3列、というように階調データが書き込まれていく。また、RAM204bにおいては、第1ワードには第C行第1列と第D行第1列、第2ワードには第C行第2列と第D行第2列、第3ワードには第C行第3列と第D行第3列、というように階調データが書き込まれていく。
【0054】
このようにして階調データがRAM204aおよび204bに書き込まれると、制御部30は、フィルタ演算部50aに階調データを入力すべく、各階調データの読み出しを行う。本実施形態におけるフィルタは5×5(画素)のフィルタサイズを有するため、制御部30は5行分の階調データの読み出しを行う。5行分の階調データのうちの4行分はRAM204aおよび204bに書き込まれているから、制御部30は4行分の階調データをRAM204aおよび204bから読み出す。一方、これら4行に後続する5行目の階調データは画像メモリ10に格納されているから、制御部30はこの5行目の階調データを画像メモリ10から読み出す。このとき制御部30が行う動作は、以下の通りである。
【0055】
図11は、RAM204aの記憶内容の変化を模式的に示す図であり、図12は、RAM204bの記憶内容の変化を模式的に示す図である。以下、これらの図を適宜参照しながら、制御部30が行う動作を説明する。まず、制御部30は、第E行第1列の階調データ、すなわち階調データE1を画像メモリ10から読み出し、これをフリップフロップ201に記憶させる。次に、制御部30は、4行分の階調データA1、B1、C1およびD1をRAM204aおよび204bの第1ワードからそれぞれ読み出し、これをフリップフロップ205aおよび205bに記憶させる。そして、制御部30は、フリップフロップ201およびフリップフロップ205aおよび205bから5行分の階調データA1、B1、C1、D1およびE1を読み出し、それぞれをフィルタ演算部50aに入力する。フィルタ演算部50aは、対応する階調データのそれぞれについて、図4に示すフィルタ係数を乗じ、その総和を算出して出力する。
【0056】
フィルタ演算を実行している間に、制御部30は、RAM204aおよび204bの書き換えを適当なタイミングで行っている。制御部30は、5行1列分の階調データをフィルタ演算部50aに入力する毎に、その階調データを読み出した記憶領域を書き換える。例えば、階調データA1〜E1をフィルタ演算部50aに入力したときには、制御部30はRAM204aの第1ワードに記憶されたデータの書き換えを行う。具体的には、制御部30は、フリップフロップ205aから第1ワードの階調データA1、B1を読み出し、これをシフト演算器202aに入力するとともに、フリップフロップ205bから第1ワードの階調データC1を読み出し、これをOR演算器203aに入力する。
【0057】
OR演算器203aには、シフト演算器202aによる演算結果と階調データC1とが入力される。シフト演算器202aでは8ビットのビットシフトが行われるので、OR演算器203aによる演算結果は、上位8ビットが階調データB1と同等であり、下位8ビットが階調データC1と同等であるデータとなる。そして、制御部30は、このデータをRAM204aの第1ワードに書き込む。その結果、この書き込みの前後において、RAM204aの記憶内容は図11の(a)から(b)のように変化する。
【0058】
また、RAM204aの書き換えに並行して、制御部30はRAM204bの第1ワードに記憶されたデータの書き換えを行う。制御部30は、フリップフロップ205bから第1ワードの階調データC1、D1を読み出し、これをシフト演算器202bに入力するとともに、フリップフロップ201から第1ワードの階調データE1を読み出し、これをOR演算器203bに入力する。
【0059】
OR演算器203bには、シフト演算器202bによる演算結果と階調データE1とが入力される。シフト演算器202bでは8ビットのビットシフトが行われるので、OR演算器203bによる演算結果は、上位8ビットが階調データD1と同等であり、下位8ビットが階調データE1と同等であるデータとなる。そして、制御部30は、このデータをRAM204bの第1ワードに書き込む。その結果、この書き込みの前後において、RAM204bの記憶内容は図12の(a)から(b)のように変化する。
【0060】
このようにして第1ワードの書き換えを行ったら、制御部30は第2ワードの書き換えを行う。具体的には、制御部30は、フリップフロップ205aから第2ワードの階調データA2、B2を読み出し、これをシフト演算器202aに入力するとともに、フリップフロップ205bから階調データC2を読み出し、これをOR演算器203aに入力する。ここで、制御部30は、RAM204aの第1ワードを書き換えたときと同様の処理を実行することによって、上位8ビットが階調データB2と同等であり、下位8ビットが階調データC2と同等であるデータをRAM204aの第2ワードに書き込む。その結果、この書き込みの前後において、RAM204aの記憶内容は図11の(b)から(c)のように変化する。また、RAM204bについても同様の処理を実行することによって、RAM204bの記憶内容は図12の(b)から(c)のように変化する。
【0061】
このような処理をRAM204aの全体について実行すると、RAM204aの記憶内容は図11の(d)のようになる。つまり、第A行および第B行について記憶されていた階調データのうち第A行の階調データが削除され、かわりに第C行の階調データが記憶される。このとき、各ワードの下位8ビット側に記憶されていた第B行の階調データは、上位8ビット側へと移動する。また、同様に、RAM204bについても同様に、その記憶内容は図12の(d)のようになる。つまり、第C行および第D行について記憶されていた階調データのうち第C行の階調データが削除され、かわりに第E行の階調データが記憶される。このとき、各ワードの下位8ビット側に記憶されていた第D行の階調データは、上位8ビット側へと移動する。
【0062】
本実施形態の画像処理装置200aによっても、上述した第1実施形態とほぼ同様の効果が得られる。本実施形態の画像処理装置200aによれば、メモリの個数が2個に増加するが、そのぶん、階調データの読み書きを第1実施形態の画像処理装置200よりも高速にすることが可能となる。
【0063】
[変形例]
以上においては、2つの好適な実施形態を例示して本発明を説明したが、本発明は上述した実施形態に限定されるものではなく、その他の種々の態様にて実施することも可能である。本発明においては、例えば、上述した実施形態に対して以下のような変形を適用することができる。なお、これらの変形は、各々を適宜に組み合わせることも可能である。
【0064】
上述した実施形態は、本発明に係る画像処理装置を画像形成装置に搭載した場合を例示したものであるが、本発明に係る画像処理装置は、画像を出力(表示、プリント等)する種々の電子機器に対して適用することが可能である。また、本発明は、画像処理装置のみならず、この画像処理装置の機能をコンピュータに実行させるためのプログラムや、このプログラムを記憶した記録媒体として提供することも可能である。
【0065】
また、本発明において適用されるフィルタの種類も、上述した実施形態に例示されたものに限定されない。例えば、フィルタサイズやフィルタ係数は適宜に変更可能である。上述した実施形態の例によれば、フィルタ係数を変更することによって、近傍の画素に対する種々の重み付け平均を実現することができる。また、上述した実施形態においては、その構成上、フィルタ係数の分子は2のn乗に限定されていたが、ビットシフトと加算(または減算)とを組み合わせることによって、その他のフィルタ係数とすることもできる。
【0066】
また、上述の実施形態においては、ラインメモリに相当するメモリを1個設ける構成(第1実施形態)と、2個設ける構成(第2実施形態)とを示したが、同様のメモリを3個以上設ける構成であってもよい。例えば、フィルタサイズが7×7(画素)の場合であれば、第2実施形態に示した構成に、同実施形態のシフト演算器202a(202b)、OR演算器203a(203b)、RAM204a(205b)およびフリップフロップ205a(205b)と同様の構成をさらに加え、3個のRAMからそれぞれ2行分ずつの階調データを供給する構成とすればよい。また、あるいは、第1実施形態に示した構成において、選択スイッチ206の分岐を増やすことによっても実現可能である。このように、上述の2つの実施形態の構成を適宜変更することによって、フィルタサイズを5行よりも大きくすることもできるし、逆に小さくすることもできる。
【図面の簡単な説明】
【0067】
【図1】本発明の一実施形態である画像形成装置の構成を示すブロック図である。
【図2】本発明の第1の実施形態に係る画像処理装置の構成を示すブロック図である。
【図3】同実施形態の画像処理部の構成を示すブロック図である。
【図4】同実施形態の画像処理部が実行するフィルタ演算に相当するフィルタを示す図である。
【図5】同実施形態の画像メモリに格納された状態の階調データを模式的に示す図である。
【図6】同実施形態のRAMに書き込まれた状態の階調データを模式的に示す図である。
【図7】同実施形態のRAMの記憶内容の変化を模式的に示す図である。
【図8】本発明の第2の実施形態に係る画像処理部の構成を示す図である。
【図9】同実施形態の第1のRAMに書き込まれた状態の階調データを模式的に示す図である。
【図10】同実施形態の第2のRAMに書き込まれた状態の階調データを模式的に示す図である。
【図11】同実施形態の第1のRAMの記憶内容の変化を模式的に示す図である。
【図12】同実施形態の第2のRAMの記憶内容の変化を模式的に示す図である。
【図13】一般的なラインメモリの構成を例示した図である。
【符号の説明】
【0068】
100…画像形成装置、1…画像読取部、2…画像加工部、3…画像形成部、200…画像処理装置、10…画像メモリ、20…画像処理部、30…制御部、40…バス、50…フィルタ演算部、201、205、205a、205b、209、211a、211b、211c、211d、211e…フリップフロップ、202、202a、202b、207a、207b、207c、207d、207e、212a、212b、212c、212d、212e…シフト演算器、203、203a、203b…OR演算器、204、204a、204b…RAM、206…選択スイッチ、208a、208b、210、213…加算器、214…除算器

【出願人】 【識別番号】000005496
【氏名又は名称】富士ゼロックス株式会社
【出願日】 平成18年7月4日(2006.7.4)
【代理人】 【識別番号】100098084
【弁理士】
【氏名又は名称】川▲崎▼ 研二


【公開番号】 特開2008−17044(P2008−17044A)
【公開日】 平成20年1月24日(2008.1.24)
【出願番号】 特願2006−184768(P2006−184768)