(57)【要約】【課題】画像データをパッキングした状態で処理する事で、メモリ容量の削減と高速処理を実現できるようにする。【解決手段】中間メモリ１０１は、２値化データを６画素分パックして１バイト分のデータとして読み出し書き込みする。バイトデータはバンドバッファの高さサイズ分、格納する。入力２値化データは順次にカレントラインとして示されるように入力され、入力２値化データに対応するバイト位置の６ビットのパッキングデータが解凍されて７ビットのデータに結合されてレジスタ群１０２の対応する位置のレジスタに書き込まれる。処理実行部１０３は、レジスタ群１０２から７×７の２値化データを読み出して注目画素に対する画像処理を行う。こののちレジスタ群の内容をビットシフト等により更新してつぎの処理に備える。【選択図】図１
2007293684.tif 000002
【特許請求の範囲】
【請求項１】
第１の方向に並ぶ所定数の２値画素データを記憶アクセス単位の一まとまりのデータとして記憶する記憶手段と、
上記第１の方向と直交する第２の方向に連続する所定の複数の一まとまりのデータを上記記憶手段から読み出す手段と、
読み出された複数の一まとまりのデータが構成する処理対象領域内の画素に対して画像処理を実行する手段とを有することを特徴とする画像処理装置。
【請求項２】
上記所定数は、上記処理対象領域の上記第１の方向のサイズより小さい請求項１記載の画像処理装置。
【請求項３】
上記処理対象領域の上記第１の方向のサイズと上記所定数の差分だけ上記第２の方向に連続する複数の一まとまりのデータに対し上記処理対象領域の進行方向に隣接する２値画素データを読み出し、上記第２の方向に連続する複数の一まとまりのデータと上記隣接する２値画素データとにより上記処理対象領域を形成する画素データを構成し、当該画素データに対して上記画像処理を実行する請求項２記載の画像処理装置。
【請求項４】
上記差分は１である請求項３記載の画像処理装置。
【請求項５】
上記画像処理は、上記第２の方向にずらしながら実行し、上記第２の方向にずらしながらの一連の画像処理が終了した後、上記第１の方向にずらして上記一連の画像処理を実行し、上記第２の方向にずらす度に最も古い一まとまりのデータをビットシフトさせて上記隣接する２値画素データを組みこんだ一まとまりのデータに更新して上記記憶手段に書き戻す請求項４記載の画像処理装置。
【請求項６】
上記画像処理はフィルタ処理である請求項１〜５記載の画像処理装置。
【請求項７】
上記画像処理は上記処理対象領域中のすべての２値画素データがゼロであるかどうかを判別する処理を含む請求項１〜５記載の画像処理装置。
【請求項８】
上記画像処理は上記処理対象領域中の２値画素データが所定のパターンにマッチングするかどうかを判別する処理を含む請求項１〜５記載の画像処理装置。
【請求項９】
第１の方向に並ぶ所定数の２値画素データを記憶アクセス単位の一まとまりのデータとして記憶手段に記憶するステップと、
上記第１の方向と直交する第２の方向に連続する所定の複数の一まとまりのデータを上記記憶手段から読み出すステップと、
読み出された複数の一まとまりのデータが構成する処理対象領域内の画素に対して画像処理を実行するステップとを有することを特徴とする画像処理方法。
【請求項１０】
第１の方向に並ぶ所定数の２値画素データを記憶アクセス単位の一まとまりのデータとして記憶手段に記憶するステップと、
上記第１の方向と直交する第２の方向に連続する所定の複数の一まとまりのデータを上記記憶手段から読み出すステップと、
読み出された複数の一まとまりのデータが構成する処理対象領域内の画素に対して画像処理を実行するステップとをコンピュータに実行させるために用いられることを特徴とする画像処理用コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理技術に関し、特に複写機・プリンター用途などの画像処理に最適なものである。
【背景技術】
【０００２】
画像処理を行う中で、メモリ（例えばバンドバッファ）からデータを取り込み、レジスタに格納して処理を行う場合、特にフィルタなどの処理を行う場合、大量のレジスタが必要になるばかりでなく、それをメモリから読み出し、中間データなどをメモリに戻す事になり、それだけで膨大なサイクル数が必要になる。例えば、１１ｘ１１のフィルタ処理の場合、１２１データを格納するレジスタが必要になる。
【０００３】
この様な膨大なレジスタは、通常のプロセッサにはなく、処理を分割しながら行わなくてはならないので、処理時間が低下する。専用ハードウェアにおいても回路規模が増大しコストアップになる。
【０００４】
なお、本発明と関連する先行技術としては以下のものがある。
【０００５】
まず、メモリの削減として、画素単位が８ビットでない場合、パッキングして８ビットにする事で、メモリにあったビット幅に整合させ、もって、無駄無く格納する方式（１０ビットの多値データを上位８ビットと下位２ビットに分け、下位２ビットを４サンプルまとめて８ビット・パッキングする構成が知られている（例えば特許文献１）。
【０００６】
また、転送効率を上げる方法として、２値化されたデータを３２ビット単位でパッキングする事で転送効率をあげ、ファームウェアの負荷を低減する方式などが提案されている（例えば特許文献２）。
【０００７】
しかしながら、これらは画像データを格納あるいは転送する際にデータパッキングを行うだけである。
【特許文献１】特開平７−１０５６３８号公報
【特許文献２】特開２００２−２１１０５１公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
この発明は、以上の事情を考慮してなされたものであり、とくに２値画素データのフィルタ処理等の画像処理を少ないハードウェアで高速に実行する画像処理技術を提供することを目的としている。
【課題を解決するための手段】
【０００９】
この発明の原理的な構成例では、画像を処理する２次元の単位（ウィンドサイズ）に依存した大きさで２値画素データパッキングする事で、ウィンド処理を高速に処理する。
【００１０】
例えば７×７の画像処理単位の場合７画素を１つにパッキングする。アクセス方向をカラム方向とすると、バンドまたはページの高さ分の中間ファイルだけで処理でき、Ｎライン全部のデータを記憶する必要がないので、メモリサイズを削減する事ができる。
【００１１】
データをパックするため、メモリからのデータの読み出し、書き込みアクセスが高速になる。
【００１２】
このように、画像処理を行う中で、画像データをパッキングした状態で処理する事で、メモリ容量の削減と高速処理を実現できる。
【００１３】
具体的には、ウィンドサイズに依存したサイズでデータパッキングを行う事で（２値化データの場合、典型的には１バイトもしくは２バイト）、メモリ容量を削減でき、さらに、１回の命令（＝１サイクル）で複数画素に相当するパッキングデータをアクセスでき、処理の高速化がはかれる。
【００１４】
画像処理で２次元データ（ウィンド処理）を扱う場合、ウィンドサイズに比例した量の画像データを一時的に確保しなくてはならない。例えば、７ｘ７のウィンド処理を行う場合、７ラインのデータを保持することになる。これを７ビット分を１バイトに入れる事で、７倍の高速化と１／７のメモリサイズで済む。
【００１５】
さらに本発明を説明する。
【００１６】
この発明によれば、上述の目的を達成するために、画像処理装置に：第１の方向に並ぶ所定数の２値画素データを記憶アクセス単位の一まとまりのデータとして記憶する記憶手段と；上記第１の方向と直交する第２の方向に連続する所定の複数の一まとまりのデータを上記記憶手段から読み出す手段と；読み出された複数の一まとまりのデータが構成する処理対象領域（ウィンドともいう）内の画素に対して画像処理を実行する手段とを設けている。
【００１７】
この構成においては、画像データをパッキングした状態で処理する事で、メモリ容量の削減と高速処理を実現できる。
【００１８】
この構成において、上記所定数は、典型的には、上記処理対象領域の上記第１の方向のサイズより小さい。この場合、上記処理対象領域の上記第１の方向のサイズと上記所定数の差分だけ上記第２の方向に連続する複数の一まとまりのデータに対し上記処理対象領域の進行方向に隣接する２値画素データを読み出し、上記第２の方向に連続する複数の一まとまりのデータと上記隣接する２値画素データとにより上記処理対象領域を形成する画素データを構成し、当該画素データに対して上記画像処理を実行する。
【００１９】
上記差分は典型的には１であるが、２以上でもよい。差分がゼロでもよい。
【００２０】
また、上記画像処理は、典型的には、上記第２の方向にずらしながら実行し、上記第２の方向にずらしながらの一連の画像処理が終了した後、上記第１の方向にずらして上記一連の画像処理を実行し、上記第２の方向にずらす度に最も古い一まとまりのデータをビットシフトさせて上記隣接する２値画素データを組みこんだ一まとまりのデータに更新して上記記憶手段に書き戻す。
【００２１】
上記画像処理は、典型的には、フィルタ処理であるが、これに限定されない。上記画像処理は上記処理対象領域中のすべての２値画素データがゼロであるかどうかを判別する処理を含んでもよい。また、上記画像処理は上記処理対象領域中の２値画素データが所定のパターンにマッチングするかどうかを判別する処理を含んでもよい。
【００２２】
なお、この発明は装置またはシステムとして実現できるのみでなく、方法としても実現可能である。また、そのような発明の一部をソフトウェアとして構成することができることはもちろんである。またそのようなソフトウェアをコンピュータに実行させるために用いるソフトウェア製品もこの発明の技術的な範囲に含まれることも当然である。
【００２３】
この発明の上述の側面および他の側面は特許請求の範囲に記載され以下実施例を用いて詳述される。
【発明の効果】
【００２４】
この発明によれば、画像データをパッキングした状態で処理する事で、メモリ容量の削減と高速処理を実現できる。
【発明を実施するための最良の形態】
【００２５】
以下、この発明の実施例について説明する。
【実施例１】
【００２６】
図１は、この発明の実施例の画像処理装置１０を全体として示すとともに、その処理手順を模式的に示している。なお、画像処理装置１０は、画像処理システム全体に対応しても良いし、その一部、例えば画像処理プロセッサに対応してもよい。前者は例えば後述する実施例３の画像処理システムであり、後者はそのＤＳＰ（デジタルシグナルプロセッサ）である。
【００２７】
以下の説明では、図２に示すようにページをバンドに分割しバンドバッファのカラム方向に画像処理（例えばフィルタ処理）を行なう。すなわち、ウィンドおよび注目画素を矢印に示すように移動させて画像処理を行う。もちろんライン方向に移動させて画像処理を行ってもよい。
【００２８】
また、以下の例では、７×７のウィンドサイズの処理を行うが、このサイズは任意のものでよい。
【００２９】
図１において、画像処理装置１０は、中間メモリ１０１、レジスタ群１０２、および処理実行部１０３を含んで構成される。画像処理装置１０は２値化データを１画素ずつ入力して１画素ずつ出力する。もちろん、この入出力のレベルでもデータパッキングを行って、例えば、８画素分または１６画素分のデータを一度に入出力しても良い。
【００３０】
中間メモリ１０１は、２値化データを６画素分パックして１バイト分のデータとして読み出し書き込みするものである。この例では、６ビットのデータ（１バイトまたは１ワード。未使用の余分なビット位置があるが、これは種々のフラグ等に用いても良いし、蒸しようのままにしてもよい）をバンドバッファの高さサイズ（Ｈ）分、格納する。中間メモリ１０１の容量はＨバイトあればよい。入力２値化データは順次にカレントラインとして示されるように入力され、入力２値化データに対応するバイト位置の６ビットのパッキングデータが解凍されて７ビットのデータに結合されてレジスタ群１０２の対応する位置のレジスタに書き込まれる。各注目画素について、７ライン分の７ビットのデータが対応するレジスタに書き込まれ、合計７×７の２値化データがレジスタ群１０２に格納される。そして、処理実行部１０３が、レジスタ群１０２から７×７の２値化データを読み出して注目画素に対する画像処理（例えばフィルタ処理）を行う。画像処理結果は画像処理装置１０から出力される。
【００３１】
１つの注目画素について７×７の画像処理が完了すると、注目画素の位置（ウィンドの位置）をカラムの下方向（処理方向）に進める。このとき、ウィンドの一番上のラインの６ビットのデータは、しばらく使用しないので、１ビットシフトさせて中間メモリ１０１に書き戻す。他方、ウィンドの下のラインの６ビットのデータを新たに中間メモリ１０１から読み出して、これにカレントラインのビットを連結して、さきの書き戻したレジスタに書き込む。
【００３２】
このようにしてバンドバッファのカラム方向に１ビットずつウィンドを移動させて画像処理を行っていく。カラム方向の処理が終了したら、ライン方向に１ビット分ずらしてカラム方向の最上部から同様な処理を行う。以上の処理をバンドバッファの各２値化データについて行ない。バンドバッファで各バンドの処理を終了すると１ページ分の処理が終了する。
【００３３】
図１に示す記号ａ〜を用いて処理フローを説明する。
【００３４】
１バンドに格納されたＨラインを、１画素ごと、縦方向に読み出し処理を行う（ａ、図２）。この時、カレントのカラムに着目すると、前に処理した６画素が１バイトにパッキングして中間メモリ１０１へ格納されている（ｂ）。最新のカレント画素Ａは、６画素パッキングされた１バイト・データとマージして７画素データを作る。これをレジスタ群１０２の対応する１レジスタに格納する（ｃ）。同様にして７レジスタで、７つのデータを格納する。１つのレジスタには７画素格納されているので、これが７つで７ｘ７の処理を行うデータがそろう。これで７ｘ７の処理を行い、結果を出力する。
【００３５】
７つのレジスタデータの内、一番古いレジスタデータは次の処理では使用しないため、中間メモリ１０１への格納する（ｅ）。ここで、このレジスタのデータをそのまま中間メモリへの格納するのではなく、この中でさらに一番古いｂｉｔデータは使用しないので、全体を１ビットシフトして、次のカレントのカラムで使用する６ビットのみに更新してから格納する（ｄ）。こうする事で、次のカレントデータとのマージを簡単に実現できる。
【実施例２】
【００３６】
つぎに実施例２について説明する。図３に示すように、実施例２は、１３×１３のウィンドを用いた例である。この例では、１２ビットを例えば１ワード（２バイト）のデータとしてパッキングして中間メモリ１０１（図１）に格納する。そしてカレントの１ビットと中間メモリ１０１の１２ビットとを連結して１３ビットのレジスタに書き込む。他の構成・動作は実施例１と同様である。この場合も、実施例１と同様にして使用済みのデータをビットシフトして中間メモリ１０１に書き戻し、つぎのカラム方向の画像処理に備える。
【実施例３】
【００３７】
つぎにこの発明を適用した具体的な画像処理システム２０について説明する。
【００３８】
図４はこの画像処理システム２０を全体として示しており、この図において、画像処理システム２０は、ホストＣＰＵ２０１、ページメモリ２０２、ＤＳＰ２０３、およびバンドバッファ２０４を含んで構成されている。ＤＳＰ２０３はプロセッサ２０３ａおよび内部バッファ（キャッシュメモリとして示している）２０３ｂを含んで構成されている。プロセッサ２０３ａは、フィルタ処理等の画像処理を行うプロセス（プログラム）を実行する。内部メモリ２０３ｂが中間データをバイト単位で読み書きするものである。
【００３９】
ページメモリ２０２のデータはバンド単位でバンドバッファ２０４に格納される。
【００４０】
この例では、図５に示すように、５×５のウィンドサイズの画像処理を行ない。注目画素Ｄ２２について処理を行うために、Ｄ００〜Ｄ３０をカレントデータＤ４０と連結し、Ｄ０１〜Ｄ３１をカレントデータＤ４１と連結し、Ｄ０２〜Ｄ３２をカレントデータＤ４２と連結し、Ｄ０３〜Ｄ３３をカレントデータＤ４３と連結し、Ｄ０４〜Ｄ３４をカレントデータＤ４４と連結してレジスタ群（内部メモリ２０３ｂに割り当てられてもよいし、内部レジスタを用いても良い）に書き込み、このレジスタ群の５×５のデータに対してプロセッサ２０３ａの画像処理プロセスが画像処理を行ない、処理結果を出力する（任意のメモリ領域に格納してバンド単位で出力する）。バンド単位の処理結果はページメモリ２０２に戻される。
【００４１】
なお、ビットシフトの態様は実施例１と同様であり、図６に示されるとおりである。
【００４２】
以上で実施例の説明を終了する。
【００４３】
なお、この発明は上述の実施例に限定されるものではなくその趣旨を逸脱しない範囲で種々変更が可能である。例えば、上述の例では、中間メモリに格納されたパッキング済みの複数画素分のデータとカレントの１画素分のデータとを連結してレジスタに格納して画像処理を行ったが、２以上の画素分のデータをカレントのデータとして利用できるようにすれば、２以上の画素分のデータを連結しても良い。この場合、パッキングの複数画素数はその分少なくなる。また、中間メモリに格納されているパッキングデータのみを利用して画像処理を行うようにしても良い。例えばパッキングデータをｎビットとしてウィンドサイズをｎ×ｎまたはそれ以下としてもよい。
【００４４】
また、画像処理としては典型的にはフィルタ処理等であるが、図７に示すように、ウィンド中の画素がオールゼロであるかどうかを判別する処理を含む処理を行うこともでき、また、図８に示すようにパターンマッチングの処理を行っても良い。
【００４５】
すなわち、図７に示すように、パッキングした各データＡ〜Ｅがすべてゼロであれば、対応するＤ００〜Ｄ３４の４×５のマスク内の画素値がすべてゼロであることがわかる。各データの論理和、論理積は一括して行えるので処理が高速である。こののち、Ｄ４０〜Ｄ４４のカレントラインをビットシフトしてパッキングしたデータＡ〜Ｅを更新する。
【００４６】
また、図８に示すようにパターンのテンプレート（パッキングデータと同じバイトまたはワードデータ）とパッキングデータとの排他的論理和をとってすべての排他的論理和がゼロとなったときにパターンの一致を検出できる。
【図面の簡単な説明】
【００４７】
【図１】この発明の実施例１の構成および動作を説明する図である。
【図２】実施例１の処理方向の例を説明する図である。
【図３】この発明の実施例２を説明する模式図である。
【図４】この発明の実施例３を説明する図である。
【図５】実施例３の動作を説明する図である。
【図６】実施例３の動作を説明する図である。
【図７】上述実施例の変形例を説明する図である。
【図８】上述実施例の他の変形例を説明する図である。
【符号の説明】
【００４８】
１０    画像処理装置
２０    画像処理システム
１０１  中間メモリ
１０２  レジスタ群
１０３  処理実行部
２０２  ページメモリ
２０３ａ        プロセッサ
２０３ｂ        内部メモリ
２０４  バンドバッファ
【図２】
2007293684.tif 000003
【図４】
2007293684.tif 000004
【図１】
2007293684.tif 000005
【図３】
2007293684.tif 000006
【図５】
2007293684.tif 000007
【図６】
2007293684.tif 000008
【図７】
2007293684.tif 000009
【図８】
2007293684.tif 000010