(57)【要約】【課題】比較的簡素な装置構成で無駄なく、極めて短時間且つ低消費電力で画像処理を行うことを可能とする画像処理装置及び画像処理方法を提供する。【解決手段】各大ブロックにおいて、各小ブロック毎、例えばＳＲＡＭ  Ａであれば小ブロックＡｉｊの画素データを保持し、各小ブロックに対する１つのアドレス指定により当該小ブロック内の複数の画素データを同時に読み出し自在に構成されてなるＳＲＡＭ  Ａ，Ｂ，Ｃ，Ｄと、複数の係数がマトリクス状に配置されてなる係数列を有し、複数の前記係数をそれぞれ対応する前記画素データに乗算して総和を求める係数列コントローラ１２及び加算部１３とを含み、ＳＲＡＭＡ，Ｂ，Ｃ，Ｄから読み出された、ある１つの大ブロックを構成する各小ブロックの各画素データに、係数列を所定の順序に並び換えて乗算する。【選択図】  図５
2004240885.tif 000002
【特許請求の範囲】
【請求項１】
二次元画像をマトリクス状の複数の画素データからなる画素データ群で構成し、画像処理を施す画像処理装置であって、
前記画素データ群を複数の前記画素データからなる小ブロックに分割し、更に複数の前記小ブロックで大ブロックを構成し、前記各大ブロック毎に前記各小ブロックを規則的に区別して配置した状態として、
前記各大ブロックにおいて、前記規則に対応した位置の前記各小ブロック毎に各々独立して前記画素データを保持し、前記各小ブロックに対する１つのアドレス指定により当該小ブロック内の複数の前記画素データを同時に読み出し自在に構成されてなる複数の記憶手段と、
複数の係数がマトリクス状に配置されてなる係数列を有し、複数の前記係数をそれぞれ対応する前記画素データに乗算して総和を求める演算手段と
を含み、
前記演算手段は、複数の前記記憶手段から読み出された、ある１つの前記大ブロックを構成する前記各小ブロックの前記各画素データに、前記係数列を所定の順序に並び換えて乗算することを特徴とする画像処理装置。
【請求項２】
前記演算手段は、所定の前記係数列を記憶する係数記憶部と、前記係数列を所定の順序に並び換え、前記画素データに対応させる係数列変換部と、前記係数の乗算された前記画素データの総和を求める加算部とを含むことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記加算部は、前記各記憶手段の近傍で前記各記憶手段毎に設けられており、前記各加算部による加算結果を各々独立に転送自在とされていることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記小ブロックがｍ１×ｍ２個の前記画素データから構成され、前記大ブロックがｌ１×ｌ２個の前記小ブロックから構成され、前記係数列がｎ１×ｎ２個の前記係数から構成されており、
ｎ１≦ｍ１（ｌ１−１）＋１
及び、
ｎ２≦ｍ２（ｌ２−１）＋１
を満たすことを特徴とする請求項１〜３のいずれか１項に記載の画像処理装置。
【請求項５】
ある１つの前記大ブロックを構成する前記各小ブロックの各アドレスを指定した際に、当該アドレスを変更することなく、前記演算手段により前記係数列を移動させ、前記係数列の前記各並び換えに対応した複数の前記総和を得ることを特徴とする請求項１〜４のいずれか１項に記載の画像処理装置。
【請求項６】
二次元画像をマトリクス状の複数の画素データからなる画素データ群で構成し、画像処理を施す画像処理方法であって、
前記画素データ群を複数の前記画素データからなる小ブロックに分割し、更に複数の前記小ブロックで大ブロックを構成し、前記各大ブロック毎に前記各小ブロックを規則的に区別して配置した状態とするとともに、複数の係数がマトリクス状に配置されてなる係数列を構成し、
前記各大ブロック内において、前記規則に対応した位置の前記各小ブロック毎に各々独立して各記憶手段に前記画素データを保持し、前記各小ブロックに対する１つのアドレス指定により当該小ブロック内の複数の前記画素データを前記記憶手段から同時に読み出せる状態としておき、
複数の前記記憶手段から読み出された、ある１つの前記大ブロックを構成する前記各小ブロックの前記各画素データに、前記係数列を所定の順序に並び換えて乗算して総和を求めることを特徴とする画像処理方法。
【請求項７】
前記小ブロックがｍ１×ｍ２個の前記画素データから構成され、前記大ブロックがｌ１×ｌ２個の前記小ブロックから構成され、前記係数列がｎ１×ｎ２個の前記係数から構成されており、
ｎ１≦ｍ１（ｌ１−１）＋１
及び、
ｎ２≦ｍ２（ｌ２−１）＋１
を満たすことを特徴とする請求項６に記載の画像処理方法。
【請求項８】
ある１つの前記大ブロックを構成する前記各小ブロックの各アドレスを指定した際に、当該アドレスを変更することなく、前記係数列を移動させ、前記係数列の前記各並び換えに対応した複数の前記総和を得ることを特徴とする請求項６又は７に記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、二次元画像に所定の処理を施して画像変換や画像検出等を行うための画像処理装置及び方法に関する。
【０００２】
【従来の技術】
従来、二次元画像を処理して画像変換や画像検出等を行うには、各画素毎に、その画素を囲む複数の画素の画素データを加工する処理を逐一実行していた。
具体的には、図９に示すように、二次元画像に対応してマトリクス状に配置された多数の画素１０１毎に、例えばこの画素１０１を囲むカーネルブロック内における８個の近傍画素１０２の画素データＸ１〜Ｘ８に係数Ａ１〜Ａ８をそれぞれ対応させて乗算し、総和をとって得られたＡ１Ｘ１＋Ａ２Ｘ２＋…＋Ａ８Ｘ８を画素１０１の処理データとする。カーネルを１画素毎に移動させてゆき、上記の一連の作業を、必要とする画素全てについて逐一実行する。
【０００３】
【発明が解決しようとする課題】
しかしながら、上述の画像処理法は、必要とする画素全てについて１画素毎に逐一演算処理することを要するために膨大な演算量となり、極めて演算負荷及び消費電力の高い処理である。即ちこの場合、１回の演算処理を行う度に必要な画素データをメモリからプロセッサに転送し、カーネル内における複数の近傍画素のデータを全てダウンロードしなければならず、しかもカーネルが二次元画像全体を走査する間に何度も同じ画素に対してアクセスが発生するという深刻な問題がある。
【０００４】
本発明は、このような問題を解決するために成されたものであり、比較的簡素な装置構成で無駄なく、極めて短時間且つ低消費電力で画像処理を行うことを可能とする画像処理装置及び画像処理方法を提供することを目的とする。
【０００５】
【課題を解決するための手段】
本発明の画像処理装置は、二次元画像をマトリクス状の複数の画素データからなる画素データ群で構成し、画像処理を施す画像処理装置であって、前記画素データ群を複数の前記画素データからなる小ブロックに分割し、更に複数の前記小ブロックで大ブロックを構成し、前記各大ブロック毎に前記各小ブロックを規則的に区別して配置した状態として、前記各大ブロックにおいて、前記規則に対応した位置の前記各小ブロック毎に各々独立して前記画素データを保持し、前記各小ブロックに対する１つのアドレス指定により当該小ブロック内の複数の前記画素データを同時に読み出し自在に構成されてなる複数の記憶手段と、複数の係数がマトリクス状に配置されてなる係数列を有し、複数の前記係数をそれぞれ対応する前記画素データに乗算して総和を求める演算手段とを含み、前記演算手段は、複数の前記記憶手段から読み出された、ある１つの前記大ブロックを構成する前記各小ブロックの前記各画素データに、前記係数列を所定の順序に並び換えて乗算する。
【０００６】
本発明の画像処理方法は、二次元画像をマトリクス状の複数の画素データからなる画素データ群で構成し、画像処理を施す画像処理方法であって、前記画素データ群を複数の前記画素データからなる小ブロックに分割し、更に複数の前記小ブロックで大ブロックを構成し、前記各大ブロック毎に前記各小ブロックを規則的に区別して配置した状態とするとともに、複数の係数がマトリクス状に配置されてなる係数列を構成し、前記各大ブロック内において、前記規則に対応した位置の前記各小ブロック毎に各々独立して各記憶手段に前記画素データを保持し、前記各小ブロックに対する１つのアドレス指定により当該小ブロック内の複数の前記画素データを前記記憶手段から同時に読み出せる状態としておき、複数の前記記憶手段から読み出された、ある１つの前記大ブロックを構成する前記各小ブロックの前記各画素データに、前記係数列を所定の順序に並び換えて乗算して総和を求める。
【０００７】
【発明の実施の形態】
以下、本発明を適用した好適な諸実施形態について図面を参照しながら詳細に説明する。
【０００８】
図１は、本実施形態による画像処理装置の概略構成を示すブロック図である。
この画像処理装置は、複数、ここでは４つの各々独立したメモリセルであるＳＲＡＭ  Ａ，Ｂ，Ｃ，Ｄと、画素データをこれらメモリセルにアクセスするためのデコーダ１１と、メモリセルから読み出された画素データに演算処理を施すための係数列コントローラ１２と、各メモリセル毎にその近傍に設けられており、各画素の演算結果を加算する加算部１３と（係数列コントローラ１２及び加算部１３を含み演算手段を構成する。）、各加算部１３の加算結果を更に加算する全体加算部１４とを備えて構成されている。
【０００９】
この画像処理装置では、図２に示すように、二次元画像をマトリクス状の複数の画素データからなる画素データ群で構成し、これら画素データを以下のように区分けする。先ず、画素データ群を複数の画素データからなる小ブロックに分割する。ここでは、例えば４×４個の画素で各小ブロックを構成する。次に、複数の小ブロック、ここでは例えば２×２個の小ブロックで大ブロックを構成する。このとき、各大ブロック毎に各小ブロックを規則的に区別して配置した状態とし、例えば各大ブロック毎に４つの小ブロックをその位置で区別してＡｉｊ，Ｂｉｊ，Ｃｉｊ，Ｄｉｊ（ｉ，ｊ＝１，２，３…）と規定する。ここで、上述したメモリセルの数は、各大ブロックを構成する小ブロックの数と同じ又はそれ以上となるようにする。
【００１０】
そして、図３に示すように、各大ブロックの小ブロックＡｉｊを全てＳＲＡＭ  Ａに、小ブロックＢｉｊを全てＳＲＡＭ  Ｂに、小ブロックＣｉｊを全てＳＲＡＭ  Ｃに、小ブロックＤｉｊを全てＳＲＡＭ  Ｄにそれぞれ記憶する。このとき、各メモリセルには、小ブロック毎に画素データ列（ここでは１６個のデータ列）が一単位として記憶されるており、各メモリセルは１つのアドレス指定により記憶された各画素データ列を同時に読み出し自在とされている。
【００１１】
なお、各メモリセル内における１つの小ブロック分の画素データは、後述する加算時にお互い足し合わせる同等のビットを近くに配置することが好ましい。これにより、加算部１３内における配線数を削減することができる。また、各メモリセルを更に分割し、グループ化することにより、読み出し速度を更に向上させることができる。また、各画素データの読み出し時には、ビットのマスクをかけることにより、画素データのビット長を変更することが可能である。
【００１２】
一方、係数列コントローラ１２は、図４に示すように、所定の係数列を記憶する係数記憶部であるカーネルレジスタ２１と、前記係数列を所定の順序に並び換え、前記画素データに対応させる係数列変換部である２Ｄシフタ２２とを備えて構成されている。
【００１３】
カーネルレジスタ２１は、二次元画像の画素データ群の一部と対応するマトリクス状の係数列を有しており、これがカーネルＣ１を構成する。係数列は所定の係数、ここでは−１，０，１の３種から構成されており、例えば図示のようなマトリクスの係数列となる。
なお、−１の乗算（減算）には２の補数を用いるが、最後に−１の個数を加算結果の適当なビット位置に加算することにより、２の補数による演算を実現する。
【００１４】
そして、例えば４×４個の画素で構成される小ブロックの２×２個からなる、ある大ブロックにおいて、当該大ブロック内の画素の画素データに係数を乗算する画像処理を行う場合、例えば図５に示すように、小ブロックＡｉｊの画素データ列をＳＲＡＭ  Ａから、小ブロックＢｉｊの画素データ列をＳＲＡＭ  Ｂから、小ブロックＣｉｊの画素データ列をＳＲＡＭ  Ｃから、小ブロックＤｉｊの画素データ列をＳＲＡＭ  Ｄからそれぞれ読み出し、カーネルＣ１を構成する係数列を乗算する。
【００１５】
この演算処理を、カーネルレジスタ２１により係数列を所定の順序に並び換えて、即ちカーネルＣ１を大ブロック内に対応させて移動させ画素毎に実行する。換言すれば、この一連の演算処理を行う間は、ＳＲＡＭ  Ａ〜Ｄのアドレスを変更することなく、ＳＲＡＭ  Ａ〜Ｄから読み出される各画素データ列（全体で当該大ブロックを構成する６４個の画素列）は不変であり、係数列が変換することになる。従って、例えば図５のようにカーネルＣ１を移動させて演算処理した場合、実質的には当該大ブロック内でカーネルＣ２を対応させて演算処理することと等価の演算結果が得られる。なおこの場合、カーネルＣ１に対応した乗算のみが必要であるため、図示の例においては、８×８マップのカーネルＣ１以外の部分を全て０とすれば良い。
【００１６】
このように、本実施形態の画像処理装置では、必要とする画素全てについて１画素毎に演算処理を施すに際して、各大ブロック内ではその画素データに一度アクセスすれば良く、この間、メモリセルのアドレスは変更せずに係数列を移動させるのみで、必要とする画素全てについての演算結果を得ることが可能となり、極めて効率の良い高速演算処理が実現する。
【００１７】
ここで、カーネルのサイズと小ブロック及び大ブロックとの最適な関係について説明する。
図６に示すように、小ブロックをｍ１×ｍ２個の画素データから構成し、大ブロックをｌ１×ｌ２個の小ブロックから構成し、カーネルＣ１の係数列をｎ１×ｎ２個の係数から構成する場合、
ｎ１≦ｍ１（ｌ１−１）＋１
及び、
ｎ２≦ｍ２（ｌ２−１）＋１
を満たすようにカーネルＣ１のサイズを決定する。図５の例では、ｍ１×ｍ２が４×４、ｌ１×ｌ２が２×２であり、カーネルＣ１をｎ１×ｎ２＝５×５以下（図示の例では５×５）となる。なお、図５のように構成することにより、カーネルを大ブロック内で移動させる際に、カーネルが大ブロック内の如何なる位置にあっても必ず各小ブロックに対応するメモリセルで同時にアクセスすることができる。
【００１８】
このようにして得られた画素データ毎の乗算結果は、メモリセル毎にその近傍に設けられた加算部１３で加算させる。このように、各加算部１３毎に演算結果を得ることにより、圧縮された途中結果のみを転送することが可能となる。一般に、画素データと係数とでは、係数の方がデータ量が少ないため、画素データをメモリセルから転送するのではなく、係数をメモリセルに転送してメモリセル近傍で演算圧縮された結果のみをメモリセルから転送することにより、全体のデータ転送量を削減することができる。
【００１９】
例えば、図５のようにカーネルＣ１を移動させて演算した場合、ＳＲＡＭ  Ａから読み出された画素データ列｛Ｘ１，Ｘ２，…，Ｘ１６｝に係数列｛Ａｉ，ｊ｝（ｉ，ｊ＝１〜５）が乗算されて、図７に示すキャリーの伝播しない高速なＣＳＡ（Ｃａｒｒｙ  Ｓａｖｅ  Ａｄｄｅｒ）２３で加算される。なお、−１の係数はビット反転により、１の係数はＡＮＤにより実現し、係数−１，０，１を転送するために３値の多値論理をデータ転送バスに使用する。
【００２０】
この演算結果は、
2004240885.tif 000003
となる。
【００２１】
そして、各加算部１３における演算結果が全体加算部１４で加算されて総和が求められ、所定の画素データに関する演算処理結果として出力される。
【００２２】
なお、本実施形態では、カーネルＣ１の係数列を図４，図５のように構成したが、これに限定されることはなく、様々な係数列が適用可能である。一例を図８に示す。ここで、（ａ）が３×３の平滑化（平均化）フィルタ、（ｂ）が５×５の平滑化（平均化）フィルタ、（ｃ）が５×５の縦方向のエッジ抽出フィルタ、（ｄ）がガウシアンフィルタであり、各図でカーネルの左側に処理結果を示す。（ｄ）において、ガウシアンフィルタに必要な係数は他のフィルタに比べて複雑であるため、図示のように３つの単純なカーネルの組み合わせにより実現された。
【００２３】
【発明の効果】
本発明によれば、比較的簡素な装置構成で無駄なく、極めて短時間且つ低消費電力で画像処理を行うことを可能とする画像処理装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【図１】本実施形態による画像処理装置の概略構成を示すブロック図である。
【図２】本実施形態による画像処理装置の画素データ群を示す模式図である。
【図３】各メモリセルに小ブロックの画素データを収める様子を示す模式図である。
【図４】係数列コントローラを詳細に説明するための模式図である。
【図５】各画素データに係数列を乗算する様子を詳細に説明するための模式図である。
【図６】カーネルのサイズと小ブロック及び大ブロックとの最適な関係について説明するための模式図である。
【図７】加算部の構成を詳細に説明するための模式図である。
【図８】カーネルの構成を詳細に説明するための模式図である。
【図９】従来の画像処理法を説明するための模式図である。
【符号の説明】
Ａ，Ｂ，Ｃ，Ｄ  ＳＲＡＭ
１１  デコーダ
１２  係数列コントローラ
１３  加算部
１４  全体加算部
２１  カーネルレジスタ
２２  ２Ｄシフタ
２３  ＣＳＡ
【図１】
2004240885.tif 000004
【図２】
2004240885.tif 000005
【図３】
2004240885.tif 000006
【図４】
2004240885.tif 000007
【図５】
2004240885.tif 000008
【図６】
2004240885.tif 000009
【図７】
2004240885.tif 000010
【図８】
2004240885.tif 000011
【図９】
2004240885.tif 000012