(57)【要約】【課題】広帯域のメモリを使用しなくとも、演算器への画素データの供給を効率よく行えるようにする。【解決手段】フィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行う画像処理装置にて、画像メモリから読み出された複数の画素データを記憶し所定の規則に従って演算器に並列に出力するシフトレジスタと、フィルターの係数と複数の画素データとを用いた演算を並列に行う複数の演算器と、複数の演算器によって並列に演算が行われる画素列が並ぶ方向を選択する並列演算画素方向選択部とを有し、フィルター演算処理に用いるフィルターの形状に応じて、複数の演算器間で共有される画素データを多くするような方向を選択し、画像メモリから読み出す画素データの数を減少させ、演算器への画素データの供給を効率よく行うことができるようにする。【選択図】図１
2010015257.tif 000002
【特許請求の範囲】
【請求項１】
係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行う画像処理装置であって、
前記画像メモリから読み出された前記画像データにおける複数の画素データを一時的に記憶するとともに、記憶している前記複数の画素データを所定の規則に従って並列に出力する記憶手段と、
前記フィルターの係数と、前記記憶手段から出力される前記複数の画素データとを用いた演算を並列に行う複数の演算手段と、
前記フィルターの水平方向サイズ及び垂直方向サイズに基づいて、前記複数の演算手段によって並列に演算が行われる画素列が並ぶ並列演算画素方向を選択する選択手段とを有することを特徴とする画像処理装置。
【請求項２】
前記フィルターの係数が記憶されている係数メモリと、
前記選択手段により選択された前記並列演算画素方向に従った前記画像メモリからの前記複数の画素データの読み出しを制御する画像メモリ読み出し制御手段と、
前記選択手段により選択された前記並列演算画素方向に従った前記係数メモリからの前記フィルターの係数の読み出しを制御する係数メモリ読み出し制御手段とを有することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記選択手段は、前記並列演算画素方向として前記フィルターの長辺方向を選択することを特徴とする請求項１又は２記載の画像処理装置。
【請求項４】
前記選択手段が前記並列演算画素方向として前記フィルターの水平方向を選択した場合には、前記画像メモリを水平スキャンする順序で前記画像メモリから画素データを順次読み出して前記記憶手段に記憶させ、
前記選択手段が前記並列演算画素方向として前記フィルターの垂直方向を選択した場合には、前記画像メモリを垂直スキャンする順序で前記画像メモリから画素データを順次読み出して前記記憶手段に記憶させ、
前記選択手段での選択にかかわらず、前記複数の演算手段に対して前記フィルターの長辺方向から係数を入力していくことを特徴とする請求項１〜３の何れか１項に記載の画像処理装置。
【請求項５】
係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行い、かつ前記フィルターを順次更新して前記画像データに対するフィルター演算処理を繰り返し行う画像処理装置であって、
前記画像メモリから読み出された前記画像データにおける複数の画素データを一時的に記憶するとともに、記憶している前記複数の画素データを所定の規則に従って並列に出力する記憶手段と、
前記フィルターの係数と、前記記憶手段から出力される前記複数の画素データとを用いた演算を並列に行う複数の演算手段と、
前記複数の演算手段により得られる複数の演算結果を前記画像メモリに書き込む画像メモリ書き込み制御手段と、
処理中のフィルター演算処理で用いられている第１のフィルターの長辺方向、及び次に行われるフィルター演算処理で用いる第２のフィルターの長辺方向とに基づいて、前記画像メモリ書き込み制御手段が前記複数の演算結果を前記画像メモリに書き込んでいく書き込み方向を選択する選択手段とを有することを特徴とする画像処理装置。
【請求項６】
前記フィルターの係数を記憶する係数メモリと、
前記選択手段により選択された前記書き込み方向に従って前記係数メモリに前記第２のフィルターの係数を書き込む係数メモリ書き込み制御手段とを有することを特徴とする請求項５記載の画像処理装置。
【請求項７】
前記選択手段は、
前記第１のフィルターの長辺方向と前記第２のフィルターの長辺方向とが一致する場合には、前記記憶手段に記憶させる前記複数の画素データを前記画像メモリから読み出す際に前記画像メモリをスキャンする方向と同じ方向を前記書き込み方向として選択し、
前記第１のフィルターの長辺方向と前記第２のフィルターの長辺方向とが異なる場合には、前記記憶手段に記憶させる前記複数の画素データを前記画像メモリから読み出す際に前記画像メモリをスキャンする方向と異なる方向を前記書き込み方向として選択することを特徴とする請求項５又は６記載の画像処理装置。
【請求項８】
前記選択手段での選択にかかわらず、前記画像メモリの一定方向から画素データを順次読み出して前記記憶手段に記憶させ、
前記選択手段での選択にかかわらず、前記複数の演算手段に対して前記フィルターの長辺方向から係数を入力していくことを特徴とする請求項５〜７の何れか１項に記載の画像処理装置。
【請求項９】
前記記憶手段は、一方向に順次シフトさせながら保持している画素データを前記演算手段に供給するシフトレジスタであることを特徴とする請求項１〜８の何れか１項に記載の画像処理装置。
【請求項１０】
係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行う画像処理方法であって、
前記画像メモリから前記画像データにおける複数の画素データを読み出して記憶手段に記憶させる読み出し工程と、
前記記憶手段に記憶されている前記複数の画素データを所定の規則に従って並列に出力する出力工程と、
前記フィルターの係数と、前記出力工程にて出力される前記複数の画素データとを用いた演算を並列に行う演算工程と、
前記フィルターの水平方向サイズ及び垂直方向サイズに基づいて、前記演算工程にて並列に演算が行われる画素列が並ぶ並列演算画素方向を選択する選択工程とを有し、
前記読み出し工程では、前記選択工程にて選択された前記並列演算画素方向に従い前記画像メモリから前記画素データを順次読み出すことを特徴とする画像処理方法。
【請求項１１】
係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行い、かつ前記フィルターを順次更新して前記画像データに対するフィルター演算処理を繰り返し行う画像処理方法であって、
前記画像メモリから前記画像データにおける複数の画素データを読み出して記憶手段に記憶させる読み出し工程と、
前記記憶手段に記憶されている前記複数の画素データを所定の規則に従って並列に出力する出力工程と、
前記フィルターの係数と、前記出力工程にて出力される前記複数の画素データとを用いた演算を並列に行う演算工程と、
処理中のフィルター演算処理で用いられている第１のフィルターの長辺方向、及び次に行われるフィルター演算処理で用いる第２のフィルターの長辺方向とに基づいて、前記演算工程にて得られる複数の演算結果を前記画像メモリに書き込んでいく書き込み方向を選択する選択工程と、
前記選択工程にて選択された書き込み方向で前記複数の演算結果を前記画像メモリに書き込む書き込み工程とを有することを特徴とする画像処理方法。
【請求項１２】
係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行う画像処理をコンピュータに実行させるためのプログラムであって、
前記画像メモリから前記画像データにおける複数の画素データを読み出して記憶手段に記憶させる読み出しステップと、
前記記憶手段に記憶されている前記複数の画素データを所定の規則に従って並列に出力する出力ステップと、
前記フィルターの係数と、前記出力ステップにて出力される前記複数の画素データとを用いた演算を並列に行う演算ステップと、
前記フィルターの水平方向サイズ及び垂直方向サイズに基づいて、前記演算ステップにて並列に演算が行われる画素列が並ぶ並列演算画素方向を選択する選択ステップとをコンピュータに実行させ、
前記読み出しステップでは、前記選択ステップにて選択された前記並列演算画素方向に従い前記画像メモリから前記画素データを順次読み出すことを特徴とするプログラム。
【請求項１３】
係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行い、かつ前記フィルターを順次更新して前記画像データに対するフィルター演算処理を繰り返し行う画像処理をコンピュータに実行させるためのプログラムであって、
前記画像メモリから前記画像データにおける複数の画素データを読み出して記憶手段に記憶させる読み出しステップと、
前記記憶手段に記憶されている前記複数の画素データを所定の規則に従って並列に出力する出力ステップと、
前記フィルターの係数と、前記出力ステップにて出力される前記複数の画素データとを用いた演算を並列に行う演算ステップと、
処理中のフィルター演算処理で用いられている第１のフィルターの長辺方向、及び次に行われるフィルター演算処理で用いる第２のフィルターの長辺方向とに基づいて、前記演算ステップにて得られる複数の演算結果を前記画像メモリに書き込んでいく書き込み方向を選択する選択ステップと、
前記選択ステップにて選択された書き込み方向で前記複数の演算結果を前記画像メモリに書き込む書き込みステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及びプログラムに関し、２次元データに対してフィルター演算処理を行う画像処理技術に関する。
【背景技術】
【０００２】
従来から画像処理分野では、画素配列が２次元になっていることから、２次元のフィルター処理のような２次元のデータ演算が頻繁に用いられる。このような２次元のデータ演算処理に関して、演算処理の高速化や演算対象画像の画素データの効率的な使用を達成しようとする方法が提案されている。例えば、下記特許文献１や下記特許文献２には、積和演算器に代表されるような演算器を複数用意し、演算器に供給される演算対象画像の画素データを複数の演算器間で共有して並列処理させる方法が提案されている。
【０００３】
例えば、特許文献２に記載の半導体集積回路では、図８に示されるように構成された演算装置を用いている。図８は、画像データに対して３×３の２次元フィルターの演算を行う演算装置を示している。図８に示す演算装置では、出力画像の１ライン分のフィルター演算処理を並列に行うことが可能となっている。図８に示す演算装置は、シリアルアクセスメモリＳＡＭ１、２次元メモリアレイＭＡＲ、センスアンプＳＡ、並列転送回路ＴＲＣ、データメモリＤＭ、及び演算回路群ＰＥ１、ＰＥ２、…、ＰＥｎより構成されている。
【０００４】
シリアルアクセスメモリＳＡＭ１は、入力される画素データＦｘｙを１ライン分蓄えて、並列に２次元メモリアレイＭＡＲに書き込むためのものである。２次元メモリアレイＭＡＲは、２次元配列された複数のメモリセルを有し、シリアルアクセスメモリＳＡＭ１から出力された画素データ（画素値）を３ライン分記憶する。センスアンプＳＡは、２次元メモリアレイＭＡＲから１ライン分の画素値を並列に読み出してラッチし、並列転送回路ＴＲＣは、読み出された画素値を並列に演算回路群ＰＥ１、ＰＥ２、…、ＰＥｎに転送する。データメモリＤＭは、フィルター係数を記憶するメモリである。演算回路群ＰＥ１、ＰＥ２、…、ＰＥｎは、並列転送回路ＴＲＣより転送される画素値及びデータメモリＤＭから供給されるフィルター係数を用いた積和演算を並列に行う。
【０００５】
以下、図８に示した演算装置の動作を、図９を参照して説明する。図９には、画像フレームの画素と演算装置内のメモリセルの内容との対応、及び並列転送回路ＴＲＣの制御方法を示している。
【０００６】
まず、各画素値がＰビットのデータよりなる入力画像が、順番にシリアルアクセスメモリＳＡＭ１に入力される。入力画像の第１行の画素値Ｆ１１、Ｆ１２、…、Ｆ１ｋが、シリアルアクセスメモリＳＡＭ１に蓄えられると、それらが１ライン分の画素値として並列に２次元メモリアレイＭＡＲのワード線Ｗ１に書き込まれる。続いて、同じように入力画像の第２行、第３行の画素値が、シリアルアクセスメモリＳＡＭ１に蓄えられる度に、それぞれが１ライン分の画素値として２次元メモリアレイＭＡＲのワード線Ｗ２、Ｗ３に書き込まれる。
【０００７】
このようにして、出力画像の１ライン分の画素値を計算するのに必要な３ライン分の画素値が２次元メモリアレイＭＡＲに書き込まれる。このときの入力画像のフレームと２次元メモリアレイＭＡＲのワード線上のデータとの対応は、図６（Ａ）に示したようになっている。
【０００８】
そして、図８に示した演算装置では、次のライン（入力画像の第４行）の画素値がシリアルアクセスメモリＳＡＭ１に書き込まれている間に、出力画像の第２行の画素値Ｒ２１、Ｒ２２、…、Ｒ２ｋが並列に計算される。このとき、並列転送回路ＴＲＣの制御は、図６（Ｂ）に示してあるように９回の演算サイクルで実行される。
【０００９】
まず、第１サイクルでは、２次元メモリアレイＭＡＲのワード線Ｗ１に記憶した１ライン分の画素値が読み出され、データ線群ＤＧを通じてセンスアンプＳＡにラッチされる。ここで、並列転送回路ＴＲＣを構成するセレクタＳＥＬのスイッチＬ、Ｃ、Ｒのうち、スイッチＬがオンにされる。これにより、並列転送回路ＴＲＣを通じて、画素値Ｆ１１が演算回路ＰＥ１に、画素値Ｆ１２が演算回路ＰＥ２に、…、画素値Ｆ１（ｋ−２）が演算回路ＰＥｎに転送される。同時に、データメモリＤＭより重み係数Ｃ００が読み出されて、演算回路群ＰＥ１、ＰＥ２、…、ＰＥｎにて、入力された画素値と重み係数Ｃ００の乗算が各々行われる。
【００１０】
続いて、第２サイクルでは、セレクタＳＥＬ内のスイッチＣがオンにされ、並列転送回路ＴＲＣを通じて、画素値Ｆ１２が演算回路ＰＥ１に、画素値Ｆ１３が演算回路ＰＥ２に、…、画素値Ｆ１（ｋ−１）が演算回路ＰＥｎに入力される。同時に、データメモリＤＭより重み係数Ｃ０１が読み出されて、演算回路群ＰＥ１、ＰＥ２、…、ＰＥｎにて、入力された画素値と重み係数Ｃ０１の乗算が各々行われ、その演算結果が第１サイクルにおいて計算された値に積算される。
【００１１】
同様にして、第３サイクルでは、セレクタＳＥＬ内のスイッチＲがオンにされ、並列転送回路ＴＲＣを通じて、画素値Ｆ１３が演算回路ＰＥ１に、画素値Ｆ１４が演算回路ＰＥ２に、…、画素値Ｆ１ｋが演算回路ＰＥｎに入力される。また、データメモリＤＭより重み係数Ｃ０２が読み出されて、演算回路群ＰＥ１、ＰＥ２、…、ＰＥｎにて、入力された画素値と重み係数Ｃ０２の乗算が各々行われ、その演算結果が先に計算された値に積算される。
【００１２】
こうして、２次元メモリアレイＭＡＲのワード線Ｗ１に記憶された画素値を使用した演算を行った後、第４サイクルでは、２次元メモリアレイＭＡＲのワード線Ｗ２が選択される。これにより、２次元メモリアレイＭＡＲのワード線Ｗ２に記憶した１ライン分の画素値が読み出され、センスアンプＳＡにラッチされる。
【００１３】
この第４サイクルでは、セレクタＳＥＬ内のスイッチＬがオンにされ、並列転送回路ＴＲＣを通じて、画素値Ｆ２１が演算回路ＰＥ１に、画素値Ｆ２２が演算回路ＰＥ２に、…、画素値Ｆ２（ｋ−２）が演算回路ＰＥｎに転送される。そして、演算回路群ＰＥ１、ＰＥ２、…、ＰＥｎにて、入力された画素値とデータメモリＤＭより読み出された重み係数Ｃ１０との乗算が各々行われ、その演算結果が先に計算された値に積算される。
【００１４】
続いて、第５サイクルでは、セレクタＳＥＬ内のスイッチＣがオンにされ、並列転送回路ＴＲＣを通じて、画素値Ｆ２２が演算回路ＰＥ１に、画素値Ｆ２３が演算回路ＰＥ２に、…、画素値Ｆ２（ｋ−１）が演算回路ＰＥｎに入力される。そして、演算回路群ＰＥ１、ＰＥ２、…、ＰＥｎにて、入力された画素値とデータメモリＤＭより読み出された重み係数Ｃ１１との乗算が各々行われ、その演算結果が先に計算された値に積算される。
【００１５】
同様にして、第６サイクルでは、セレクタＳＥＬ内のスイッチＲがオンにされ、並列転送回路ＴＲＣを通じて、画素値Ｆ２３が演算回路ＰＥ１に、画素値Ｆ２４が演算回路ＰＥ２に、…、画素値Ｆ２ｋが演算回路ＰＥｎに入力される。そして、演算回路群ＰＥ１、ＰＥ２、…、ＰＥｎにて、入力された画素値とデータメモリＤＭより読み出された重み係数Ｃ１２との乗算が各々行われ、その演算結果が先に計算された値に積算される。
【００１６】
こうして、２次元メモリアレイＭＡＲのワード線Ｗ２に記憶された画素値を使用した演算を行った後、さらに、第７サイクルから第９サイクルで、同様な計算を２次元メモリアレイＭＡＲのワード線Ｗ３に記憶された画素値を使用して行う。これにより、演算回路ＰＥ１、ＰＥ２、…、ＰＥｎにて、出力画像の第２行の画素値Ｒ２１、Ｒ２２、…、Ｒ２ｋが求まる。これをシリアルアクセスメモリＳＡＭ２に並列に転送して、順に出力する。なお、端の画素については、必要な入力画素がないので図示したようにそのまま転送すればよい。
【００１７】
出力画像の次の１ライン分の演算を行うには、同様の動作を繰り返せばよい。すなわち、シリアルアクセスメモリＳＡＭ１に入力画像の新たな１ライン分の画素値が蓄えられたら、その１ライン分の画素値を２次元メモリアレイＭＡＲにて最も古くデータを書き替えたワード線に転送する。そして、入力画像の次の１ライン分の画素値がシリアルアクセスメモリＳＡＭ１に書き込まれている間に、出力画像の１ライン分の画素値について演算を行う。これを繰り返すことにより、図６（Ｃ）に示したような出力画像を得ることが可能となる。
【００１８】
このようにして、出力画像の同一ライン上の複数画像に関する２次元フィルター処理を並列に行うことができる。また、特許文献１に記載の画像処理装置では、特許文献２における並列転送回路ＴＲＣの代わりにパラレルロードシフトレジスタを用いて、同様の並列処理が実現されている。
【００１９】
【特許文献１】特開２００４−１３８７３号公報
【特許文献２】特許第３２５１４２１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
しかしながら、特許文献１及び特許文献２に記載の技術では、演算対象画像の画素データ（画素値）を複数の演算器間で共有するために記憶しておくメモリとして、帯域が広いメモリの使用を前提としている。例えば、特許文献１では複数の読み出しポートを有するメモリが用いられ、特許文献２では２次元メモリアレイが用いられている。このような広帯域のメモリを使用して画像処理装置を構成すると、効率よく処理が行える半面、高価になるという問題がある。
【００２１】
一方、この問題を回避するために、上述した例に示したような広帯域のメモリを用いない場合には、演算対象画像を格納している画像メモリから演算器への画素データの供給がボトルネックとなり、演算処理の高速化が阻害されるという問題点がある。
【００２２】
本発明は、このような事情に鑑みてなされたものであり、帯域が広いメモリを使用しなくとも、演算器への画素データの供給を効率よく行えるようにすることを目的とする。
【課題を解決するための手段】
【００２３】
本発明に係る画像処理装置は、係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行う画像処理装置であって、前記画像メモリから読み出された前記画像データにおける複数の画素データを一時的に記憶するとともに、記憶している前記複数の画素データを所定の規則に従って並列に出力する記憶手段と、前記フィルターの係数と、前記記憶手段から出力される前記複数の画素データとを用いた演算を並列に行う複数の演算手段と、前記フィルターの水平方向サイズ及び垂直方向サイズに基づいて、前記複数の演算手段によって並列に演算が行われる画素列が並ぶ並列演算画素方向を選択する選択手段とを有することを特徴とする。
本発明に係る画像処理装置は、係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行い、かつ前記フィルターを順次更新して前記画像データに対するフィルター演算処理を繰り返し行う画像処理装置であって、前記画像メモリから読み出された前記画像データにおける複数の画素データを一時的に記憶するとともに、記憶している前記複数の画素データを所定の規則に従って並列に出力する記憶手段と、前記フィルターの係数と、前記記憶手段から出力される前記複数の画素データとを用いた演算を並列に行う複数の演算手段と、前記複数の演算手段により得られる複数の演算結果を前記画像メモリに書き込む画像メモリ書き込み制御手段と、処理中のフィルター演算処理で用いられている第１のフィルターの長辺方向、及び次に行われるフィルター演算処理で用いる第２のフィルターの長辺方向とに基づいて、前記画像メモリ書き込み制御手段が前記複数の演算結果を前記画像メモリに書き込んでいく書き込み方向を選択する選択手段とを有することを特徴とする。
本発明に係る画像処理方法は、係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行う画像処理方法であって、前記画像メモリから前記画像データにおける複数の画素データを読み出して記憶手段に記憶させる読み出し工程と、前記記憶手段に記憶されている前記複数の画素データを所定の規則に従って並列に出力する出力工程と、前記フィルターの係数と、前記出力工程にて出力される前記複数の画素データとを用いた演算を並列に行う演算工程と、前記フィルターの水平方向サイズ及び垂直方向サイズに基づいて、前記演算工程にて並列に演算が行われる画素列が並ぶ並列演算画素方向を選択する選択工程とを有し、前記読み出し工程では、前記選択工程にて選択された前記並列演算画素方向に従い前記画像メモリから前記画素データを順次読み出すことを特徴とする。
本発明に係る画像処理方法は、係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行い、かつ前記フィルターを順次更新して前記画像データに対するフィルター演算処理を繰り返し行う画像処理方法であって、前記画像メモリから前記画像データにおける複数の画素データを読み出して記憶手段に記憶させる読み出し工程と、前記記憶手段に記憶されている前記複数の画素データを所定の規則に従って並列に出力する出力工程と、前記フィルターの係数と、前記出力工程にて出力される前記複数の画素データとを用いた演算を並列に行う演算工程と、処理中のフィルター演算処理で用いられている第１のフィルターの長辺方向、及び次に行われるフィルター演算処理で用いる第２のフィルターの長辺方向とに基づいて、前記演算工程にて得られる複数の演算結果を前記画像メモリに書き込んでいく書き込み方向を選択する選択工程と、前記選択工程にて選択された書き込み方向で前記複数の演算結果を前記画像メモリに書き込む書き込み工程とを有することを特徴とする。
本発明に係るプログラムは、係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行う画像処理をコンピュータに実行させるためのプログラムであって、前記画像メモリから前記画像データにおける複数の画素データを読み出して記憶手段に記憶させる読み出しステップと、前記記憶手段に記憶されている前記複数の画素データを所定の規則に従って並列に出力する出力ステップと、前記フィルターの係数と、前記出力ステップにて出力される前記複数の画素データとを用いた演算を並列に行う演算ステップと、前記フィルターの水平方向サイズ及び垂直方向サイズに基づいて、前記演算ステップにて並列に演算が行われる画素列が並ぶ並列演算画素方向を選択する選択ステップとをコンピュータに実行させ、前記読み出しステップでは、前記選択ステップにて選択された前記並列演算画素方向に従い前記画像メモリから前記画素データを順次読み出すことを特徴とする。
本発明に係るプログラムは、係数が２次元配列されたフィルターを走査させて、画像メモリに記憶されている画像データに対するフィルター演算処理を行い、かつ前記フィルターを順次更新して前記画像データに対するフィルター演算処理を繰り返し行う画像処理をコンピュータに実行させるためのプログラムであって、前記画像メモリから前記画像データにおける複数の画素データを読み出して記憶手段に記憶させる読み出しステップと、前記記憶手段に記憶されている前記複数の画素データを所定の規則に従って並列に出力する出力ステップと、前記フィルターの係数と、前記出力ステップにて出力される前記複数の画素データとを用いた演算を並列に行う演算ステップと、処理中のフィルター演算処理で用いられている第１のフィルターの長辺方向、及び次に行われるフィルター演算処理で用いる第２のフィルターの長辺方向とに基づいて、前記演算ステップにて得られる複数の演算結果を前記画像メモリに書き込んでいく書き込み方向を選択する選択ステップと、前記選択ステップにて選択された書き込み方向で前記複数の演算結果を前記画像メモリに書き込む書き込みステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００２４】
本発明によれば、フィルター演算処理に用いるフィルターの形状に応じて、画像メモリからの画素データの読み出し方向、又は画像メモリへの演算結果の書き込み方向を選択する。これにより、広帯域のメモリを用いることなく、演算手段への画素データの供給を効率よく行うことができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施形態を図面に基づいて説明する。
【００２６】
（第１の実施形態）
本発明の第１の実施形態について説明する。
第１の実施形態に係る画像処理装置は、画像メモリに格納された入力画像（演算対象画像）に対してフィルターカーネルを走査させてフィルター演算処理を行い、演算出力画像を得る。
【００２７】
図１は、第１の実施形態に係る画像処理装置の構成例を示すブロック図である。図１に示す画像処理装置は、積和演算器を４個用いることにより、演算出力画像の４画素分を並列に得られるような構成になっている。
【００２８】
図１に示すように、第１の実施形態に係る画像処理装置は、シフトレジスタ１００、画像メモリ１０１、積和演算器１１０〜１１３、及びフィルター係数メモリ１２０を有する。また、第１の実施形態に係る画像処理装置は、並列演算画素方向選択部１３０、フィルター係数メモリ読み出し制御部１４０、及び画像メモリ読み出し制御部１５０を有する。
【００２９】
記憶手段であるシフトレジスタ１００は、パラレル出力可能なシフトレジスタである。シフトレジスタ１００は、画像メモリ１０１から読み出された画像データにおける複数の画素データＤｘｙを一時的に記憶する。そして、シフトレジスタ１００は、記憶している複数の画素データＤｘｙを所定の規則に従って積和演算器１１０〜１１３に並列に出力する。具体的には、シフトレジスタ１００は、入力される画素データＤｘｙを並列演算画素数分（本実施形態では４画素分）保持するとともに、一方向に順次シフトさせながら保持している画素データＤｘｙを積和演算器１１０〜１１３にパラレル出力する。
【００３０】
したがって、シフトレジスタ１００のビット幅（シフトレジスタ１００を構成するレジスタＳＲ０〜ＳＲ３のビット幅）は、少なくとも演算対象画像（入力画像）の画素データＤｘｙのビット幅と同じビット幅を有する。
画像メモリ１０１は、演算対象画像の画像データを記憶しているメモリである。演算対象画像の画像データは、複数の画素データで構成される。
【００３１】
演算手段である積和演算器１１０〜１１３は、シフトレジスタ１００のレジスタＳＲ０〜ＳＲ３に蓄積された画素データとフィルターの係数とを用いた演算、詳細には画素データと係数とを乗算し乗算結果を累積加算する処理を並列に行う。積和演算器１１０は、乗算器１６０、加算器１７０、及びレジスタ１８０を有し、積和演算器１１１は、乗算器１６１、加算器１７１、及びレジスタ１８１を有する。同様に、積和演算器１１２は、乗算器１６２、加算器１７２、及びレジスタ１８２を有し、積和演算器１１３は、乗算器１６３、加算器１７３、及びレジスタ１８３を有する。
【００３２】
乗算器１６０〜１６３はそれぞれ、シフトレジスタ１００のレジスタＳＲ０〜ＳＲ３より出力された画素データと、フィルター係数メモリ１２０より出力されたフィルター係数とを掛け合わせ、その結果を出力する。加算器１７０〜１７３はそれぞれ、乗算器１６０〜１６３からの出力とレジスタ１８０〜１８３に蓄積しているデータとを加算する。レジスタ１８０〜１８３はそれぞれ、加算器１７０〜１７３からの出力データを蓄積する。
【００３３】
フィルター係数メモリ１２０は、フィルターの係数（フィルターカーネルとして定義された、２次元配列された係数で構成されたあるサイズのフィルターに対応する係数行列）を記憶する。フィルター係数メモリ１２０からは記憶しているフィルターの係数が順次出力される。
【００３４】
並列演算画素方向選択部１３０は、フィルターカーネルの水平方向サイズ及び垂直方向サイズに基づいて、積和演算器１１０〜１１３において並列に演算が行われる画素列が並ぶ方向（この方向を並列演算画素方向と呼ぶ。）を選択する。さらに、並列演算画素方向選択部１３０は、選択した結果に基づいて、次に示すようにフィルター係数メモリ読み出し制御部１４０及び画像メモリ読み出し制御部１５０に対して、それぞれのメモリからデータを読み出す方向を指示する。
【００３５】
並列演算画素方向選択部１３０は、フィルターカーネルの水平方向サイズと垂直方向サイズとを比較する。その結果、
（１）水平方向サイズが垂直方向サイズより大きい場合には、並列演算画素方向として水平方向を選択する。そして、並列演算画素方向選択部１３０は、フィルター係数メモリ読み出し制御部１４０及び画像メモリ読み出し制御部１５０に対して、それぞれのメモリからデータを読み出す方向として選択した方向（水平方向）を指示する。
（２）垂直方向サイズが水平方向サイズより大きい場合には、並列演算画素方向として垂直方向を選択する。そして、並列演算画素方向選択部１３０は、フィルター係数メモリ読み出し制御部１４０及び画像メモリ読み出し制御部１５０に対して、それぞれのメモリからデータを読み出す方向として選択した方向（垂直方向）を指示する。
（３）垂直方向サイズと水平方向サイズとが等しい場合には、並列演算画素方向として水平方向或いは垂直方向の任意の１方向を選択する。そして、並列演算画素方向選択部１３０は、フィルター係数メモリ読み出し制御部１４０及び画像メモリ読み出し制御部１５０に対して、それぞれのメモリからデータを読み出す方向として選択した方向（水平方向或いは垂直方向の任意の１方向）を指示する。
【００３６】
フィルター係数メモリ読み出し制御部１４０は、並列演算画素方向選択部１３０の指示に従って、積和演算器１１０〜１１３に入力されるフィルター係数を、次のようにフィルター係数メモリ１２０から読み出す。すなわち、フィルター係数メモリ読み出し制御部１４０は、フィルター係数メモリ１２０からのフィルター係数の読み出しを、並列演算画素方向選択部１３０で選択された並列演算画素方向に従い次のように制御する。
（１）並列演算画素方向選択部１３０から水平方向が指示された場合には、フィルター係数メモリ１２０を水平スキャンする順序で係数を順次読み出す。
（２）並列演算画素方向選択部１３０から垂直方向が指示された場合には、フィルター係数メモリ１２０を垂直スキャンする順序で係数を順次読み出す。
【００３７】
画像メモリ読み出し制御部１５０は、並列演算画素方向選択部１３０の指示に従って、シフトレジスタ１００に記憶させる演算対象画像の画素データを、次のように画像メモリ１０１から読み出す。すなわち、画像メモリ読み出し制御部１５０は、画像メモリ１０１からの画素データの読み出しを、並列演算画素方向選択部１３０で選択された並列演算画素方向に従い次のように制御する。
（１）並列演算画素方向選択部１３０から水平方向が指示された場合には、画像メモリ１０１を水平スキャンする順序で画素データを順次読み出す。
（２）並列演算画素方向選択部１３０から垂直方向が指示された場合には、画像メモリ１０１を垂直スキャンする順序で画素データを順次読み出す。
【００３８】
次に、図２に示すようなフィルターカーネルＡを用いた場合の第１の実施形態における画像処理装置の動作手順について説明する。図２において、（Ａ）は入力画像（演算対象画像）の一例を示しており、（Ｂ）はフィルターカーネルの一例を示しており、（Ｃ）は演算出力画像の一例を示している。また、図３は、フィルターカーネルＡを用いた場合の第１の実施形態における画像処理装置の動作例を示すタイムチャートであり、図３において点線間はクロック周期を示している。
【００３９】
図２（Ｂ）に示すフィルターカーネルＡは、水平方向サイズが５であり、垂直方向サイズが３である。したがって、並列演算画素方向選択部１３０は、並列演算画素方向として、フィルターカーネルの長辺方向である水平方向を選択する。
【００４０】
そして、並列演算画素方向選択部１３０は、フィルター係数メモリ読み出し制御部１４０に対してフィルター係数メモリ１２０から係数を読み出す方向として水平方向を指示する。また、並列演算画素方向選択部１３０は、画像メモリ読み出し制御部１５０に対して、画像メモリ１０１から画素データを読み出す方向として水平方向を指示する。
【００４１】
画像メモリ読み出し制御部１５０は、並列演算画素方向選択部１３０の指示（水平方向）に従って、画像メモリ１０１を水平スキャンする順序で画像メモリ１０１から画素データを順次読み出す。すなわち、画素データＤ００、Ｄ１０、Ｄ２０、Ｄ３０の順で画素データが読み出され、シフトレジスタ１００に入力され記憶される。このときシフトレジスタ１００のレジスタＳＲ０には画素データＤ００、レジスタＳＲ１には画素データＤ１０、レジスタＳＲ２には画素データＤ２０、レジスタＳＲ３には画素データＤ３０がそれぞれ格納されようとしている（図３の時刻ｔ３）。
【００４２】
この状態において、フィルター係数メモリ読み出し制御部１４０は、並列演算画素方向選択部１３０の指示（水平方向）に従って、フィルター係数メモリ１２０から水平スキャンする順序で係数を順次読み出す。読み出された係数は、積和演算器１１０〜１１３に入力される。すなわち、係数Ｗ００、Ｗ１０、Ｗ２０、Ｗ３０、Ｗ４０の順でフィルター係数が読み出され、積和演算器１１０〜１１３に入力される。また、同時に、画像メモリ読み出し制御部１５０は、引き続いて画素データＤ４０、Ｄ５０、Ｄ６０、Ｄ７０の順で画素データを読み出し、シフトレジスタ１００に入力する。
【００４３】
積和演算器１１０〜１１３は、順次入力されるシフトレジスタ１００のレジスタＳＲ０〜ＳＲ３から出力された画素データとフィルター係数メモリ１２０から読み出された係数との乗算を行い、乗算結果を累積加算する。
【００４４】
ここで、フィルター係数メモリ読み出し制御部１４０がフィルター係数メモリ１２０から係数を読み出していないとき（図３におけるフィルター係数メモリの出力としてＸが示されているとき）、積和演算器１１０〜１１３内の乗算器１６０〜１６３は動作しない。あるいは、フィルター係数メモリの出力として０を出力するようにフィルター係数メモリ読み出し制御部１４０によって制御するようにしてもよい。
【００４５】
さらに、引き続き同様にして、画像メモリ読み出し制御部１５０は、画素データＤ０１、Ｄ１１、Ｄ２１、Ｄ３１、Ｄ４１、Ｄ５１、Ｄ６１、Ｄ７１の順で画像メモリ１０１から画素データを読み出し、シフトレジスタ１００に入力する。それと共に、フィルター係数メモリ読み出し制御部１４０は、係数Ｗ０１、Ｗ１１、Ｗ２１、Ｗ３１、Ｗ４１の順でフィルター係数メモリ１２０から係数を読み出し、積和演算器１１０〜１１３に入力する。
【００４６】
さらに、引き続き同様にして、画像メモリ読み出し制御部１５０は、画素データＤ０２、Ｄ１２、Ｄ２２、Ｄ３２、Ｄ４２、Ｄ５２、Ｄ６２、Ｄ７２の順で画像メモリ１０１から画素データを読み出し、シフトレジスタ１００に入力する。それと共に、フィルター係数メモリ読み出し制御部１４０は、係数Ｗ０２、Ｗ１２、Ｗ２２、Ｗ３２、Ｗ４２の順でフィルター係数メモリ１２０から係数を読み出し、積和演算器１１０〜１１３に入力する。
【００４７】
このようにすることで図３に示す時刻ｔ２４の１クロック後（積和演算器１１０〜１１３内にレジスタ１８０〜１８３があるため１クロック後となる）に、下記式（１）に示す演算出力画像の画素Ｒ２１、Ｒ３１、Ｒ４１、Ｒ５１が出力される。具体的には、積和演算器１１０から演算出力画像の画素Ｒ２１が、積和演算器１１１から演算出力画像の画素Ｒ３１が、積和演算器１１２から演算出力画像の画素Ｒ４１が、積和演算器１１３から演算出力画像の画素Ｒ５１が、並列にフィルター演算され出力される。
【００４８】
【数１】
2010015257.tif 000003
【００４９】
したがって、第１の実施形態における画像処理装置において、図２（Ｂ）に示したフィルターカーネルＡを用いた場合には、演算対象画像から２４画素の画素データを読み出せば、フィルター演算処理された演算出力画素を４画素分得られることになる。
【００５０】
次に、本実施形態における画像処理の有効性を示すために、図４に示すようなフィルターカーネルＢを用いた場合のフィルター演算処理に関して、第１の実施形態を適用した場合と、そうでない場合とを比較し説明する。図４において、（Ａ）は入力画像（演算対象画像）の一例を示しており、（Ｂ）はフィルターカーネルの一例を示しており、（Ｃ）は演算出力画像の一例を示している。図４（Ｂ）に示すフィルターカーネルＢを用いる場合には、フィルター係数メモリ１２０にはフィルターカーネルＢが格納されている。
【００５１】
図４（Ｂ）に示すフィルターカーネルＢは、水平方向サイズが３であり、垂直方向サイズが５である。したがって、並列演算画素方向選択部１３０は、並列演算画素方向として、フィルターカーネルＢの長辺方向である垂直方向を選択する。そして、並列演算画素方向選択部１３０は、フィルター係数メモリ読み出し制御部１４０及び画像メモリ読み出し制御部１５０に対して、それぞれのメモリからデータを読み出す方向として垂直方向を指示する。
【００５２】
画像メモリ読み出し制御部１５０は、並列演算画素方向選択部１３０の指示（垂直方向）に従って、画像メモリ１０１を垂直スキャンする順序で画像メモリ１０１から画素データを順次読み出す。つまり、図２及び図３を参照して説明した例とは水平／垂直の方向は変わるが、同様の処理を行う。すなわち、画素データＤ００、Ｄ０１、Ｄ０２、Ｄ０３、Ｄ０４、Ｄ０５、Ｄ０６、Ｄ０７の順で画素データが読み出され、シフトレジスタ１００に入力され記憶される。それと共に、フィルター係数メモリ読み出し制御部１４０は、並列演算画素方向選択部１３０の指示（垂直方向）に従って、フィルター係数メモリ１２０を垂直スキャンする順序で係数を順次読み出す。すなわち、係数Ｕ００、Ｕ０１、Ｕ０２、Ｕ０３、Ｕ０４の順でフィルター係数が読み出され、積和演算器１１０〜１１３に入力される。
【００５３】
そして、積和演算器１１０〜１１３は、順次入力されるシフトレジスタ１００のレジスタＳＲ０〜ＳＲ３から出力された画素データとフィルター係数メモリ１２０から読み出された係数との乗算を行い乗算結果を累積加算する。
【００５４】
さらに、引き続き同様にして、画像メモリ読み出し制御部１５０は、画素データＤ１０、Ｄ１１、Ｄ１２、Ｄ１３、Ｄ１４、Ｄ１５、Ｄ１６、Ｄ１７の順で画像メモリ１０１から画素データを読み出し、シフトレジスタ１００に入力する。それと共に、フィルター係数メモリ読み出し制御部１４０は、係数Ｕ１０、Ｕ１１、Ｕ１２、Ｕ１３、Ｕ１４の順でフィルター係数メモリ１２０から係数を読み出し、積和演算器１１０〜１１３に入力する。
【００５５】
さらに、引き続き同様にして、画像メモリ読み出し制御部１５０は、画素データＤ２０、Ｄ２１、Ｄ２２、Ｄ２３、Ｄ２４、Ｄ２５、Ｄ２６、Ｄ２７の順で画像メモリ１０１から画素データを読み出し、シフトレジスタ１００に入力する。それと共に、フィルター係数メモリ読み出し制御部１４０は、係数Ｕ２０、Ｕ２１、Ｕ２２、Ｕ２３、Ｕ２４の順でフィルター係数メモリ１２０から係数を読み出し、積和演算器１１０〜１１３に入力する。
【００５６】
このようにすることにより、積和演算器１１０〜１１３から下記式（２）に示す演算出力画像の画素Ｒ１２、Ｒ１３、Ｒ１４、Ｒ１５が出力される。積和演算器１１０から演算出力画像の画素Ｒ１２が、積和演算器１１１から演算出力画像の画素Ｒ１３が、積和演算器１１２から演算出力画像の画素Ｒ１４が、積和演算器１１３から演算出力画像の画素Ｒ１５が、並列にフィルター演算され出力される。
【００５７】
【数２】
2010015257.tif 000004
【００５８】
したがって、第１の実施形態を適用すると、図４（Ｂ）に示したフィルターカーネルＢを用いる場合も、演算対象画像から２４画素の画素データを読み出せば、フィルター演算処理された演算出力画素を４画素分得られる。
【００５９】
比較のために、図４（Ｂ）に示したフィルターカーネルＢを用いた場合のフィルター演算処理に関して、並列演算画素方向として水平方向とした場合に必要となる演算対象画像の画素データ数について示す。この場合、フィルター演算処理された演算出力画素を４画素分（Ｒ１２、Ｒ２２、Ｒ３２、Ｒ４２）得るためには、演算対象画像の画素データとして、Ｄ００〜Ｄ５０、Ｄ０１〜Ｄ５１、Ｄ０２〜Ｄ５２、Ｄ０３〜Ｄ５３、Ｄ０４〜Ｄ５４の３０画素必要となる。
【００６０】
以上説明したように、並列演算画素方向選択部１３０が、フィルターカーネルの形状に応じて、積和演算器１１０〜１１３において並列に演算が行われる画素列が並ぶ方向を選択することにより効率よくフィルター演算処理を行うことが可能である。
【００６１】
つまり、並列に演算される画素数をＰ、フィルターカーネルの水平方向サイズをＨ、フィルターカーネルの垂直方向サイズをＶとすると、演算出力画素をＰ画素分得るのに必要となる演算対象画素数は、次のようになる。
並列演算画素方向が水平の場合  …  （Ｐ＋Ｈ−１）×Ｖ
並列演算画素方向が垂直の場合  …  （Ｐ＋Ｖ−１）×Ｈ
【００６２】
ここで、（Ｐ＋Ｈ−１）×Ｖの値と（Ｐ＋Ｖ−１）×Ｈの値との大小関係は、ＨとＶの大小関係によって決定される。本実施形態では、フィルター演算処理に先立って、ＨとＶの大小関係を判定することで、（Ｐ＋Ｈ−１）×Ｖの値及び（Ｐ＋Ｖ−１）×Ｈの値のどちらがより小さいかを判定し、小さい方の並列演算画素方向を選択する。これにより、演算出力画素をＰ画素分得るのに必要となる演算対象画素数が、常に小さくなるような並列演算画素方向が選択される。したがって、演算対象画素の画素データを画像メモリ１０１から読み出すのに必要な時間が短縮され、効率よく演算が行える。
【００６３】
第１の実施形態によれば、並列演算画素方向選択部１３０が、フィルターカーネルとして定義された係数が２次元配列されたフィルターの形状に応じて、複数の積和演算器間で共有される画素データを多くするような方向を並列演算画素方向として選択する。具体的には、並列演算画素方向選択部１３０が、フィルターカーネルの水平方向サイズと垂直方向サイズとを比較して、フィルターカーネルの長辺方向を並列演算画素方向として選択する。これにより、複数の積和演算器間で共有される画素データを増加させ、画像メモリから読み出す画素データの数を減少させることができ、帯域が広いメモリを使用しなくとも、積和演算器への画素データの供給を効率よく行うことができる。
【００６４】
例えば、水平方向サイズが５であり、垂直方向サイズが３であるフィルターカーネルを用いてフィルター演算処理を行う場合には、演算出力画像の１画素分の演算を行うのに演算対象画像の画素データは１５画素分必要となる。したがって、シリアルにフィルター演算を行うことによって演算出力画像を１画素ずつ求める場合には、演算出力画像の１画素分を求めるのに必要な演算対象画像の画素データは常に１５画素となる。
【００６５】
一方、演算出力画像における隣接する複数の画素を並列に演算する場合には、並列に行われる演算の間で共有できる画素データがあるため、演算出力画像の１画素あたりに必要な演算対象画像の画素データを減少させることができる。
【００６６】
例えば、水平方向に２画素並列に演算する場合、水平方向４画素、垂直方向３画素分が共有できる。したがって、必要な演算対象画像の画素データは１５×２−４×３＝１８画素となり、演算出力画像の１画素あたりを求めるのに必要な演算対象画像の画素データ数は減少する。
ところが同じ並列演算でも、垂直方向に２画素並列に演算する場合には、水平方向５画素、垂直方向２画素分が共有となり、必要な演算対象画像の画素データは１５×２−５×２＝２０画素となってしまう。この場合、シリアルに演算するよりは、演算出力画像の１画素あたりを求めるのに必要な演算対象画像の画素データは減少しているが、水平方向に２画素並列に演算する場合に比べると増加している。
【００６７】
本実施形態では、並列演算画素方向選択部１３０が、フィルターカーネルの形状に応じて、並列演算画素方向として、積和演算器間で共有される画素データを多くする方向、つまり画像メモリから読み出す画素データの数が少ない方向を選択する。これにより、効率のよい積和演算器への画素データの供給を実現している。
【００６８】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
第２の実施形態に係る画像処理装置は、フィルターカーネルを順次更新して、階層的にフィルター演算処理を繰り返し行う。すなわち、画像メモリに記憶されている画像データに対してフィルターカーネルを走査させてフィルター演算処理（第一階層）を行う。さらに、そのフィルター演算処理により得られた結果（中間出力画像と呼ぶ）に対してフィルターカーネルを更新して再度フィルター演算処理を行う（第二階層以降）というようにフィルター演算処理を繰り返し行う。
【００６９】
上述した第１の実施形態では、複数の演算器間で共有される画素データを多くする（画像メモリから読み出す画素データ数を少なくする）ために、フィルターカーネルの形状に応じてメモリからのデータの読み出しを水平方向又は垂直方向で行うか選択していた。
【００７０】
第２の実施形態では、画像メモリから画素データを読み出す方向及びフィルター係数メモリから係数を読み出す方向を選択するのではなく、積和演算器で得られた結果を画像メモリに書き込む際に水平方向に書き込むか垂直方向に書き込むかを選択する。また、同様に、フィルター係数をフィルター係数メモリに書き込む際に水平方向に書き込むか垂直方向に書き込むかを選択する。
【００７１】
これにより、フィルター演算処理の実行に係る画像メモリからの画素データの読み出し、及びフィルター係数メモリからの係数の読み出しを、常に一定方向（水平方向又は垂直方向）で行うことが可能となり、制御が簡素化される。
【００７２】
以下に説明する第２の実施形態では、フィルター演算処理を行うために画像メモリから画素データを読み出す方向、及びフィルター係数メモリから係数を読み出す方向として、常に水平方向とした場合の例について示す。また、第２の実施形態における画像処理装置は、積和演算器を４個用いることにより、演算出力画像の４画素分を並列に得られるような構成になっている。
【００７３】
図５は、第２の実施形態に係る画像処理装置の構成例を示すブロック図である。図５において、図１に示したブロック等と同一の機能を有するブロック等には同一の符号を付し、重複する説明は省略する。
【００７４】
図５に示すように、第２の実施形態に係る画像処理装置は、シフトレジスタ１００、画像メモリ７０１、積和演算器１１０〜１１３、フィルター係数メモリ１２０、及び演算対象画像書き込み方向選択部７３０を有する。また、第２の実施形態に係る画像処理装置は、フィルター係数メモリ読み出し制御部７４０、画像メモリ読み出し制御部７５０、フィルター係数メモリ書き込み制御部７６０、画像メモリ書き込み制御部７７０、シフトレジスタ７００、及びセレクタ７０２を有する。
【００７５】
シフトレジスタ７００は、パラレル入力可能なシフトレジスタであり、積和演算器１１０〜１１３によって演算された結果を保持する。保持された演算結果は、順次画像メモリ７０１に書き込まれる。したがって、シフトレジスタ７００のビット幅（シフトレジスタ７００を構成するレジスタＰＲ０〜ＰＲ３のビット幅）は、少なくとも演算結果画像（演算出力画像）の画素データＲｘｙのビット幅と同じビット幅を有する。
【００７６】
画像メモリ７０１は、演算対象画像の画像データを記憶するメモリである。第２の実施形態において、画像メモリ７０１に記憶される演算対象画像の画像データには、外部から入力される入力画像及び積和演算器１１０〜１１３での演算結果として得られる画像データが含まれる。
セレクタ７０２は、入力画像又は演算結果（演算出力画像又は中間出力画像）を画像メモリ７０１に書き込むデータとして選択する。
【００７７】
演算対象画像書き込み方向選択部７３０は、現在の処理中のフィルター演算処理で用いられているフィルターカーネルの長辺方向と、次に行われるフィルター演算処理で用いるフィルターカーネルの長辺方向とに基づいて、演算対象画像の書き込み方向を選択する。すなわち、演算対象画像書き込み方向選択部７３０は、２つのフィルターカーネルの長辺方向に基づいて、積和演算器１１０〜１１３で得られる演算結果を画像メモリ７０１に書き込んでいく方向（この方向を演算対象画像書き込み方向と呼ぶ。）を選択する。なお、演算結果を書き込む画像メモリは、演算対象画像の画像データが記憶されている画像メモリと同一のメモリであってもよいし、異なるメモリであってもよい。
【００７８】
ここで、現在の処理中のフィルター演算処理で用いられているフィルターカーネルは、第１のフィルターに相当し、以下では、このフィルターカーネルを現階層フィルターカーネルと呼ぶ。また、次に行われるフィルター演算処理で用いるフィルターカーネルは、第２のフィルターに相当し、以下、このフィルターカーネルを次階層フィルターカーネルと呼ぶ。
【００７９】
ただし、階層演算の最初である入力画像を画像メモリ７０１に書き込む時には、演算対象画像書き込み方向選択部７３０は、現階層フィルターカーネルとして水平方向が長辺のフィルターを仮定して、演算対象画像書き込み方向を選択する。これは、本実施形態では、フィルター演算処理を行うために画像メモリ７０１から画素データを読み出す方向、及びフィルター係数メモリ１２０から係数を読み出す方向として、常に水平方向としているためである。
【００８０】
さらに、演算対象画像書き込み方向選択部７３０は、選択した結果に基づいて、次に示すようにフィルター係数メモリ書き込み制御部７６０及び画像メモリ書き込み制御部７７０に対して、それぞれのメモリにデータを書き込んでいく方向を指示する。
【００８１】
演算対象画像書き込み方向選択部７３０は、次階層フィルターカーネルの水平方向サイズと垂直方向サイズとを比較するとともに、現階層フィルターカーネルの長辺方向と次階層フィルターカーネルの長辺方向とを比較する。その結果、
（１）現階層フィルターカーネルの長辺方向と次階層フィルターカーネルの長辺方向とが一致する場合には、演算対象画像書き込み方向として水平方向を選択する。そして、演算対象画像書き込み方向選択部７３０は、フィルター係数メモリ書き込み制御部７６０及び画像メモリ書き込み制御部７７０に対して、それぞれのメモリにデータを書き込んでいく方向として選択した方向（水平方向）を指示する。
（２）現階層フィルターカーネルの長辺方向と次階層フィルターカーネルの長辺方向とが異なる場合には、演算対象画像書き込み方向として垂直方向を選択する。そして、演算対象画像書き込み方向選択部７３０は、フィルター係数メモリ書き込み制御部７６０及び画像メモリ書き込み制御部７７０に対して、それぞれのメモリにデータを書き込んでいく方向として選択した方向（垂直方向）を指示する。
（３）次階層フィルターカーネルの水平方向サイズと垂直方向サイズとが等しい場合には、演算対象画像書き込み方向として水平方向或いは垂直方向の任意の１方向を選択する。そして、演算対象画像書き込み方向選択部７３０は、フィルター係数メモリ書き込み制御部７６０及び画像メモリ書き込み制御部７７０に、それぞれのメモリにデータを書き込んでいく方向として選択した方向（水平方向又は垂直方向の任意の１方向）を指示する。さらに、ここで選択した方向を、次階層においては、現階層フィルターカーネルの長辺方向とする。
【００８２】
フィルター係数メモリ読み出し制御部７４０は、積和演算器１１０〜１１３に入力されるフィルター係数を、フィルター係数メモリ１２０から水平スキャンする順序で読み出す。ここで、フィルター係数メモリ１２０から水平スキャンする順序でフィルター係数を読み出したとしても、フィルターカーネルとしては、必ずしも水平スキャンの順序でフィルター係数が読み出される訳ではない点に注意されたい。つまり、フィルター係数メモリ１２０におけるフィルターカーネルの格納状態によっては、フィルターカーネル自体の水平方向と、フィルター係数メモリ読み出し制御部７４０がフィルター係数メモリ１２０を水平スキャンするときの方向とは必ずしも一致しない。
【００８３】
画像メモリ読み出し制御部７５０は、シフトレジスタ１００に記憶させる演算対象画像の画素データを、画像メモリ７０１を水平スキャンする順序で読み出す。ここでも、同様に、画像メモリ７０１から水平スキャンする順序で画素データを読み出したとしても、演算対象画像としては、必ずしも水平スキャンの順序で画素データが読み出される訳ではない点に注意されたい。つまり、画像メモリ７０１における演算対象画像の格納状態によっては、演算対象画像自体の水平方向と、画像メモリ読み出し制御部７５０が画像メモリ７０１を水平スキャンするときの方向とは必ずしも一致しない。
【００８４】
フィルター係数メモリ書き込み制御部７６０は、演算対象画像書き込み方向選択部７３０の指示に従って、次のようにフィルター係数メモリ１２０にフィルター係数を書き込む。
（１）演算対象画像書き込み方向選択部７３０から水平方向が指示された場合には、フィルター係数メモリ読み出し制御部７４０が係数を読み出す時の水平スキャン方向とフィルターカーネル自体の水平方向とが一致するように係数を書き込む。
（２）演算対象画像書き込み方向選択部７３０から垂直方向が指示された場合には、フィルター係数メモリ読み出し制御部７４０が係数を読み出す時の水平スキャン方向とフィルターカーネル自体の垂直方向とが一致するように係数を書き込む。
【００８５】
画像メモリ書き込み制御部７７０は、演算対象画像書き込み方向選択部７３０の指示に従って、次のように画像メモリ７０１に演算対象画像（入力画像又は中間出力画像）を書き込む。
（１）演算対象画像書き込み方向選択部７３０から水平方向が指示された場合には、画像メモリ７０１に対し水平スキャンする順序で演算対象画像の画素データを書き込む。この場合、演算対象画像の水平方向と、画像メモリ読み出し制御部７５０が画素データを読み出すときの水平スキャン方向とが一致する。
（２）演算対象画像書き込み方向選択部７３０から垂直方向が指示された場合には、画像メモリ７０１に対し垂直スキャンする順序で演算対象画像の画素データを書き込む。この場合、演算対象画像の垂直方向と、画像メモリ読み出し制御部７５０が画素データを読み出すときの水平スキャン方向とが一致する。
【００８６】
次に、図６に示すようなフィルターカーネルＡ、Ｂを階層的に用いた場合の第２の実施形態における画像処理装置の動作について説明する。図６において、（Ａ）は入力画像の一例を示しており、（Ｂ）はフィルターカーネルＡの一例を示しており、（Ｃ）は中間出力画像の一例を示しており、（Ｄ）はフィルターカーネルＢの一例を示しており、（Ｅ）は演算出力画像の一例を示している。
【００８７】
以下、入力画像の画素データＤｘｙに対して第一階層のフィルター演算を行い、中間出力画像の画素データＭｘｙを得る。さらにその中間出力画像の画素データＭｘｙに対して第二階層のフィルター演算を行い、演算出力画像の画素データＲｘｙを得る、という処理について説明する。第一階層のフィルター演算はフィルターカーネルＡを用いて行い、第二階層のフィルター演算はフィルターカーネルＢを用いて行う。
【００８８】
まず、入力画像の画素データＤｘｙを画像メモリ７０１に書き込む際に、演算対象画像書き込み方向選択部７３０は、現階層フィルターカーネルの長辺方向と次階層フィルターカーネルの長辺方向とを比較する。ここで、入力画像に対しては、現階層フィルターカーネルの長辺方向は上述したように水平方向としているので、次階層フィルターカーネルの長辺方向（水平方向）と一致する。したがって、演算対象画像書き込み方向選択部７３０は、演算対象画像書き込み方向として水平方向を選択する。
【００８９】
演算対象画像書き込み方向選択部７３０は、フィルター係数メモリ書き込み制御部７６０に対してフィルター係数メモリ１２０に係数を書き込んでいく方向として水平方向を指示する。また、演算対象画像書き込み方向選択部７３０は、画像メモリ書き込み制御部７７０に対して、画像メモリ７０１に画素データを書き込んでいく方向として水平方向を指示する。このときセレクタ７０２は入力画像を選択する。
【００９０】
画像メモリ書き込み制御部７７０は、演算対象画像書き込み方向選択部７３０の指示（水平方向）に従って、画像メモリ読み出し制御部７５０が読み出す時の水平スキャン方向と入力画像の水平方向とが一致するように画素データを画像メモリ７０１に書き込む。つまり、入力画像の画素データが、画像メモリ読み出し制御部７５０の水平スキャン方向での読み出しによって、Ｄ００、Ｄ１０、Ｄ２０、Ｄ３０、Ｄ４０、…、Ｄ０１、Ｄ１１、…、Ｄ０２、Ｄ１２、…と読み出されるように画像メモリ７０１に格納される。すなわち、入力画像の画素データは、図７（Ａ）に示すように画像メモリ７０１に格納される。
【００９１】
フィルター係数書き込み制御部７６０は、演算対象画像書き込み方向選択部７３０の指示（水平方向）に従って、フィルターカーネルＡの係数をフィルター係数メモリ１２０に書き込む。このとき、フィルター係数メモリ読み出し制御部７４０が読み出す時の水平スキャン方向とフィルターカーネルの水平方向とが一致するようにフィルターカーネルＡの係数をフィルター係数メモリ１２０に書き込む。つまり、フィルターカーネルＡの係数が、フィルター係数メモリ読み出し制御部７４０によって、Ｗ００、Ｗ１０、Ｗ２０、Ｗ３０、Ｗ４０、Ｗ０１、…、Ｗ４１、Ｗ０２、…、Ｗ４２と読み出されるようにフィルター係数メモリ１２０に格納される。すなわち、フィルターカーネルＡの係数は、図７（Ｂ）に示すようにフィルター係数メモリ１２０に格納される。
【００９２】
このように画像メモリ７０１に入力画像の画素データを格納し、フィルター係数メモリ１２０にフィルターカーネルＡの係数を格納した状態において、まず、第一階層のフィルター演算処理が開始される。なお、第一階層のフィルター演算処理は、第１の実施形態において図２及び図３を参照して説明した動作と同様である。
【００９３】
すなわち、第一階層のフィルター演算処理では、画像メモリ読み出し制御部７５０は、画像メモリ７０１を水平スキャンする順序で画像メモリ７０１から画素データを順次読み出す。つまり、画素データＤ００、Ｄ１０、Ｄ２０、Ｄ３０の順で画素データが読み出され、シフトレジスタ１００に入力され記憶される。このときシフトレジスタ１００のレジスタＳＲ０には画素データＤ００、レジスタＳＲ１には画素データＤ１０、レジスタＳＲ２には画素データＤ２０、レジスタＳＲ３には画素データＤ３０が格納されようとしている（図３のｔ３）。
【００９４】
この状態において、フィルター係数メモリ読み出し制御部７４０は、フィルター係数メモリ１２０を水平スキャンする順序でフィルター係数メモリ１２０から係数を順次読み出す。読み出された係数は、積和演算器１１０〜１１３に入力される。すなわち、係数Ｗ００、Ｗ１０、Ｗ２０、Ｗ３０、Ｗ４０の順でフィルター係数が読み出され、積和演算器１１０〜１１３に入力される。また、同時に、画像メモリ読み出し制御部７５０は、引き続いて画素データＤ４０、Ｄ５０、Ｄ６０、Ｄ７０の順で画素データを読み出し、シフトレジスタ１００に入力する。
【００９５】
積和演算器１１０〜１１３は、順次入力されるシフトレジスタ１００のレジスタＳＲ０〜ＳＲ３から出力された画素データとフィルター係数メモリ１２０から読み出された係数との乗算を行い乗算結果を累積加算する。
【００９６】
ここで、フィルター係数メモリ読み出し制御部７４０がフィルター係数メモリ１２０から係数を読み出していないとき（図３におけるフィルター係数メモリの出力としてＸが示されているとき）、積和演算器１１０〜１１３内の乗算器１６０〜１６３は動作しない。あるいは、フィルター係数メモリの出力として０を出力するようにフィルター係数メモリ読み出し制御部７４０によって制御するようにしてもよい。
【００９７】
さらに、引き続き同様にして、画像メモリ読み出し制御部７５０は、画素データＤ０１、Ｄ１１、Ｄ２１、Ｄ３１、Ｄ４１、Ｄ５１、Ｄ６１、Ｄ７１の順で画像メモリ７０１から画素データを読み出し、シフトレジスタ１００に入力する。それと共に、フィルター係数メモリ読み出し制御部７４０は、係数Ｗ０１、Ｗ１１、Ｗ２１、Ｗ３１、Ｗ４１の順でフィルター係数メモリ１２０から係数を読み出し、積和演算器１１０〜１１３に入力する。
【００９８】
さらに、引き続き同様にして、画像メモリ読み出し制御部７５０は、画素データＤ０２、Ｄ１２、Ｄ２２、Ｄ３２、Ｄ４２、Ｄ５２、Ｄ６２、Ｄ７２の順で画像メモリ７０１から画素データを読み出し、シフトレジスタ１００に入力する。それと共に、フィルター係数メモリ読み出し制御部７４０は、係数Ｗ０２、Ｗ１２、Ｗ２２、Ｗ３２、Ｗ４２の順でフィルター係数メモリ１２０から係数を読み出し、積和演算器１１０〜１１３に入力する。
【００９９】
このようにすることで図３に示す時刻ｔ２４の１クロック後に、下記式（３）に示す中間出力画像の画素Ｍ２１、Ｍ３１、Ｍ４１、Ｍ５１が出力される。具体的には、積和演算器１１０から中間出力画像の画素Ｍ２１が、積和演算器１１１から中間出力画像の画素Ｍ３１が、積和演算器１１２から中間出力画像の画素Ｍ４１が、積和演算器１１３から中間出力画像の画素Ｍ５１が、並列にフィルター演算され出力される。
【０１００】
【数３】
2010015257.tif 000005
【０１０１】
このタイミング、すなわち図３に示す時刻ｔ２４の１クロック後において、中間出力画像の画素データＭ２１、Ｍ２２、Ｍ２３、Ｍ２４をシフトレジスタ７００にパラレル入力する。これにより、中間出力画像の画素データＭ２１、Ｍ２２、Ｍ２３、Ｍ２４がそれぞれシフトレジスタ７００内のレジスタＰＲ０、ＰＲ１、ＰＲ２、ＰＲ３に格納される。
【０１０２】
続いて、第一階層のフィルター演算処理で得られた演算中間結果（中間出力画像の画素データ）を画像メモリ７０１に書き込む。その際に、演算対象画像書き込み方向選択部７３０は、現階層フィルターカーネルの長辺方向と次階層フィルターカーネルの長辺方向とを比較する。ここで、次の階層（第二階層）で行われるフィルター演算処理に用いるフィルターカーネルはフィルターカーネルＢであり、その長辺方向は垂直方向であるので、現階層フィルターカーネルの長辺方向と次階層フィルターカーネルの長辺方向とは異なる。
【０１０３】
したがって、演算対象画像書き込み方向選択部７３０は、演算対象画像書き込み方向として垂直方向を選択する。そして、演算対象画像書き込み方向選択部７３０は、フィルター係数メモリ書き込み制御部７６０及び画像メモリ書き込み制御部７７０に対して、それぞれのメモリにデータを書き込んでいく方向として垂直方向を指示する。このときセレクタ７０２は演算結果（シフトレジスタ７００の出力）を選択する。
【０１０４】
画像メモリ書き込み制御部７７０は、演算対象画像書き込み方向選択部７３０の指示（垂直方向）に従って、画像メモリ読み出し制御部７５０が読み出す時の水平スキャン方向と中間出力画像の垂直方向とが一致するように画素データを書き込む。つまり、中間出力画像（演算対象画像）の画素データが、画像メモリ読み出し制御部７５０の水平スキャン方向の読み出しにより、Ｍ００、Ｍ０１、Ｍ０２、Ｍ０３、Ｍ０４、…、Ｍ１０、Ｍ１１、…、と読み出されるように画像メモリ７０１に格納される。すなわち、中間出力画像（演算対象画像）の画素データは、図７（Ｃ）に示すように画像メモリ７０１に格納される。
【０１０５】
なお、中間出力画像のうち、Ｍ００、Ｍ１０等の画像端の領域は、フィルター演算結果としては出力されない。このような端の領域の画素データをどのように扱うかは、本実施形態と関係ないが、例えば０でパディングしてもよい。
【０１０６】
第一階層のフィルター演算処理が終了すると、フィルター係数書き込み制御部７６０は、演算対象画像書き込み方向選択部７３０の指示（垂直方向）に従って、フィルターカーネルＢの係数をフィルター係数メモリ１２０に書き込む。このとき、フィルター係数メモリ読み出し制御部７４０が読み出す時の水平スキャン方向とフィルターカーネルの垂直方向とが一致するようにフィルターカーネルＢの係数をフィルター係数メモリ１２０に書き込む。つまり、フィルターカーネルＢの係数が、フィルター係数メモリ読み出し制御部７４０によって、Ｕ００、Ｕ０１、Ｕ０２、Ｕ０３、Ｕ０４、Ｕ１０、…、Ｕ１４、Ｕ２０、…、Ｕ２４と読み出されるようにフィルター係数メモリ１２０に格納される。すなわち、フィルターカーネルＢの係数は、図７（Ｄ）に示すようにフィルター係数メモリ１２０に格納される。
【０１０７】
このように画像メモリ７０１に中間出力画像の画素データを格納し、フィルター係数メモリ１２０にフィルターカーネルＢの係数を格納した状態において、第二階層のフィルター演算処理が開始される。
【０１０８】
第二階層のフィルター演算処理では、画像メモリ読み出し制御部７５０は、画像メモリ７０１を水平スキャンする順序で画像メモリ７０１から画素データを順次読み出す。ここで、第一階層のフィルター演算処理で得られた中間出力画像（第二階層の演算対象画像）の書き込み時に、画像メモリ７０１の水平方向と中間出力画像の垂直方向とが一致するように画素データを書き込んでいる。したがって、画像メモリ読み出し制御部７５０は、画素データＭ００、Ｍ０１、Ｍ０２、Ｍ０３、Ｍ０４、Ｍ０５、Ｍ０６、Ｍ０７の順で画像メモリ７０１から画素データを読み出し、シフトレジスタ１００に入力する。それと共に、フィルター係数メモリ読み出し制御部１４０は、フィルター係数メモリ１２０を水平スキャンする順序でフィルター係数メモリ１２０から係数を順次読み出す。つまり、係数Ｕ００、Ｕ０１、Ｕ０２、Ｕ０３、Ｕ０４の順でフィルター係数が読み出され、積和演算器１１０〜１１３に入力される。
【０１０９】
積和演算器１１０〜１１３は、順次入力されるシフトレジスタ１００のレジスタＳＲ０〜ＳＲ３から出力された画素データとフィルター係数メモリ１２０から読み出された係数との乗算を行い乗算結果を累積加算する。
【０１１０】
さらに、引き続き同様にして、画像メモリ読み出し制御部７５０は、画素データＭ１０、Ｍ１１、Ｍ１２、Ｍ１３、Ｍ１４、Ｍ１５、Ｍ１６、Ｍ１７の順で画像メモリ７０１から画素データを読み出し、シフトレジスタ１００に入力する。それと共に、フィルター係数メモリ読み出し制御部７４０は、係数Ｕ１０、Ｕ１１、Ｕ１２、Ｕ１３、Ｕ１４の順でフィルター係数メモリ１２０から係数を読み出し、積和演算器１１０〜１１３に入力する。
【０１１１】
さらに、引き続き同様にして、画像メモリ読み出し制御部７５０は、画素データＭ２０、Ｍ２１、Ｍ２２、Ｍ２３、Ｍ２４、Ｍ２５、Ｍ２６、Ｍ２７の順で画像メモリ７０１から画素データを読み出し、シフトレジスタ１００に入力する。それと共に、フィルター係数メモリ読み出し制御部７４０は、係数Ｕ２０、Ｕ２１、Ｕ２２、Ｕ２３、Ｕ２４の順でフィルター係数メモリ１２０から係数を読み出し、積和演算器１１０〜１１３に入力する。
【０１１２】
このようにすることで、積和演算器１１０〜１１３から、下記式（４）に示す中間出力画像の画素Ｒ１２、Ｒ１３、Ｒ１４、Ｒ１５が出力される。積和演算器１１０から中間出力画像の画素Ｒ１２が、積和演算器１１１から中間出力画像の画素Ｒ１３が、積和演算器１１２から中間出力画像の画素Ｒ１４が、積和演算器１１３から中間出力画像の画素Ｒ１５が、並列にフィルター演算され出力される。
【０１１３】
【数４】
2010015257.tif 000006
【０１１４】
以上、第２の実施形態によれば、演算対象画像書き込み方向選択部７３０が、次階層のフィルターカーネルの形状を参照して、現階層のフィルター演算処理で得られた演算結果を画像メモリに書き込む方向を選択する。これにより、帯域が広いメモリを使用しなくとも、積和演算器への画素データの供給を効率よく行うことができるとともに、メモリからのデータ読み出しを常に一定方向で行うことが可能になり、データ供給に係る制御が簡略化される。
【０１１５】
なお、上述した説明では、フィルター演算処理を行うために画像メモリ７０１から画素データを読み出す方向、及びフィルター係数メモリから係数を読み出す方向として、水平方向とした場合の例について示した。しかし、これに限定されるものではなく、画像メモリ７０１から画素データを読み出す方向、及びフィルター係数メモリから係数を読み出す方向を垂直方向とした場合も本発明に含まれる。
【０１１６】
また、上述した第１及び第２の実施形態で示したフィルターカーネルは一例であり、これらに限定されるものではなく、任意のフィルターカーネルを用いることができる。
【０１１７】
（本発明の他の実施形態）
上述した実施形態の機能を実現するべく各種のデバイスを動作させるように、該各種デバイスと接続された装置又はシステム内のコンピュータ（ＣＰＵ又はＭＰＵ）に対し、前記実施形態の機能を実現するためのソフトウェアのプログラムを供給する。そして、そのシステム又は装置のコンピュータに格納されたプログラムに従って前記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
また、この場合、前記ソフトウェアのプログラム自体が上述した実施形態の機能を実現することになり、そのプログラム自体は本発明を構成する。また、そのプログラムをコンピュータに供給するための手段、例えばかかるプログラムを格納した記録媒体は本発明を構成する。かかるプログラムを記憶する記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
また、供給されたプログラムがコンピュータにて稼働しているオペレーティングシステム又は他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合にもかかるプログラムは本発明の実施形態に含まれることは言うまでもない。
さらに、供給されたプログラムがコンピュータに係る機能拡張ボードや機能拡張ユニットに備わるメモリに格納された後、そのプログラムの指示に基づいてその機能拡張ボード等に備わるＣＰＵ等が実際の処理の一部又は全部を行う。その処理によって上述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
【０１１８】
例えば、第１及び第２の実施形態に示した画像処理装置は、図１０に示すようなコンピュータ機能８００を有し、そのＣＰＵ８０１により第１及び第２の実施形態での動作が実施される。
コンピュータ機能８００は、図１０に示すように、ＣＰＵ８０１と、ＲＯＭ８０２と、ＲＡＭ８０３とを備える。また、操作部（ＣＯＮＳ）８０９のコントローラ（ＣＯＮＳＣ）８０５と、ＣＲＴやＬＣＤ等の表示部としてのディスプレイ（ＤＩＳＰ）８１０のディスプレイコントローラ（ＤＩＳＰＣ）８０６とを備える。さらに、ハードディスク（ＨＤ）８１１、及びフレキシブルディスク等の記憶デバイス（ＳＴＤ）８１２のコントローラ（ＤＣＯＮＴ）８０７と、ネットワークインタフェースカード（ＮＩＣ）８０８とを備える。それら機能部８０１、８０２、８０３、８０５、８０６、８０７、８０８は、システムバス８０４を介して互いに通信可能に接続された構成としている。
ＣＰＵ８０１は、ＲＯＭ８０２又はＨＤ８１１に記憶されたソフトウェア、又はＳＴＤ８１２より供給されるソフトウェアを実行することで、システムバス８０４に接続された各構成部を総括的に制御する。すなわち、ＣＰＵ８０１は、上述したような動作を行うための処理プログラムを、ＲＯＭ８０２、ＨＤ８１１、又はＳＴＤ８１２から読み出して実行することで、第１及び第２の実施形態での動作を実現するための制御を行う。ＲＡＭ８０３は、ＣＰＵ８０１の主メモリ又はワークエリア等として機能する。
ＣＯＮＳＣ８０５は、ＣＯＮＳ８０９からの指示入力を制御する。ＤＩＳＰＣ８０６は、ＤＩＳＰ８１０の表示を制御する。ＤＣＯＮＴ８０７は、ブートプログラム、種々のアプリケーション、ユーザファイル、ネットワーク管理プログラム、及び第１及び第２の実施形態における前記処理プログラム等を記憶するＨＤ８１１及びＳＴＤ８１２とのアクセスを制御する。ＮＩＣ８０８はネットワーク８１３上の他の装置と双方向にデータをやりとりする。
【０１１９】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【０１２０】
【図１】本発明の第１の実施形態に係る画像処理装置の構成例を示す図である。
【図２】第１の実施形態における入力画像、フィルターカーネル、演算出力画像の一例を示す図である。
【図３】第１の実施形態における画像処理装置の動作例を示す図である。
【図４】第１の実施形態における入力画像、フィルターカーネル、演算出力画像の他の例を示す図である。
【図５】本発明の第２の実施形態に係る画像処理装置の構成例を示す図である。
【図６】第２の実施形態における入力画像、フィルターカーネル、中間出力画像、及び演算出力画像の一例を示す図である。
【図７】第２の実施形態における演算対象画像及びフィルターカーネルのメモリ格納状態の一例を示す図である。
【図８】画像データに対して３×３の２次元フィルターの演算を行う演算装置の構成を示す図である。
【図９】図８に示した演算装置における画像フレームの画素と内部メモリセルの内容との対応、及び並列転送回路の制御方法を示す図である。
【図１０】本実施例における画像処理装置を実現可能なコンピュータ機能を示すブロック図である。
【符号の説明】
【０１２１】
１００  シフトレジスタ
１０１、７０１  画像メモリ
１１０〜１１３  演算器
１２０  フィルター係数メモリ
１３０  並列演算画素方向選択部
１４０、７４０  フィルター係数メモリ読み出し制御部
１５０、７５０  画像メモリ読み出し制御部
７３０  演算対象画像書き込み方向選択部
７６０  フィルター係数メモリ書き込み制御部
７７０  画像メモリ書き込み制御部
【図１】
2010015257.tif 000007
【図２】
2010015257.tif 000008
【図３】
2010015257.tif 000009
【図４】
2010015257.tif 000010
【図５】
2010015257.tif 000011
【図６】
2010015257.tif 000012
【図７】
2010015257.tif 000013
【図８】
2010015257.tif 000014
【図９】
2010015257.tif 000015
【図１０】
2010015257.tif 000016