(57)【特許請求の範囲】
【請求項１】
画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理装置であって、
実行すべきフィルター演算処理の種類を受信する受信手段と、
前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給手段と、
前記フィルターカーネルにおけるフィルター係数と前記データ供給手段から出力される複数の画素データとを用いた演算処理を並列に行う複数の演算手段とを有し、
前記複数の記憶手段は、前記フィルター演算処理の種類に応じて複数のブロックに分類されており、
前記データ供給手段は、それぞれが前記複数の演算手段の１つに対応する複数の選択手段を備え、各選択手段は、前記複数のブロックの各ブロックに対して予め定められた１つの記憶手段からの出力が入力されており、前記受信手段で受信したフィルター演算処理の種類に応じたブロックに対して予め定められた１つの記憶手段を選択し、当該選択した記憶手段に記憶された画素データを前記対応する演算手段に出力することを特徴とする画像処理装置。
【請求項２】
前記フィルター演算処理の種類とは、前記フィルターカーネルを前記画像の画素データに対して走査させる際の画素のずらし数の種類であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記複数の演算手段がＮ個設けられており、前記フィルターカーネルを前記画像の画素データに対してＭ画素ずらして走査させて前記フィルター演算処理を行う場合において、
前記複数の記憶手段のうち、前記順次シフトする際の先頭の記憶手段からＭ個ごとに存在するＮ個の記憶手段が、前記複数のブロックのうちの１つのブロックに分類されることを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記フィルターカーネルを前記画像の画素データに対してＭ画素ずらして走査させて前記フィルター演算処理を行う場合には、前記先頭の記憶手段からＭ個ごとに存在する前記Ｎ個の記憶手段の画素データが前記選択手段により選択されて前記演算手段に出力されることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理方法であって、
実行すべきフィルター演算処理の種類を受信する受信ステップと、
前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給ステップと、
前記フィルターカーネルにおけるフィルター係数と前記データ供給ステップにより出力される複数の画素データとを用いた演算処理を複数の演算手段で並列に行う演算ステップとを有し、
前記複数の記憶手段は、前記フィルター演算処理の種類に応じて複数のブロックに分類されており、
それぞれが前記複数の演算手段の１つに対応する複数の選択手段を備え、各選択手段は、前記複数のブロックの各ブロックに対して予め定められた１つの記憶手段からの出力が入力されており、
前記データ供給ステップは、前記複数の演算手段の各々に対して、前記対応する選択手段が、前記受信ステップで受信したフィルター演算処理の種類に応じたブロックに対して予め定められた１つの記憶手段を選択し、当該選択した記憶手段に記憶された画素データを出力する選択ステップを含むことを特徴とする画像処理方法。
【請求項６】
前記フィルター演算処理の種類とは、前記フィルターカーネルを前記画像の画素データに対して走査させる際の画素のずらし数の種類であることを特徴とする請求項５に記載の画像処理方法。
【請求項７】
前記複数の演算手段がＮ個設けられており、前記フィルターカーネルを前記画像の画素データに対してＭ画素ずらして走査させて前記フィルター演算処理を行う場合において、
前記複数の記憶手段のうち、前記順次シフトする際の先頭の記憶手段からＭ個ごとに存在するＮ個の記憶手段が、前記複数のブロックのうちの１つのブロックに分類されることを特徴とする請求項５に記載の画像処理方法。
【請求項８】
前記フィルターカーネルを前記画像の画素データに対してＭ画素ずらして走査させて前記フィルター演算処理を行う場合には、前記先頭の記憶手段からＭ個ごとに存在する前記Ｎ個の記憶手段の画素データが前記選択ステップにおいて選択されて前記演算手段に出力されることを特徴とする請求項７に記載の画像処理方法。
【請求項９】
画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理方法をコンピュータに実行させるためのプログラムであって、
実行すべきフィルター演算処理の種類を受信する受信ステップと、
前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給ステップと、
前記フィルターカーネルにおけるフィルター係数と前記データ供給ステップにより出力される複数の画素データとを用いた演算処理を複数の演算手段で並列に行う演算ステップとをコンピュータに実行させ、
前記複数の記憶手段は、前記フィルター演算処理の種類に応じて複数のブロックに分類されており、
それぞれが前記複数の演算手段の１つに対応する複数の選択手段を備え、各選択手段は、前記複数のブロックの各ブロックに対して予め定められた１つの記憶手段からの出力が入力されており、
前記データ供給ステップは、前記複数の演算手段の各々に対して、前記対応する選択手段が、前記受信ステップで受信したフィルター演算処理の種類に応じたブロックに対して予め定められた１つの記憶手段を選択し、当該選択した記憶手段に記憶された画素データを出力する選択ステップを含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させてフィルター演算処理を行う画像処理装置及び画像処理方法、並びに、当該画像処理方法をコンピュータに実行させるためのプログラムに関するものである。
【背景技術】
【０００２】
従来から、特に画像処理の分野では、画素配列が２次元になっていることから、例えば２次元のフィルター処理に代表される２次元のデータ演算が頻繁に行われている。このような演算に対して、下記の特許文献１では、積和演算器に代表されるような演算器を複数用意し、演算器に供給される演算対象画像の画素データを、複数の演算器間で共有して並列処理させている。そのことで、演算処理の高速化、並びに演算対象画像の画素データの効率的な使用を達成しようとしている。
【０００３】
例えば、特許文献１では、図８に示されるような構成の演算装置（画像処理装置）を用いている。
図８は、従来例を示し、画像データに対して２次元フィルターの演算を行う演算装置（画像処理装置）の構成の一例を示すブロック図である。図８に示す演算装置では、出力画像の複数画素（図８では４画素）のフィルター演算処理を並列に行うことができる。
【０００４】
図８に示す演算装置（画像処理装置）は、演算対象画像の画素データを保持するメモリ５００、パラレル入力・パラレル出力ができるシフトレジスタ５０１、及び、積和演算器５６０〜５６３から構成されている。
【０００５】
積和演算器５６０〜５６３は、乗算器５３０〜５３３、加算器５４０〜５４３、及び、レジスタ５５０〜５５３から構成されている。このレジスタ５５０〜５５３には、それぞれ、乗算器５３０〜５３３及び加算器５４０〜５４３を用いて積和演算された結果が格納される。
【０００６】
シフトレジスタ５０１は、データをパラレルロードするかシフトするかを選択するセレクタ５１０〜５１５、及び、レジスタ５２０〜５２５から構成されている。
【０００７】
図９は、図８に示す演算装置を用いてフィルター演算処理を行う場合の入力画像（演算対象画像）、フィルターカーネル、及び、演算出力画像（演算結果画像）を示す模式図である。具体的に、図９（ａ）に入力画像（演算対象画像）を示し、図９（ｂ）にフィルターカーネルを示し、図９（ｃ）に演算出力画像（演算結果画像）を示す。また、図１０は、図９に示す画像等を用いて、図８の演算装置を動作させたときのタイムチャートである。
【０００８】
図８、図９及び図１０を用いて、従来の画像処理装置の動作を説明する。
まず、図１０の時間ｔ０では、メモリ５００から、図９（ａ）に示す演算対象画像の画素データＤ００、Ｄ１０、…、Ｄ５０が読み出される。このとき、セレクタ５１０〜５１５は、メモリ５００からの入力を選択し、それぞれ、レジスタ５２０〜５２５へ出力する。
【０００９】
続いて、図１０の時間ｔ１では、セレクタ５１０〜５１５から出力されているＤ００、Ｄ１０、…、Ｄ５０が、それぞれ、レジスタ５２０〜５２５にロードされると同時に、画素データＤ００、Ｄ１０、Ｄ２０、Ｄ３０が積和演算器５６０〜５６３に出力される。同時に、図９（ｂ）に示すフィルターカーネルにおけるフィルター係数Ｗ００が積和演算器５６０〜５６３に出力されることにより、積和演算が行われる。この際、セレクタの出力は、前段のレジスタの出力を選択するように切り替えられる。
【００１０】
続いて、図１０の時間ｔ２では、セレクタ５１０〜５１４から出力されているＤ１０、…、Ｄ５０が、それぞれ、レジスタ５２０〜５２４にシフトされると同時に、画素データＤ１０、Ｄ２０、Ｄ３０、Ｄ４０が積和演算器５６０〜５６３に出力される。同時に、図９（ｂ）に示すフィルターカーネルにおけるフィルター係数Ｗ１０が積和演算器５６０〜５６３に出力されることにより、これまでの結果（レジスタ５５０〜５５３に保持されている結果）とあわせて積和演算される。この際、セレクタの出力は、前段のレジスタの出力を選択したまま変化しない。
【００１１】
続いて、図１０の時間ｔ３では、セレクタ５１０〜５１３から出力されているＤ２０、…、Ｄ５０が、それぞれ、レジスタ５２０〜５２３にシフトされると同時に、画素データＤ２０、Ｄ３０、Ｄ４０、Ｄ５０が積和演算器５６０〜５６３に出力される。同時に、図９（ｂ）に示すフィルターカーネルにおけるフィルター係数Ｗ２０が積和演算器５６０〜５６３に出力されることにより、これまでの結果（レジスタ５５０〜５５３に保持されている結果）とあわせて積和演算される。この際、セレクタの出力は、メモリ５００からの入力を選択するように切り替えられる。
【００１２】
このような動作を繰り返すことで、時間ｔ１０において、レジスタ５５０〜５５３にフィルター演算結果Ｒ１１〜Ｒ４１が格納される。さらに、フィルターカーネルを演算対象画像上でスキャンさせながら、この動作を繰り返すことで、入力画像の全面にわたるフィルター演算処理が可能となっている。
【００１３】
【特許文献１】特開２００４−１３８７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、特許文献１では、演算出力画像が並列に出力されるため、間引きフィルター演算処理（サブサンプリングフィルター演算処理）を効率よく行えないという問題がある。
【００１５】
ここでいう、間引きフィルター演算処理（サブサンプリングフィルター演算処理）とは、演算対象画像を間引いてフィルター演算処理を行うことではなく、演算出力画像を間引く演算処理を意味する。通常のフィルター演算処理では、演算対象画像に対して、フィルターカーネルを１画素ずつずらしながらフィルター演算処理を行うことで、演算出力画像を得る。これに対し、サブサンプリングフィルター演算処理では、フィルターカーネルを複数画素（例えば２画素）ずつずらしながらフィルター演算処理を行うことで、演算出力画像を得ることになる。
【００１６】
例えば、フィルターカーネルを２画素ずつずらすサブサンプリングフィルター演算処理（これを「２対１のサブサンプリングフィルター演算処理」と称する）は、通常のフィルター演算処理に比べて計算量が４分の１になり、高速に演算を行うことが可能になる。
【００１７】
例えば、図９（ａ）に示す演算対象画像に対して、２対１のサブサンプリングフィルター演算処理を行うと、図１１に示された演算出力画像になる（演算出力画像の縦横サイズは、演算対象画像の約半分となる）。
【００１８】
しかしながら、このサブサンプリングフィルター演算処理を特許文献１の装置を用いて行うと、水平方向には４画素並列で演算出力画像が出力されるため（例えば、Ｒ１１、Ｒ２１、Ｒ３１、Ｒ４１が同時に出力されるため）、出力結果を間引くことになる。したがって、特許文献１の技術では、計算量を効率よく削減できない（ただし、垂直方向には、削減可能なので、計算量は、通常のフィルター演算処理に比べて２分の１にはなる）。この場合、積和演算器５６１及び５６３が演算した結果（Ｒ２１、Ｒ４１）は、結果的に間引かれてしまうので、無駄になっている。
【００１９】
つまり、従来の技術では、フィルター演算処理の計算量の削減を目指して、通常のフィルター演算処理をサブサンプリングフィルター演算処理に置き換えたとしても、期待されるほど計算量の削減の効果が得られないという問題があった。例えば、計算量を４分の１に削減することを目的として、２対１のサブサンプリングフィルター演算処理を行ったとしても、実際の計算量は、２分の１にしか削減できないという問題があった。
【００２０】
本発明は上述した問題点に鑑みてなされたものであり、通常のフィルター演算処理を行うときも、サブサンプリングフィルター演算処理を行うときも、演算手段において無駄な演算処理が行われることを防止することを目的とする。
【課題を解決するための手段】
【００２１】
本発明の画像処理装置は、画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理装置であって、実行すべきフィルター演算処理の種類を受信する受信手段と、前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給手段と、前記フィルターカーネルにおけるフィルター係数と前記データ供給手段から出力される複数の画素データとを用いた演算処理を並列に行う複数の演算手段とを有し、前記複数の記憶手段は、前記フィルター演算処理の種類に応じて複数のブロックに分類されており、前記データ供給手段は、それぞれが前記複数の演算手段の１つに対応する複数の選択手段を備え、各選択手段は、前記複数のブロックの各ブロックに対して予め定められた１つの記憶手段からの出力が入力されており、前記受信手段で受信したフィルター演算処理の種類に応じたブロックに対して予め定められた１つの記憶手段を選択し、当該選択した記憶手段に記憶された画素データを前記対応する演算手段に出力する。
【００２２】
本発明の画像処理方法は、画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理方法であって、実行すべきフィルター演算処理の種類を受信する受信ステップと、前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給ステップと、前記フィルターカーネルにおけるフィルター係数と前記データ供給ステップにより出力される複数の画素データとを用いた演算処理を複数の演算手段で並列に行う演算ステップとを有し、前記複数の記憶手段は、前記フィルター演算処理の種類に応じて複数のブロックに分類されており、それぞれが前記複数の演算手段の１つに対応する複数の選択手段を備え、各選択手段は、前記複数のブロックの各ブロックに対して予め定められた１つの記憶手段からの出力が入力されており、前記データ供給ステップは、前記複数の演算手段の各々に対して、前記対応する選択手段が、前記受信ステップで受信したフィルター演算処理の種類に応じたブロックに対して予め定められた１つの記憶手段を選択し、当該選択した記憶手段に記憶された画素データを出力する選択ステップを含む。
【００２３】
本発明のプログラムは、画像メモリに記憶されている画像の画素データに対してフィルターカーネルを走査させて、フィルター演算処理を行う画像処理方法をコンピュータに実行させるためのプログラムであって、実行すべきフィルター演算処理の種類を受信する受信ステップと、前記画像メモリから読み出された複数の画素データを複数の記憶手段に一時的に記憶すると共に一方向に順次シフトしながら出力するデータ供給ステップと、前記フィルターカーネルにおけるフィルター係数と前記データ供給ステップにより出力される複数の画素データとを用いた演算処理を複数の演算手段で並列に行う演算ステップとをコンピュータに実行させ、前記複数の記憶手段は、前記フィルター演算処理の種類に応じて複数のブロックに分類されており、それぞれが前記複数の演算手段の１つに対応する複数の選択手段を備え、各選択手段は、前記複数のブロックの各ブロックに対して予め定められた１つの記憶手段からの出力が入力されており、前記データ供給ステップは、前記複数の演算手段の各々に対して、前記対応する選択手段が、前記受信ステップで受信したフィルター演算処理の種類に応じたブロックに対して予め定められた１つの記憶手段を選択し、当該選択した記憶手段に記憶された画素データを出力する選択ステップを含む。
【発明の効果】
【００２４】
本発明によれば、通常のフィルター演算処理を行うときも、サブサンプリングフィルター演算処理を行うときも、演算手段において無駄な演算処理が行われることを防止することが可能となる。
【発明を実施するための最良の形態】
【００２５】
次に、本発明における諸実施形態について説明する。
【００２６】
（第１の実施形態）
以下に、本発明の第１の実施形態について説明を行う。
図１は、本発明の第１の実施形態に係る画像処理装置の概略構成の一例を示すブロック図である。
【００２７】
本実施形態における画像処理装置１００は、後述する積和演算器（１６０〜１６３）を４個用いることにより、演算出力画像の４画素分を並列に得られるような構成になっている。ここで、この並列に得られる演算出力画像の画素数を「並列度」と称する。本実施形態では、並列度が４となる。
【００２８】
また、本実施形態における画像処理装置１００は、通常のフィルター演算処理と、２対１のサブサンプリングフィルター演算処理が行えるような構成になっている。また、このときのサブサンプリングする比（演算対象画像に対して何画素ずらしてフィルター演算処理を行うのかを示す値）をサブサンプリング比と称する。本実施形態では、サブサンプリング比が２の場合の例を示す。また、通常のフィルター演算処理を１対１のサブサンプリングフィルター演算処理と考えると、本実施形態の画像処理装置１００では、サブサンプリング比が１と２の両方のフィルター演算処理が行えるということもできる。
【００２９】
画像処理装置１００は、画像メモリ１０１、データ供給部１０２、フィルター係数メモリ１０３、フィルター係数メモリ読出し制御部１０４、画像メモリ読出し制御部１０５、フィルター演算制御部１０６及び積和演算器１６０〜１６３を有して構成されている。
【００３０】
本実施形態の画像処理装置１００は、画像メモリ１０１に記憶されている画像の画素データに対してフィルターカーネル（１０３ａ）を走査させて、フィルター演算処理を行うものである。
【００３１】
画像メモリ１０１は、外部装置から入力された入力画像、即ち、演算対象画像を格納しているメモリである。
【００３２】
フィルター係数メモリ１０３は、複数のフィルター係数を具備するフィルターカーネル１０３ａを記憶するメモリである。フィルター係数メモリ１０３からは、フィルターカーネル１０３ａにおけるフィルター係数が順次出力される。
【００３３】
積和演算器（演算手段）１６０〜１６３は、それぞれ、乗算器１３０〜１３３、加算器１４０〜１４３、及び、レジスタ１５０〜１５３を有して構成されている。積和演算器１６０〜１６３は、データ供給部１０２から出力（供給）される複数の画素データとフィルターカーネル１０３ａにおけるフィルター係数とを用いた演算処理を並列に行う。より具体的に、積和演算器１６０〜１６３は、データ供給部１０２から供給される演算対象画像に係る画像データとフィルター係数との乗算結果を累積加算する処理を並列に行う。また説明の都合上、積和演算器１６０を先頭の積和演算器とし、積和演算器の順とは、１６０、１６１、１６２、１６３の順を意味するものとする。
【００３４】
乗算器１３０〜１３３は、それぞれ、データ供給部１０２の出力と、フィルター係数メモリ１０３から入力されたフィルター係数とを掛け合わせて、その結果を出力する。加算器１４０〜１４３は、それぞれ、各乗算器１３０〜１３３からの出力と、レジスタ１５０〜１５３のデータとを加算する。レジスタ１５０〜１５３は、それぞれ、加算器１４０〜１４３からの出力データを蓄積する。
【００３５】
データ供給部（データ供給手段）１０２は、パラレル出力可能なシフトレジスタ１１２（レジスタ１２０〜１２６で構成）と、セレクタ１１０及び１１１を有して構成されている。データ供給部１０２は、画像メモリ１０１から読み出された複数の画素データを一時的に記憶すると共に一方向（本実施形態では、水平方向）に順次シフトしながら出力する。より具体的に、データ供給部１０２は、画像メモリ１０１から入力される画素データＤｘｙを、内蔵するレジスタ分（本実施形態では７画素分）蓄積し、積和演算器１６０〜１６３にパラレル出力する。したがって、シフトレジスタ１１２のビット幅（シフトレジスタ１１２を構成するレジスタ１２０〜１２６のビット幅）は、少なくとも演算対象画像（入力画像）の画素データＤｘｙのビット幅と同じだけはある。
【００３６】
図１では、画像メモリ１０１から読み出された複数の画素データを一時的に記憶するレジスタ（記憶手段）１２０〜１２６の出力は、以下の１〜３のいずれかとなるように接続されている。
１．積和演算器には入力されない（例えばレジスタ１２５）
２．直接、積和演算器に入力される（例えばレジスタ１２０）
３．セレクタを介して積和演算器に入力される（例えばレジスタ１２１）
この接続形態は、以下に示す規則によって決定されている。
【００３７】
まず、以下に示す［レジスタのブロックへの分類］に従って、レジスタ１２０〜１２６は、複数あるブロックのいずれか、或いは複数に属するようになっている。また、どのブロックにも分類されないレジスタもある。以下に示す［レジスタのブロックへの分類］から明らかなように、ブロックの数は、サブサンプリング比の種類の数と等しくなる。本実施形態では、サブサンプリング比が１と２の２種類なので、ブロックの数も２（便宜上、第１のブロックと第２のブロックと称する）となる。
【００３８】
［レジスタのブロックへの分類］
シフトレジスタ１１２の先頭のレジスタ１２０からサブサンプリング比１ごとに存在する、最初の並列度（本実施形態では４）数個のレジスタは、第１のブロックに属する。具体的に、本実施形態では、レジスタ１２０、１２１、１２２、１２３の４つのレジスタが第１のブロックに属する。
シフトレジスタ１１２の先頭のレジスタ１２０からサブサンプリング比２ごとに存在する、最初の並列度（本実施形態では４）数個のレジスタは、第２のブロックに属する。具体的に、本実施形態では、レジスタ１２０、１２２、１２４、１２６の４つのレジスタが第２のブロックに属する。
【００３９】
通常のフィルター演算処理と、サブサンプリングフィルター演算処理の違いは、「フィルターカーネル１０３ａを１画素ずつずらしながらフィルター演算処理を行うことで、演算出力画像を得る」か、「フィルターカーネル１０３ａを複数画素（例えば２画素）ずつずらしながらフィルター演算処理を行うことで、演算出力画像を得る」かの違いである。
【００４０】
したがって、上述した第１のブロックに属するレジスタは、フィルターカーネル１０３ａを１画素ずつずらしながらフィルター演算処理を行う場合に必要な画素データが供給されるレジスタを意味する。また、第２のブロックに属するレジスタは、フィルターカーネル１０３ａを２画素ずつずらしながらフィルター演算処理を行う場合に必要な画素データが供給されるレジスタを意味する。
【００４１】
即ち、レジスタ１２０〜１２６は、フィルター演算処理の種類に応じて複数のブロックに分類される。
【００４２】
そして、本実施形態の画像処理装置１００では、どちらか一方のブロックに属しているレジスタの出力のうち、どちらのブロックに属しているレジスタの出力を積和演算器１６０〜１６３に入力させるのかをセレクタ１１０及び１１１で選択する。このようにして、本実施形態の画像処理装置１００では、通常のフィルター演算処理とサブサンプリングフィルター演算処理との両方を同一の回路構成で行うことができるようにしている。
【００４３】
以下の表１に、レジスタ１２０〜１２６に関して、［レジスタのブロックへの分類］を適用した結果を示す。
【００４４】
【表１】
0005522893.tif 000002
【００４５】
ここで、第１のブロックに属するどのレジスタの出力と、第２のレジスタに属するどのレジスタの出力とを選択肢として組み合わせて、その選択結果をどの積和演算器に入力させるかを決定する必要がある。基本的には、第１のブロックに属するレジスタの出力と第２のブロックに属するレジスタの出力をどのように組み合わせてもよく、また、その選択結果をどの積和演算器に入力させてもよい。しかしながら、本実施形態では、なるべくセレクタを少なくすることを目的とした場合について、以下に説明する。
【００４６】
セレクタは、第１のブロックに属するレジスタの出力と、第２のレジスタに属するレジスタの出力とを選択するために用いられるので、これを少なくするには、まず、両方のブロックに属しているレジスタ１２０及び１２２の出力には用いないように構成する。また、当然であるが、どのブロックにも属していないレジスタ１２５の出力は、積和演算器１６０〜１６３には入力されない。
【００４７】
本実施形態では、上述したように、両方のブロックに属しているレジスタ１２０及び１２２の出力には、セレクタを用いないようにすることを優先している。さらに、積和演算器１６０〜１６３からのフィルター演算結果の出力順序が、通常のフィルター演算処理とサブサンプリングフィルター演算処理とでなるべく変化しないように、選択肢の組み合わせ及びその選択結果をどの積和演算器に入力するのかを決定している。
【００４８】
具体的に、本実施形態では、レジスタ１２０〜１２６は、以下に示す［レジスタと積和演算器との対応付け１］に従って、積和演算器１６０〜１６３のいずれか、或いはそれ以外に対応付けられる。
【００４９】
［レジスタと積和演算器との対応付け１］
シフトレジスタ１１２の最初の並列度（本実施形態では４）数個のレジスタは、先頭のレジスタ１２０から順（１２０、１２１、１２２、１２３の順）に、積和演算器の順（１６０、１６１、１６２、１６３の順）に対応付けられる。
続く、並列度（本実施形態では４）数個のレジスタは、順番が１つ後ろにずれた積和演算器から順に対応付けられる。つまり、続きのレジスタから順（１２４、１２５、１２６の順）に、順番が１つ後ろにずれた積和演算器の順（１６１、１６２、１６３の順）に対応付けられる。なお、順番が１つ後ろにずれた積和演算器が存在しなければ、対応付けられる演算器はないものとする。
【００５０】
このようにして対応付けを行い、１つの積和演算器に対して複数のレジスタが対応付けられた場合は、各レジスタの出力にセレクタを接続し、その選択結果を積和演算器に入力するようにする。ただし、上述した［レジスタのブロックへの分類］において、どのブロックにも属していないと分類されたレジスタ１２５の出力を積和演算器１６０〜１６３に入力する必要はないので、このレジスタ１２５は接続対象から除いてよい。
【００５１】
以下の表２に、レジスタ１２０〜１２６に関して、［レジスタと積和演算器との対応付け１］を行い、さらに、どのブロックにも分類されないレジスタ１２５を除いた結果を示す。
【００５２】
【表２】
0005522893.tif 000003
【００５３】
この表２から、以下のようにレジスタ１２０〜１２６の出力の接続形態が決定される。
１．積和演算器に対して対応しているレジスタが１つしかなければ、そのレジスタの出力は対応する積和演算器に直接接続される（レジスタ１２０及び１２２）。
２．積和演算器に対応しているレジスタが複数あれば、それらのレジスタの出力は、対応する積和演算器に、セレクタを介して接続される（レジスタ１２１、１２４、１２３、１２６）。
【００５４】
以上のような規則に基づいて、レジスタ１２０〜１２６と積和演算器１６０〜１６３の間の接続形態が決定される（図１参照）。具体的に、第１のブロックに属するレジスタ１２１の出力及び第２のブロックに属するレジスタ１２４の出力は、セレクタ１１０に入力され、セレクタ１１０で選択された出力が積和演算器１６１に入力される。また、第１のブロックに属するレジスタ１２３の出力及び第２のブロックに属するレジスタ１２６の出力は、セレクタ１１１に入力され、セレクタ１１１で選択された出力が積和演算器１６３に入力される。
【００５５】
フィルター係数メモリ読出し制御部１０４は、フィルター係数メモリ１０３のフィルターカーネル１０３ａから、予め定められた順序（例えば、本実施形態では水平スキャンする順序とする）でフィルター係数を乗算器１３０〜１３３に順次読み出す制御を行う。
【００５６】
画像メモリ読出し制御部１０５は、画像メモリ１０１から、予め定められた順序（例えば、本実施形態では水平スキャンする順序とする）で画素データをシフトレジスタ１１２に順次読み出す制御を行う。
【００５７】
フィルター演算制御部１０６は、例えば、外部の操作入力手段等から入力されたフィルター演算処理の種類に係るフィルター演算処理情報に基づいて、フィルター演算に係る処理を統括的に制御する。ここで、本実施形態では、フィルター演算処理の種類としては、通常のフィルター演算処理及び２対１のサブサンプリングフィルター演算処理が挙げられ、これは、具体的にフィルター演算処理の際の画素のずらし数の種類ともいえる。
【００５８】
本実施形態では、フィルター演算制御部１０６は、フィルター演算処理情報に基づいて、フィルター係数メモリ読出し制御部１０４、画像メモリ読出し制御部１０５、セレクタ１１０及び１１１、並びに、積和演算器１６０〜１６３を制御する。具体的には、以下に示す制御を行う。
【００５９】
まず、フィルター演算制御部１０６は、セレクタ１１０及び１１１に対して、以下に示すような制御信号を出力する。
１．通常のフィルター演算（サブサンプリング比１のフィルター演算）を行う場合は、セレクタ１１０及び１１１の出力として、第１のブロックに属するレジスタ（レジスタ１２１及び１２３）の出力が選択されるように制御信号を出力する。
２．２対１のサブサンプリングフィルター演算（サブサンプリング比２のフィルター演算）を行う場合は、セレクタ１１０及び１１１の出力として、第２のブロックに属するレジスタ（レジスタ１２４及び１２６）の出力が選択されるように制御信号を出力する。
【００６０】
即ち、セレクタ（選択手段）１１０及び１１１は、フィルター演算処理情報に示されたフィルター演算処理の種類に応じて、複数の積和演算器１６０〜１６３の少なくとも１つの特定の積和演算器に対して、複数のレジスタ１２０〜１２６の１つを選択する。そして、セレクタ（選択手段）１１０及び１１１は、当該選択したレジスタに記憶された画素データを前記特定の積和演算器に出力する。より具体的には、セレクタ１１０及び１１１は、フィルター演算処理情報に示されたフィルター演算処理の種類に応じて、複数のブロックに分類されたレジスタのうちの１つのブロックに係るレジスタの画素データを選択し積和演算器に出力する。
【００６１】
また、フィルター演算制御部１０６は、画像メモリ読み出し制御部１０５に対して、以下に示すような制御信号を出力する。
１．通常のフィルター演算（サブサンプリング比１のフィルター演算）を行う場合は、画像メモリ１０１から水平方向に、「並列度＋フィルターカーネルの水平方向サイズ−１」個の演算対象画素を読み出し、次の行から再度「並列度＋フィルターカーネルの水平方向サイズ−１」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部１０５に対して出力する。本実施形態では、水平方向に、４＋３−１＝６個の演算対象画素を読み出すことを３回繰り返すことになる。
２．２対１のサブサンプリングフィルター演算（サブサンプリング比２のフィルター演算）を行う場合は、画像メモリ１０１から水平方向に、「２×並列度＋フィルターカーネルの水平方向サイズ−２」個の演算対象画素を読み出し、次の行から再度「２×並列度＋フィルターカーネルの水平方向サイズ−２」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部１０５に対して出力する。本実施形態では、水平方向に、２×４＋３−２＝９個の演算対象画素を読み出すことを３回繰り返すことになる。
【００６２】
また、フィルター演算制御部１０６は、フィルター係数メモリ１０３に対してフィルター係数メモリ読出し制御部１０４を介して読み出すタイミングを指示し、積和演算器１６０〜１６３に対して積和演算を行うタイミングの指示を行う。
【００６３】
次に、図１に示す画像処理装置１００における通常のフィルター演算処理とサブサンプリングフィルター演算処理を行った場合の動作説明を行う。
【００６４】
まず、通常のフィルター演算処理を行った場合の動作説明を行う。
図２は、本発明の第１の実施形態に係る画像処理装置において、通常のフィルター演算処理を行った場合の動作の一例を示すタイムチャートである。
【００６５】
まず、フィルター演算制御部１０６は、セレクタ１１０及び１１１に対して、第１のブロックに属するレジスタ（レジスタ１２１及び１２３）の出力が選択されるように制御信号を出力する。
【００６６】
続いて、フィルター演算制御部１０６は、画像メモリ１０１から、水平方向に、Ｄ００、Ｄ１０、…、Ｄ５０までの６個の演算対象画素を読み出して、シフトレジスタ１１２に供給するように、画像メモリ読み出し制御部１０５に指示をする。具体的にこの処理は、時間ｔ０〜ｔ５の間に行われる。
【００６７】
そして、シフトレジスタ１１２では、画像メモリ１０１から入力された演算対象画素の画素データを順次シフトすると同時に、各積和演算器１６０〜１６３に画素データを出力する。
【００６８】
そして、積和演算器１６０〜１６３では、時間ｔ０〜ｔ６の間（シフトによる１行目の演算対象画素の画素データのセットを行っている間）は、演算を停止する。また、積和演算器１６０〜１６３では、時間ｔ７〜ｔ９の間は、フィルターカーネル１０３ａの水平方向の１行目（Ｗ００、Ｗ１０、Ｗ２０）との積和演算を行う。
【００６９】
その間に、フィルター演算制御部１０６は、画像メモリ１０１から、水平方向に、Ｄ０１、Ｄ１１、…、５１までの６個の演算対象画素を読み出して、シフトレジスタ１１２に供給するように、画像メモリ読み出し制御部１０５に指示をする。具体的にこの処理は、時間ｔ６〜ｔ１１の間に行われる。
【００７０】
そして、積和演算器１６０〜１６３では、時間ｔ１０〜ｔ１２の間（シフトによる２行目の演算対象画素の画素データのセットを行っている間）は、演算を停止する。また、積和演算器１６０〜１６３では、時間ｔ１３〜ｔ１５の間は、フィルターカーネル１０３ａの水平方向の２行目（Ｗ０１、Ｗ１１、Ｗ２１）との積和演算を行う。
【００７１】
その間に、フィルター演算制御部１０６は、画像メモリ１０１から、水平方向に、Ｄ０２、Ｄ１２、…、５２までの６個の演算対象画素を読み出して、シフトレジスタ１１２に供給するように、画像メモリ読み出し制御部１０５に指示をする。具体的にこの処理は、時間ｔ１２〜ｔ１７の間に行われる。
【００７２】
そして、積和演算器１６０〜１６３では、時間ｔ１６〜ｔ１８の間（シフトによる３行目の演算対象画素の画素データのセットを行っている間）は、演算を停止する。また、積和演算器１６０〜１６３では、時間ｔ１９〜ｔ２１の間は、フィルターカーネル１０３ａの水平方向の３行目（Ｗ０２、Ｗ１２、Ｗ２２）との積和演算を行う。
【００７３】
この時点で、積和演算器１６０からは、以下の（１）式に示すフィルター演算結果Ｒ１１が出力される。また、積和演算器１６１からは、以下の（２）式に示すフィルター演算結果Ｒ２１が出力される。また、積和演算器１６２からは、以下の（３）式に示すフィルター演算結果Ｒ３１が出力される。また、積和演算器１６３からは、以下の（４）式に示すフィルター演算結果Ｒ４１が出力される。
【００７４】
【数１】
0005522893.tif 000004
【００７５】
そして、時間ｔ２２から、次のフィルター演算処理が行われる。ただし、図２に示す例では、画像メモリ１０１からの読み出し、及び、シフトレジスタ１１２のシフトは、パイプライン的に先行して行われている。
【００７６】
次に、サブサンプリングフィルター演算処理を行った場合の動作説明を行う。
図３は、本発明の第１の実施形態に係る画像処理装置において、サブサンプリングフィルター演算処理を行った場合の動作の一例を示すタイムチャートである。具体的に、図３には、２対１のサブサンプリングフィルター演算処理を行った場合の動作の一例が示されている。
【００７７】
まず、フィルター演算制御部１０６は、セレクタ１１０及び１１１に対して、第２のブロックに属するレジスタ（レジスタ１２４及び１２６）の出力が選択されるように制御信号を出力する。
【００７８】
続いて、フィルター演算制御部１０６は、画像メモリ１０１から、水平方向に、Ｄ００、Ｄ１０、…、８０までの９個の演算対象画素を読み出して、シフトレジスタ１１２に供給するように、画像メモリ読み出し制御部１０５に指示をする。具体的にこの処理は、時間ｔ０〜ｔ８の間に行われる。
【００７９】
そして、シフトレジスタ１１２では、画像メモリ１０１から入力された演算対象画素の画素データを順次シフトすると同時に、各積和演算器１６０〜１６３に画素データを出力する。
【００８０】
そして、積和演算器１６０〜１６３では、時間ｔ０〜ｔ６の間（シフトによる１行目の演算対象画素の画素データのセットを行っている間）は、演算を停止する。また、積和演算器１６０〜１６３では、時間ｔ７〜ｔ９の間は、フィルターカーネル１０３ａの水平方向の１行目（Ｗ００、Ｗ１０、Ｗ２０）との積和演算を行う。
【００８１】
その間に、フィルター演算制御部１０６は、画像メモリ１０１から、水平方向に、Ｄ０１、Ｄ１１、…、８１までの９個の演算対象画素を読み出して、シフトレジスタ１１２に供給するように、画像メモリ読み出し制御部１０５に指示をする。具体的にこの処理は、時間ｔ９〜ｔ１７の間に行われる。
【００８２】
そして、積和演算器１６０〜１６３では、ｔ１０〜ｔ１５の間（シフトによる２行目の演算対象画素データのセットを行っている間）は、演算を停止する。また、積和演算器１６０〜１６３では、時間ｔ１６〜ｔ１８の間は、フィルターカーネル１０３ａの水平方向の２行目（Ｗ０１、Ｗ１１、Ｗ２１）との積和演算を行う。
【００８３】
その間に、フィルター演算制御部１０６は、画像メモリ１０１から、水平方向に、Ｄ０２、Ｄ１２、…、８２までの９個の演算対象画素を読み出して、シフトレジスタ１１２に供給するように、画像メモリ読み出し制御部１０５に指示をする。具体的にこの処理は、時間ｔ１８〜ｔ２６の間に行われる。
【００８４】
そして、積和演算器１６０〜１６３では、時間ｔ１９〜ｔ２４の間（シフトによる３行目の演算対象画素データのセットを行っている間）は、演算を停止する。また、積和演算器１６０〜１６３では、時間ｔ２５〜ｔ２７の間は、フィルターカーネル１０３ａの水平方向の３行目（Ｗ０２、Ｗ１２、Ｗ２２）との積和演算を行う。
【００８５】
この時点で、積和演算器１６０からは、以下の（５）式に示すフィルター演算結果Ｒ１１が出力される。また、積和演算器１６１からは、以下の（６）式に示すフィルター演算結果Ｒ５１が出力される。また、積和演算器１６２からは、以下の（７）式に示すフィルター演算結果Ｒ３１が出力される。また、積和演算器１６３からは、以下の（８）式に示すフィルター演算結果Ｒ７１が出力される。
【００８６】
【数２】
0005522893.tif 000005
そして、時間ｔ２８から、次のフィルター演算処理が行われる。ただし、この場合、画像メモリ１０１からの読み出し、及びシフトレジスタ１１２のシフトは、パイプライン的に先行して行われている。
【００８７】
次に、画像処理装置１００による画像処理方法の一連の処理手順について説明する。
図４は、本発明の第１の実施形態に係る画像処理装置の処理手順の一例を示すフローチャートである。
【００８８】
まず、ステップＳ１において、フィルター演算制御部１０６は、例えば、外部の操作入力手段等から入力されたフィルター演算処理の種類に係るフィルター演算処理情報を受信する。ここで、本実施形態では、このフィルター演算処理情報は、通常のフィルター演算処理（サブサンプリング比１のフィルター演算処理）に係る情報又は２対１のサブサンプリングフィルター演算処理（サブサンプリング比２のフィルター演算処理）に係る情報である。
【００８９】
続いて、ステップＳ２において、フィルター演算制御部１０６は、ステップＳ１で受信したフィルター演算処理情報に基づいて、画像メモリ読み出し制御部１０５に対して、画像メモリ１０１から複数の画素データを読み出す制御を行う。これにより、画像メモリ読み出し制御部１０５は、画像メモリ１０１から所定の複数の画素データをデータ供給部１０２に読み出す制御を行う。
【００９０】
続いて、ステップＳ３において、データ供給部１０２は、ステップＳ２で読み出された画素データを、各レジスタ１２０〜１２６に一時的に記憶する。
【００９１】
続いて、ステップＳ４において、フィルター演算制御部１０６は、ステップＳ１で受信したフィルター演算処理情報に基づいて、当該フィルター演算処理の種類を判断する。
【００９２】
ステップＳ４の判断の結果、フィルター演算処理の種類が通常のフィルター演算処理（サブサンプリング比１のフィルター演算処理）である場合には、ステップＳ５に進む。ステップＳ５に進むと、フィルター演算制御部１０６は、セレクタ１１０及び１１１に対して、第１のブロックに属するレジスタ（本実施形態では、レジスタ１２１及び１２３）の出力（画素データ）を選択する制御を行う。これにより、セレクタ１１０及び１１１は、それぞれ、第１のブロックに属するレジスタ１２１及び１２３の出力（画素データ）を選択する。
【００９３】
続いて、ステップＳ６において、データ供給部１０２は、第１のブロックに属するレジスタ（本実施形態では、レジスタ１２０、１２１、１２２及び１２３）の出力（画素データ）を各積和演算器１６０〜１６３に出力する。具体的に、データ供給部１０２は、第１のブロックに属するレジスタ１２０、１２１、１２２及び１２３の出力（画素データ）を、それぞれ、積和演算器１６０、１６１、１６２及び１６３に出力する。
【００９４】
一方、ステップＳ４の判断の結果、フィルター演算処理の種類が２対１のサブサンプリングフィルター演算処理（サブサンプリング比２のフィルター演算処理）である場合には、ステップＳ７に進む。ステップＳ７に進むと、フィルター演算制御部１０６は、セレクタ１１０及び１１１に対して、第２のブロックに属するレジスタ（本実施形態では、レジスタ１２４及び１２６）の出力（画素データ）を選択する制御を行う。これにより、セレクタ１１０及び１１１は、それぞれ、第１のブロックに属するレジスタ１２４及び１２６の出力（画素データ）を選択する。
【００９５】
続いて、ステップＳ８において、データ供給部１０２は、第２のブロックに属するレジスタ（本実施形態では、レジスタ１２０、１２２、１２４及び１２６）の出力（画素データ）を各積和演算器１６０〜１６３に出力する。具体的に、データ供給部１０２は、第２のブロックに属するレジスタ１２０、１２２、１２４及び１２６の出力（画素データ）を、それぞれ、積和演算器１６０、１６１、１６２及び１６３に出力する。
【００９６】
ステップＳ６又はステップＳ８の処理が終了すると、ステップＳ９に進む。ステップＳ９に進むと、まず、フィルター演算制御部１０６は、フィルター係数メモリ読出し制御部１０４に対して、フィルター係数メモリ１０３からフィルター演算処理の種類に応じたフィルター係数を読み出す制御を行う。これにより、フィルター係数メモリ読出し制御部１０４は、フィルター係数メモリ１０３からフィルター演算処理の種類に応じたフィルター係数を各積和演算器１６０〜１６３に読み出す制御を行う。次いで、フィルター演算制御部１０６は、各積和演算器１６０〜１６３に対して、読み出されたフィルター係数と、入力された画素データとを用いた演算処理を行わせる。
【００９７】
続いて、ステップＳ１０において、各積和演算器１６０〜１６３は、ステップＳ９による演算処理結果を外部装置に出力する。
【００９８】
その後、必要に応じて、ステップＳ２〜Ｓ１０の処理を繰り返すことにより、画像処理装置１００による画像処理方法の一連の処理が終了する。
【００９９】
以上詳細に説明したように、第１の実施形態の画像処理装置１００では、フィルター演算制御部１０６により、セレクタ１１０及び１１１における選択を制御するようにしている。これにより、積和演算器１６０〜１６３とデータ供給部１０２内のレジスタ１２０〜１２６との間の接続関係を変更することができる。これにより、第１の実施形態では、通常のフィルター演算処理を行うときも、２対１のサブサンプリングフィルター演算処理を行うときも、積和演算器１６０〜１６３において無駄な演算を行わないようにしている。
【０１００】
即ち、第１の実施形態の画像処理装置１００では、従来では、サブサンプリングフィルター演算処理を行うときに無駄に使用されていた積和演算器を有効活用することによって、サブサンプリングフィルター演算処理を効率よく行えるように構成されている。具体的に、従来例では、サブサンプリングフィルター演算処理を行う際に、間引かれる演算結果を算出するための画素データが供給されてしまう演算手段（図８の積和演算器５６１及び５６３）が存在していた。
これに対し、第１の実施形態では、演算手段（積和演算器１６０〜１６３）と記憶手段（レジスタ１２０〜１２６）との間に選択手段（セレクタ１１０及び１１１）を設けるようにした。これにより、間引かれない演算結果（つまり必要とされる演算結果）を算出するための画素データだけを演算手段に供給することを可能にしている。その結果、間引かれる演算結果を算出する演算手段がなくなり、サブサンプリングフィルター演算処理が効率よく行うことができる。
【０１０１】
なお、本実施形態では、演算手段に相当する積和演算器を４個設け、また、フィルターカーネル１０３ａを演算対象画像の画素データに対して１画素又は２画素ずらして走査させてフィルター演算処理を行う場合を示したが、これに限定されるわけではない。
以下に、演算手段に相当する積和演算器をＮ個設け、また、フィルターカーネル１０３ａを演算対象画像の画素データに対してＭ画素ずらして走査させてフィルター演算処理を行う場合について記載する。
【０１０２】
この場合、複数設けられたレジスタ（記憶手段）のうち、順次シフトする際の先頭のレジスタからＭ個ごとに存在するＮ個のレジスタが、１つのブロックに分類されることになる。また、この際、先頭のレジスタからＭ個ごとに存在するＮ個のレジスタの画素データがセレクタ（選択手段）により選択されて、各積和演算器に出力されることになる。
【０１０３】
（第２の実施形態）
以下に、本発明の第２の実施形態について説明を行う。
第１の実施形態の画像処理装置１００は、通常のフィルター演算処理と、２対１のサブサンプリングフィルター演算処理とが行えるものであった。第２の実施形態の画像処理装置２００は、通常のフィルター演算処理と、２対１のサブサンプリングフィルター演算処理と、４対１のサブサンプリングフィルター演算処理が行えるような構成になっている。つまり、第２の実施形態の画像処理装置２００では、サブサンプリング比が１、２及び４のフィルター演算処理を行えるものである。
【０１０４】
第２の実施形態における画像処理装置２００は、図１に示す第１の実施形態における画像処理装置１００の構成に対して、データ供給部１０２以外の構成は同じである。したがって、図５には、第２の実施形態のデータ供給部２０２を示し、このデータ供給部２０２以外の構成は、図１と同様であるため省略する。
【０１０５】
図５は、本発明の第２の実施形態に係る画像処理装置のデータ供給部の概略構成の一例を示すブロック図である。なお、図５のフィルター演算制御部２０６は、データ供給部２０２に対する制御信号以外については、図１に示すフィルター演算制御部１０６と同様である。
【０１０６】
図５において、データ供給部２０２は、パラレル出力可能なシフトレジスタ２１３（レジスタ２２０〜２３２で構成）と、セレクタ２１０、２１１及び２１２を有して構成されている。データ供給部２０２は、画像メモリ１０１から入力される画素データＤｘｙを、内蔵するレジスタ分（本実施形態では１５画素分）蓄積し、積和演算器１６０〜１６３にパラレル出力する。
【０１０７】
ここで、図５に示されているレジスタ２２０〜２３２に対して、第１の実施形態で説明した［レジスタのブロックへの分類］を適用する。本実施形態では、サブサンプリング比が１、２及び４の３種類なので、ブロックの数も３（便宜上、第１のブロック、第２のブロック及び第３のブロックと称する）となる。
【０１０８】
以下の表３に、レジスタ２２０〜２３２に関して、第１の実施形態で説明した［レジスタのブロックへの分類］を適用した結果を示す。
【０１０９】
【表３】
0005522893.tif 000006
【０１１０】
また、以下の表４に、レジスタ２２０〜２３２に関して、第１の実施形態で説明した［レジスタと積和演算器との対応付け１］を行い、さらに、どのブロックにも分類されないレジスタ２２５及び２２９を除いた結果を示す。
【０１１１】
【表４】
0005522893.tif 000007
【０１１２】
この表４から、以下のようにレジスタ２２０〜２３２の出力の接続形態が決定される（図５参照）。
１．積和演算器に対して対応しているレジスタが１つしかなければ、そのレジスタの出力は対応する積和演算器に直接接続される（レジスタ２２０）。
２．積和演算器に対応しているレジスタが複数あれば、それらのレジスタの出力は、対応する積和演算器に、セレクタを介して接続される（レジスタ２２１、２２４、２２２、２２８、２２３、２２６及び２３２）。
【０１１３】
以上のような規則に基づいて、レジスタ２２０〜２３２と積和演算器１６０〜１６３の間の接続形態が決定される（図５参照）。具体的に、第１のブロックに属するレジスタ２２１の出力並びに第２及び第３のブロックに属するレジスタ２２４の出力は、セレクタ２１０に入力され、セレクタ１１０で選択された出力が積和演算器１６１に入力される。また、第１及び第２のブロックに属するレジスタ２２２の出力並びに第３のブロックに属するレジスタ２２８の出力は、セレクタ２１１に入力され、セレクタ２１１で選択された出力が積和演算器１６２に入力される。また、第１のブロックに属するレジスタ２２３の出力、第２のブロックに属するレジスタ２２６の出力及び第３のブロックに属するレジスタ２３２の出力は、セレクタ２１２に入力され、セレクタ２１２で選択された出力が積和演算器１６３に入力される。
【０１１４】
フィルター演算制御部２０６は、図１に示すフィルター係数メモリ読出し制御部１０４、画像メモリ読出し制御部１０５及び積和演算器１６０〜１６３、並びに、図５に示すセレクタ２１０〜２１２に制御信号を出力する。そして、フィルター演算制御部２０６は、第２の実施形態に係る画像処理装置２００のフィルター演算に係る処理を統括的に制御する。具体的には、以下に示す制御を行う。
【０１１５】
まず、フィルター演算制御部２０６は、セレクタ２１０、２１１及び２１２に対して、以下に示すような制御信号を出力する。
１．通常のフィルター演算（サブサンプリング比１のフィルター演算）を行う場合は、セレクタ２１０〜２１２の出力として、第１のブロックに属するレジスタ（レジスタ２２１、２２２、２２３）の出力が選択されるように制御信号を出力する。
２．２対１のサブサンプリングフィルター演算（サブサンプリング比２のフィルター演算）を行う場合は、セレクタ２１０〜２１２の出力として、第２のブロックに属するレジスタ（レジスタ２２４、２２２、２２６）の出力が選択されるように制御信号を出力する。
３．４対１のサブサンプリングフィルター演算（サブサンプリング比４のフィルター演算）を行う場合は、セレクタ２１０〜２１２の出力として、第３のブロックに属するレジスタ（レジスタ２２４、２２８、２３２）の出力が選択されるように制御信号を出力する。
【０１１６】
また、フィルター演算制御部２０６は、画像メモリ読み出し制御部１０５に対して、以下に示すような制御信号を出力する。
１．通常のフィルター演算（サブサンプリング比１のフィルター演算）を行う場合は、画像メモリ１０１から水平方向に、「並列度＋フィルターカーネルの水平方向サイズ−１」個の演算対象画素を読み出し、次の行から再度「並列度＋フィルターカーネルの水平方向サイズ−１」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部１０５に対して出力する。本実施形態では、水平方向に、４＋３−１＝６個の演算対象画素を読み出すことを３回繰り返すことになる。
２．２対１のサブサンプリングフィルター演算（サブサンプリング比２のフィルター演算）を行う場合は、画像メモリ１０１から水平方向に、「２×並列度＋フィルターカーネルの水平方向サイズ−２」個の演算対象画素を読み出し、次の行から再度「２×並列度＋フィルターカーネルの水平方向サイズ−２」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部１０５に対して出力する。本実施形態では、水平方向に、２×４＋３−２＝９個の演算対象画素を読み出すことを３回繰り返すことになる。
３．４対１のサブサンプリングフィルター演算（サブサンプリング比４のフィルター演算）を行う場合は、画像メモリ１０１から水平方向に、「４×並列度＋フィルターカーネルの水平方向サイズ−４」個の演算対象画素を読み出し、次の行から再度「４×並列度＋フィルターカーネルの水平方向サイズ−４」個の演算対象画素を読み出すことをフィルターカーネルの垂直方向サイズ回数繰り返す旨の制御信号を、画像メモリ読み出し制御部１０５に対して出力する。本実施形態では、水平方向に、４×４＋３−４＝１５個の演算対象画素を読み出すことを３回繰り返すことになる。
【０１１７】
また、フィルター演算制御部２０６は、フィルター係数メモリ１０３に対してフィルター係数メモリ読出し制御部１０４を介して読み出すタイミングを指示し、積和演算器１６０〜１６３に対して積和演算を行うタイミングの指示を行う。
【０１１８】
次に、画像処理装置２００による画像処理方法の一連の処理手順について説明する。
図６は、本発明の第２の実施形態に係る画像処理装置の処理手順の一例を示すフローチャートである。
【０１１９】
まず、ステップＳ２１において、フィルター演算制御部２０６は、例えば、外部の操作入力手段等から入力されたフィルター演算処理の種類に係るフィルター演算処理情報を受信する。ここで、本実施形態では、このフィルター演算処理情報は、通常のフィルター演算処理に係る情報、２対１のサブサンプリングフィルター演算処理に係る情報又は４対１のサブサンプリングフィルター演算処理に係る情報である。
【０１２０】
続いて、ステップＳ２２において、フィルター演算制御部２０６は、ステップＳ２１で受信したフィルター演算処理情報に基づいて、画像メモリ読み出し制御部１０５に対して、画像メモリ１０１から複数の画素データを読み出す制御を行う。これにより、画像メモリ読み出し制御部１０５は、画像メモリ１０１から所定の複数の画素データをデータ供給部２０２に読み出す制御を行う。
【０１２１】
続いて、ステップＳ２３において、データ供給部２０２は、ステップＳ２２で読み出された画素データを、各レジスタ２２０〜２３２に一時的に記憶する。
【０１２２】
続いて、ステップＳ２４において、フィルター演算制御部２０６は、ステップＳ２１で受信したフィルター演算処理情報に基づいて、当該フィルター演算処理の種類を判断する。
【０１２３】
ステップＳ２４の判断の結果、フィルター演算処理の種類が通常のフィルター演算処理（サブサンプリング比１のフィルター演算処理）である場合には、ステップＳ２５に進む。ステップＳ２５に進むと、フィルター演算制御部２０６は、セレクタ２１０〜２１２に対して、第１のブロックに属するレジスタ（本実施形態では、レジスタ２２１〜２２３）の出力（画素データ）を選択する制御を行う。これにより、セレクタ２１０〜２１２は、それぞれ、第１のブロックに属するレジスタ２２１〜２２３の出力（画素データ）を選択する。
【０１２４】
続いて、ステップＳ２６において、データ供給部２０２は、第１のブロックに属するレジスタ（本実施形態では、レジスタ２２０〜２２３）の出力（画素データ）を各積和演算器１６０〜１６３に出力する。具体的に、データ供給部２０２は、第１のブロックに属するレジスタ２２０、２２１、２２２及び２２３の出力（画素データ）を、それぞれ、積和演算器１６０、１６１、１６２及び１６３に出力する。
【０１２５】
また、ステップＳ２４の判断の結果、フィルター演算処理の種類が２対１のサブサンプリングフィルター演算処理（サブサンプリング比２のフィルター演算処理）である場合には、ステップＳ２７に進む。ステップＳ２７に進むと、フィルター演算制御部２０６は、セレクタ２１０〜２１２に対して、第２のブロックに属するレジスタ（本実施形態では、レジスタ２２４、２２２及び２２６）の出力（画素データ）を選択する制御を行う。これにより、セレクタ２１０〜２１２は、それぞれ、第１のブロックに属するレジスタ２２４、２２２及び２２６の出力（画素データ）を選択する。
【０１２６】
続いて、ステップＳ８において、データ供給部２０２は、第２のブロックに属するレジスタ（本実施形態では、レジスタ２２０、２２４、２２２及び２２６）の出力（画素データ）を各積和演算器１６０〜１６３に出力する。具体的に、データ供給部２０２は、第２のブロックに属するレジスタ２２０、２２４、２２２及び２２６の出力（画素データ）を、それぞれ、積和演算器１６０、１６１、１６２及び１６３に出力する。
【０１２７】
また、ステップＳ２４の判断の結果、フィルター演算処理の種類が４対１のサブサンプリングフィルター演算処理（サブサンプリング比４のフィルター演算処理）である場合には、ステップＳ２９に進む。ステップＳ２９に進むと、フィルター演算制御部２０６は、セレクタ２１０〜２１２に対して、第３のブロックに属するレジスタ（本実施形態では、レジスタ２２４、２２８及び２３２）の出力（画素データ）を選択する制御を行う。これにより、セレクタ２１０〜２１２は、それぞれ、第１のブロックに属するレジスタ２２４、２２８及び２３２の出力（画素データ）を選択する。
【０１２８】
続いて、ステップＳ３０において、データ供給部２０２は、第３のブロックに属するレジスタ（本実施形態では、レジスタ２２０、２２４、２２８及び２３２）の出力（画素データ）を各積和演算器１６０〜１６３に出力する。具体的に、データ供給部２０２は、第３のブロックに属するレジスタ２２０、２２４、２２８及び２３２の出力（画素データ）を、それぞれ、積和演算器１６０、１６１、１６２及び１６３に出力する。
【０１２９】
ステップＳ２６、ステップＳ２８又はステップＳ３０の処理が終了すると、ステップＳ３１に進む。ステップＳ３１に進むと、まず、フィルター演算制御部２０６は、フィルター係数メモリ読出し制御部１０４に対して、フィルター係数メモリ１０３からフィルター演算処理の種類に応じたフィルター係数を読み出す制御を行う。これにより、フィルター係数メモリ読出し制御部１０４は、フィルター係数メモリ１０３からフィルター演算処理の種類に応じたフィルター係数を各積和演算器１６０〜１６３に読み出す制御を行う。次いで、フィルター演算制御部２０６は、各積和演算器１６０〜１６３に対して、読み出されたフィルター係数と、入力された画素データとを用いた演算処理を行わせる。
【０１３０】
続いて、ステップＳ３２において、各積和演算器１６０〜１６３は、ステップＳ３１による演算処理結果を外部装置に出力する。
【０１３１】
その後、必要に応じて、ステップＳ２２〜Ｓ３２の処理を繰り返すことにより、画像処理装置２００による画像処理方法の一連の処理が終了する。
【０１３２】
以上詳細に説明したように、第２の実施形態の画像処理装置２００では、フィルター演算制御部２０６により、セレクタ２１０〜２１２における選択を制御するようにしている。これにより、第２の実施形態では、通常のフィルター演算処理、２対１のサブサンプリングフィルター演算処理及び４対１のサブサンプリングフィルター演算処理が同一の回路で行え、かつ、積和演算器１６０〜１６３において無駄な演算を行わないようにしている。
【０１３３】
（第３の実施形態）
以下に、本発明の第３の実施形態について説明を行う。
第１の実施形態の画像処理装置１００では、積和演算器１６０〜１６３からのフィルター演算結果の出力順序が、通常のフィルター演算処理の場合とサブサンプリングフィルター演算処理とで変化する（異なる）ものであった。具体的に、通常のフィルター演算処理の場合には、各積和演算器１６０、１６１、１６２、１６３から、Ｒ１１、Ｒ２１、Ｒ３１、Ｒ４１の順でフィルター演算結果が出力される。一方、２対１のサブサンプリングフィルター演算処理の場合には、各積和演算器１６０、１６１、１６２、１６３から、Ｒ１１、Ｒ５１、Ｒ３１、Ｒ７１の順でフィルター演算結果が出力される。
【０１３４】
第３の実施形態では、通常のフィルター演算処理と、２対１のサブサンプリングフィルター演算処理を行うのに際して、積和演算器からのフィルター演算結果の出力順序が、これらの演算処理において変化しない（同じとなる）ことを実現する形態である。その上で、セレクタによる選択肢の組み合わせと選択結果をどの積和演算器に入力するのかを決定する際の処理について説明する。
【０１３５】
第３の実施形態における画像処理装置３００は、図１に示す第１の実施形態における画像処理装置１００の構成に対して、データ供給部３０２以外の構成は同じである。したがって、図７には、第３の実施形態のデータ供給部３０２を示し、このデータ供給部３０２以外の構成は、図１と同様であるため省略する。
【０１３６】
図７は、本発明の第３の実施形態に係る画像処理装置のデータ供給部の概略構成の一例を示すブロック図である。なお、図７のフィルター演算制御部３０６は、データ供給部３０２に対する制御信号以外については、図１に示すフィルター演算制御部１０６と同様である。
【０１３７】
図７において、データ供給部３０２は、パラレル出力可能なシフトレジスタ３１３（レジスタ３２０〜３２６で構成）と、セレクタ３１０、３１１及び３１２を有して構成されている。データ供給部３０２は、画像メモリ１０１から入力される画素Ｄｘｙを、内蔵するレジスタ分（本実施形態では７画素分）蓄積し、積和演算器１６０〜１６３にパラレル出力する。
【０１３８】
ここで、図７に示されているレジスタ３２０〜３２６に対して、第１の実施形態で説明した［レジスタのブロックへの分類］を適用する。本実施形態では、第１の実施形態と同様に、サブサンプリング比が１及び２の２種類なので、ブロックの数も２（便宜上、第１のブロックと第２のブロックと称する）となる。
【０１３９】
以下の表５に、レジスタ３２０〜３２６に関して、第１の実施形態で説明した［レジスタのブロックへの分類］を適用した結果を示す（基本的には、表１と同じ形態となる）。
【０１４０】
【表５】
0005522893.tif 000008
【０１４１】
また、第３の実施形態では、積和演算器１６０〜１６３からのフィルター演算結果の出力順序が、通常のフィルター演算処理の場合とサブサンプリングフィルター演算処理とで変化しないことを優先するため、以下に示す対応付けを行う。具体的には、以下に示す［レジスタと積和演算器との対応付け２］に従って、積和演算器１６０〜１６３のいずれか、或いはそれ以外に対応付けられる。
【０１４２】
［レジスタと積和演算器との対応付け２］
シフトレジスタ３１３のレジスタのうち、第１ブロックに属する最初の並列度（本実施形態では４）数個のレジスタは、順（３２０、３２１、３２２、３２３の順）に、積和演算器の順（１６０、１６１、１６２、１６３の順）に対応付けられる。
シフトレジスタ３１３のレジスタのうち、第２ブロックに属する最初の並列度（本実施形態では４）数個のレジスタは、順（３２０、３２２、３２４、３２６の順）に、積和演算器の順（１６０、１６１、１６２、１６３の順）に対応付けられる。
【０１４３】
以下の表６に、レジスタ３２０〜３２６に関して、［レジスタと積和演算器との対応付け２］を行い、さらに、どのブロックにも分類されないレジスタ３２５を除いた結果を示す。
【０１４４】
【表６】
0005522893.tif 000009
【０１４５】
この表６から、以下のようにレジスタ３２０〜３２６の出力の接続形態が決定される。
１．和演算器に対して対応しているレジスタが１つしかなければ、そのレジスタの出力は対応する積和演算器に直接接続される（レジスタ３２０）。
２．積和演算器に対応しているレジスタが複数あれば、それらのレジスタの出力は、対応する積和演算器に、セレクタを介して接続される（レジスタ３２１、３２２、３２４、３２３、３２６）。
【０１４６】
以上のような規則に基づいて、レジスタ３２０〜３２６と積和演算器１６０〜１６３の間の接続形態が決定される（図７参照）。具体的に、第１のブロックに属するレジスタ３２１の出力及び第２のブロックに属するレジスタ３２２の出力は、セレクタ３１０に入力され、セレクタ３１０で選択された出力が積和演算器１６１に入力される。また、第１のブロックに属するレジスタ３２２の出力及び第２のブロックに属するレジスタ３２４の出力は、セレクタ３１１に入力され、セレクタ３１１で選択された出力が積和演算器１６２に入力される。また、第１のブロックに属するレジスタ３２３の出力及び第２のブロックに属するレジスタ３２６の出力は、セレクタ３１２に入力され、セレクタ３１２で選択された出力が積和演算器１６３に入力される。
【０１４７】
フィルター演算制御部３０６は、セレクタ３１０、３１１及び３１２に対して、以下に示すような制御信号を出力する。
１．通常のフィルター演算（サブサンプリング比１のフィルター演算）を行う場合は、セレクタ３１０〜３１２の出力として、第１のブロックに属するレジスタ（レジスタ３２１、３２２、３２３）の出力が選択されるように制御信号を出力する。
２．２対１のサブサンプリングフィルター演算（サブサンプリング比２のフィルター演算）を行う場合は、セレクタ３１０〜３１２の出力として、第２のブロックに属するレジスタ（レジスタ３２２、３２４、３２６）の出力が選択されるように制御信号を出力する。
【０１４８】
本実施形態で通常のフィルター演算を行う場合は、第１の実施形態と同じく、積和演算器１６０からフィルター演算結果Ｒ１１が出力される。同様に、積和演算器１６１からフィルター演算結果Ｒ２１が出力され、積和演算器１６２からフィルター演算結果Ｒ３１が出力され、積和演算器１６３からフィルター演算結果Ｒ４１が出力される。
【０１４９】
また、サブサンプリングフィルター演算を行う場合は、まず、積和演算器１６０からフィルター演算結果Ｒ１１が出力される。さらに、積和演算器１６１からフィルター演算結果Ｒ３１が出力され、積和演算器１６２からフィルター演算結果Ｒ５１が出力され、積和演算器１６３からフィルター演算結果Ｒ７１が出力される。
【０１５０】
なお、第３の実施形態の画像処理装置３００による画像処理方法の一連の処理手順については、図４に示す第１の実施形態の画像処理装置１００による画像処理方法の一連の処理手順と同様である。
【０１５１】
以上詳細に説明したように、第３の実施形態の画像処理装置３００では、積和演算器からのフィルター演算結果の出力順序が、通常のフィルター演算処理の場合とサブサンプリングフィルター演算処理とで変化しない（同じとなる）ようになっている。これにより、第３の実施形態では、第１の実施形態における効果に加えて、積和演算器の後続の制御において、扱いが容易になる利点がある。
【０１５２】
前述した各実施形態に係る画像処理装置を構成する図１、図５及び図７の各構成部、並びに画像処理方法を示す図４及び図６の各ステップは、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び当該プログラムを記録したコンピュータ読み取り可能な記憶媒体は本発明に含まれる。
【０１５３】
具体的に、前記プログラムは、例えばＣＤ−ＲＯＭのような記憶媒体に記録し、或いは各種伝送媒体を介し、コンピュータに提供される。前記プログラムを記録する記憶媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。他方、前記プログラムの伝送媒体としては、プログラム情報を搬送波として伝搬させて供給するためのコンピュータネットワーク（ＬＡＮ、インターネットの等のＷＡＮ、無線通信ネットワーク等）システムにおける通信媒体を用いることができる。また、この際の通信媒体としては、光ファイバ等の有線回線や無線回線などが挙げられる。
【０１５４】
また、本発明は、コンピュータが供給されたプログラムを実行することにより各実施形態に係る画像処理装置の機能が実現される態様に限られない。そのプログラムがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）或いは他のアプリケーションソフト等と共同して各実施形態に係る画像処理装置の機能が実現される場合も、かかるプログラムは本発明に含まれる。また、供給されたプログラムの処理の全て、或いは一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて各実施形態に係る画像処理装置の機能が実現される場合も、かかるプログラムは本発明に含まれる。
【０１５５】
また、前述した本実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【０１５６】
【図１】本発明の第１の実施形態に係る画像処理装置の概略構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態に係る画像処理装置において、通常のフィルター演算処理を行った場合の動作の一例を示すタイムチャートである。
【図３】本発明の第１の実施形態に係る画像処理装置において、サブサンプリングフィルター演算処理を行った場合の動作の一例を示すタイムチャートである。
【図４】本発明の第１の実施形態に係る画像処理装置の処理手順の一例を示すフローチャートである。
【図５】本発明の第２の実施形態に係る画像処理装置のデータ供給部の概略構成の一例を示すブロック図である。
【図６】本発明の第２の実施形態に係る画像処理装置の処理手順の一例を示すフローチャートである。
【図７】本発明の第３の実施形態に係る画像処理装置のデータ供給部の概略構成の一例を示すブロック図である。
【図８】従来例を示し、画像データに対して２次元フィルターの演算を行う演算装置（画像処理装置）の構成の一例を示すブロック図である。
【図９】図８に示す演算装置を用いてフィルター演算処理を行う場合の入力画像（演算対象画像）、フィルターカーネル、及び、演算出力画像（演算結果画像）を示す模式図である。
【図１０】図９に示す画像等を用いて、図８の演算装置を動作させたときのタイムチャートである。
【図１１】従来例を示し、２対１のサブサンプリングフィルター演算出力画像の一例を示す模式図である。
【符号の説明】
【０１５７】
１００  画像処理装置
１０１  画像メモリ
１０２  データ供給部（データ供給手段）
１０３  フィルター係数メモリ
１０３ａ  フィルターカーネル
１０４  フィルター係数メモリ読出し制御部
１０５  画像メモリ読出し制御部
１０６  フィルター演算制御部
１１０、１１１  セレクタ（選択手段）
１１２  シフトレジスタ
１２０〜１２６  レジスタ（記憶手段）
１３０〜１３３  乗算器
１４０〜１４３  加算器
１５０〜１５３  レジスタ
１６０〜１６３  積和演算器（演算手段）
【図１】
0005522893.tif 000010
【図２】
0005522893.tif 000011
【図３】
0005522893.tif 000012
【図４】
0005522893.tif 000013
【図５】
0005522893.tif 000014
【図６】
0005522893.tif 000015
【図７】
0005522893.tif 000016
【図８】
0005522893.tif 000017
【図９】
0005522893.tif 000018
【図１０】
0005522893.tif 000019
【図１１】
0005522893.tif 000020