(57)【要約】【課題】回路規模が増大することなく、所望の画像処理の演算に柔軟に変更することができる画像処理回路を備えた画像処理装置を提供する。【解決手段】画像データに対してソフトウエアに応じた演算処理を行う１つ以上のプロセッサと、画像データに対して予め定めた演算処理を行う１つ以上のハードウェアアクセラレータと、それぞれの演算処理において用いる画像データを一時的に記憶するメモリ部と、メモリ部への画像データの書き込みおよび読み出しを制御するバッファ制御部と、を備え、メモリ部の記憶領域は、少なくとも、プロセッサの数とハードウェアアクセラレータの数との合計の数−１個のバッファ領域に、物理的に分割され、バッファ制御部は、プロセッサおよびハードウェアアクセラレータのそれぞれからのアクセスに応じて、分割されたそれぞれのバッファ領域の内、対応するバッファ領域に対する画像データの書き込みおよび読み出しを制御する。【選択図】図１
2013239120.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対してソフトウエアに応じた演算処理を行う１つ以上のプロセッサと、
前記画像データに対して予め定めた演算処理を行う１つ以上のハードウェアアクセラレータと、
前記プロセッサおよび前記ハードウェアアクセラレータが、それぞれの演算処理において用いる前記画像データを一時的に記憶するメモリ部と、
前記メモリ部への前記画像データの書き込み、および前記メモリ部からの前記画像データの読み出しを制御するバッファ制御部と、
を備え、
前記メモリ部の記憶領域は、
少なくとも、前記プロセッサの数と前記ハードウェアアクセラレータの数との合計の数−１個のバッファ領域に、物理的に分割され、
前記バッファ制御部は、
前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれからのアクセスに応じて、分割されたそれぞれの前記バッファ領域の内、対応する前記バッファ領域に対する前記画像データの書き込みおよび読み出しを制御する、
ことを特徴とする画像処理装置。
【請求項２】
前記バッファ制御部は、
前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれが演算処理を実行する際に用いる画像データのデータ幅、演算処理においてアクセスするライン数、および演算処理に使用するバッファの段数に基づいて、前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれに対応する前記バッファ領域に含まれる記憶領域に対する前記画像データの書き込みおよび読み出しを制御する、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記ハードウェアアクセラレータは、
ｎ（ｎは３以上の自然数）チャンネルの前記画像データと、ｎ個の乗算係数が入力され、
少なくとも１つの前記チャンネルに入力された前記画像データを順次遅延させた遅延データを出力する、少なくともｎ−１個の遅延素子と、
入力されたデータに対して、対応する乗算係数での乗算を行うｎ個の乗算器と、
入力されたそれぞれの前記チャンネルの前記画像データ、またはそれぞれの前記遅延素子によって遅延されたそれぞれの前記遅延データのいずれか一方のデータを選択し、該選択したそれぞれのデータを、対応する前記乗算器のそれぞれに出力するデータセレクタと、
前記乗算器のそれぞれから出力された乗算結果を加算する、ｎ−１個、または前記遅延素子の個数のいずれか大きい方の数と同数の加算器と、
を備え、
該ハードウェアアクセラレータは、
全ての前記加算器が対応する前記乗算結果を加算した最終的な加算結果を、演算処理の結果として出力する、
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記ハードウェアアクセラレータは、
画像の透明度を表す１．０よりも小さい透明度係数が入力され、
前記透明度係数に基づいて、画像の透明でない状態を表す透明度係数から、前記透明度係数を減算し、該減算した結果を逆透明度係数として出力する減算器と、
入力されたいずれか１つの前記乗算係数、または前記逆透明度係数のいずれか一方の係数を選択し、該選択した係数を、該乗算係数に対応するいずれか１つの前記乗算器に出力する第１の係数セレクタと、
入力された他のいずれか１つの前記乗算係数、または前記透明度係数のいずれか一方の係数を選択し、該選択した係数を、該他の乗算係数に対応する他のいずれか１つの前記乗算器に出力する第２の係数セレクタと、
をさらに備える、
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記ハードウェアアクセラレータは、
少なくとも１つの前記乗算器に対応し、該乗算器が出力する乗算結果が予め定めた値よりも大きな値にならないように抑圧し、該抑圧した結果を抑圧乗算結果として出力するクリップ回路と、
抑圧前の前記乗算結果、または抑圧後の前記抑圧乗算結果のいずれか一方の乗算結果を選択し、該選択した乗算結果を、対応する前記加算器に出力する乗算結果セレクタと、
をさらに備える、
ことを特徴とする請求項３または請求項４に記載の画像処理装置。
【請求項６】
前記ハードウェアアクセラレータは、
少なくとも１つの前記チャンネルに入力された前記画像データの数をカウントするカウンタと、
前記カウンタがカウントした入力された前記画像データの数と、予め定めたカウント値とを比較し、該比較した結果である比較結果を出力する比較器と、
前記比較結果に基づいて、現在入力された前記画像データが有効なデータであるか否か表す有効フラグの値を選択し、該選択した前記有効フラグの値を出力する有効フラグセレクタと、
前記有効フラグの値を、現在入力された前記画像データに付加する有効フラグ付加回路と、
をさらに備え、
前記有効フラグ付加回路は、
前記有効フラグの値を付加した有効フラグ付きの画像データ、または前記有効フラグの値を付加していない現在入力された前記画像データのいずれか一方の前記画像データを出力し、
前記データセレクタは、
入力されたそれぞれの前記チャンネルの前記画像データ、または  前記有効フラグ付加回路をから出力された画像データのいずれか一方のデータを選択して、対応する前記乗算器のそれぞれに出力する、
ことを特徴とする請求項３から請求項５のいずれか１の項に記載の画像処理装置。
【請求項７】
前記有効フラグ付加回路は、さらに、
それぞれの前記遅延素子によって遅延されたそれぞれの前記遅延データに付加する、
ことを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記ハードウェアアクセラレータは、
前記乗算器のそれぞれから出力された乗算結果、または前記データセレクタが選択したそれぞれのデータのいずれか一方のデータを選択し、該選択したそれぞれのデータを、対応する前記加算器のそれぞれに出力する第２のデータセレクタ、
をさらに備え、
前記加算器のそれぞれは、
前記第２のデータセレクタから出力された対応する前記データを加算し、
該ハードウェアアクセラレータは、
全ての前記加算器が対応する前記データを加算した最終的な加算結果を、演算処理の結果として出力する、
ことを特徴とする請求項３から請求項７のいずれか１の項に記載の画像処理装置。
【請求項９】
前記ハードウェアアクセラレータは、
前記最終的な加算結果を、該ハードウェアアクセラレータに入力された前記画像データの数で除算する除算器と、
前記最終的な加算結果、または前記除算器から出力された除算結果のいずれか一方の結果を選択し、該選択した結果を、該ハードウェアアクセラレータの演算処理の結果として出力する出力セレクタと、
をさらに備える、
ことを特徴とする請求項３から請求項８のいずれか１の項に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関する。特に、画像処理装置における演算器の量の削減に関する。
【背景技術】
【０００２】
一般的に、ＣＰＵで処理すると処理時間がかかる処理は、専用の処理回路で実行する方法がとられることがある。例えば、浮動小数点演算を行う場合、図１３（ａ）に示したように、専用の浮動小数点演算回路（ＦＰＵ）に浮動小数点演算を実行させる。しかし、ＣＰＵが浮動小数点演算回路に対して演算の実行命令を発行すると、浮動小数点演算回路が演算を実行している間、ＣＰＵは他の処理を行うことができない。つまり、ＣＰＵと浮動小数点演算回路とが同時（並列）に動作することができない。
【０００３】
そこで、画像処理装置では、図１３（ｂ）に示したように、ＣＰＵおよび画像処理回路のそれぞれをバスに接続し、同様にバスに接続されているフレームメモリを利用して、ＣＰＵで処理すると処理時間がかかる画像処理を、専用の画像処理回路で実行させている。例えば、ＣＰＵが画像処理を画像処理回路に実行させる場合、まず、ＣＰＵが画像処理を行う画像データを一旦フレームメモリに記憶させる。そして、画像処理回路は、フレームメモリに記憶された画像データを読み出し、読み出した画像データに対して予め定めた画像処理を実行した後、画像処理した後の画像データを再びフレームメモリに記憶させる。その後、ＣＰＵが、フレームメモリに記憶されている画像処理後の画像データを取得する。このように、フレームメモリを利用して専用の画像処理回路に画像処理を実行させることにより、ＣＰＵは、画像処理回路が処理を実行している間に他の処理を実行する、つまり、ＣＰＵと画像処理回路とが同時に他の処理を実行することができる。
【０００４】
しかしながら、図１３（ｂ）に示した構成の場合であっても、画像処理回路は、予め定めた画像処理を実行するのみである。すなわち、画像処理回路が処理する機能は固定されている。このため、複数の画像処理を行う画像処理装置では、図１４に示したように、それぞれの機能を実現する専用の画像処理回路を同時に備えた構成にする必要があった。図１４には、２つの専用の画像処理回路（２次元のＦＩＲフィルタ（２ＤＦＩＲ））回路および行列積演算回路）を備えた画像処理装置の一例を示している。このような構成にすることによって、それぞれの画像処理回路が処理を実行している間に、ＣＰＵが他の処理を実行することができる。
【０００５】
ところが、図１４に示した画像処理装置において２つの画像処理回路は、それぞれ排他的に処理を行う場合、いずれか一方の画像処理回路が、常に処理を実行していない状態になる。一般的に、それぞれの画像処理回路は、同じＬＳＩ内に配置されていることが多い。このため、機能毎に画像処理回路を備えることによるＬＳＩの回路面積の増大や、リーク電流の増加などが、画像処理装置の問題として挙がってくる。また、ＬＳＩ内に配置した画像処理回路の機能と異なる処理を画像処理装置で実行する場合には、ＣＰＵの処理によって対応する、または新たにＬＳＩを開発することが必要であった。
【０００６】
このような問題を解決するための技術として、例えば、特許文献１のように、画像処理の演算をそれぞれの演算要素に分け、それぞれの演算要素を組み合わせることによって、所望の画像処理演算を実現する画像処理装置が開示されている。特許文献１で開示された画像処理装置では、それぞれの演算要素を実行する部分積生成器や加減算器をセレクタで接続し、（Ａ＋Ｂ）×Ｃ＋ＢやＡ＋Ｂ＋Ｃなどの異なる演算を行うことができる再構成可能な演算ユニットを複数備えている。そして、特許文献１で開示された画像処理装置では、一定以上の粒度の画像処理を行う場合に、それぞれの演算ユニット同士の接続をクロスバー回路で繋ぎ替えることによって、所望の演算処理を実現する演算ユニットの組み合わせに変更している。
【０００７】
これにより、特許文献１で開示された画像処理装置では、演算ユニットの組み合わせを変更することによって、画像処理装置が必要とする画像処理演算を行う画像処理回路を構築することができる。また、特許文献１で開示された画像処理装置では、排他的に動作する画像処理回路を、その画像処理回路が動作するときだけ構築することができ、常に処理を実行していない画像処理回路を、ＬＳＩ内に配置しておく必要がなくなる。
【０００８】
また、例えば、特許文献２で開示された技術のように、特定の機能に絞った演算を行う数学エンジン（特許文献１でいう演算ユニット）も開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−１４５８３８号公報
【特許文献２】特許第４２６３６９３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１で開示された技術では、演算ユニットが実行する演算処理の単位が小さく、１つの画像処理回路を構築するためにより多くの演算ユニットを必要とする。例えば、３タップの２次元のＦＩＲフィルタ処理を実行する場合、演算ユニットの数が、最低でも１７個必要であり、ＦＩＲフィルタの係数の桁数によっては、さらに、複数の部分積の加算が必要である。つまり、（１７＋（９×２））×Ｎ（Ｎは乗算１回に必要な部分積の数）個の演算ユニットが必要である。このため、特許文献１で開示された技術では、画像処理を実現する際のクロスバー回路による繋ぎ替えの制御が煩雑になるばかりでなく、様々な画像処理回路の構築に対応するためのクロスバー回路そのものが大きな回路となってしまう、という問題がある。
【００１１】
また、特許文献２で開示された数学エンジンは、特定の機能に絞った演算を行う構成であるため、回路規模を低減することができるが、画像処理装置が必要とする、例えば、ＦＦＴ処理に適用することができない。
【００１２】
本発明は、上記の課題認識に基づいてなされたものであり、回路規模が増大することなく、所望の画像処理の演算に柔軟に変更することができる画像処理回路を備えた画像処理装置を提供することを目的としている。
【課題を解決するための手段】
【００１３】
上記の課題を解決するため、本発明の画像処理装置は、画像データに対してソフトウエアに応じた演算処理を行う１つ以上のプロセッサと、前記画像データに対して予め定めた演算処理を行う１つ以上のハードウェアアクセラレータと、前記プロセッサおよび前記ハードウェアアクセラレータが、それぞれの演算処理において用いる前記画像データを一時的に記憶するメモリ部と、前記メモリ部への前記画像データの書き込み、および前記メモリ部からの前記画像データの読み出しを制御するバッファ制御部と、を備え、前記メモリ部の記憶領域は、少なくとも、前記プロセッサの数と前記ハードウェアアクセラレータの数との合計の数−１個のバッファ領域に、物理的に分割され、前記バッファ制御部は、前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれからのアクセスに応じて、分割されたそれぞれの前記バッファ領域の内、対応する前記バッファ領域に対する前記画像データの書き込みおよび読み出しを制御する、ことを特徴とする。
【００１４】
また、本発明の前記バッファ制御部は、前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれが演算処理を実行する際に用いる画像データのデータ幅、演算処理においてアクセスするライン数、および演算処理に使用するバッファの段数に基づいて、前記プロセッサおよび前記ハードウェアアクセラレータのそれぞれに対応する前記バッファ領域に含まれる記憶領域に対する前記画像データの書き込みおよび読み出しを制御する、ことを特徴とする。
【００１５】
また、本発明の前記ハードウェアアクセラレータは、ｎ（ｎは３以上の自然数）チャンネルの前記画像データと、ｎ個の乗算係数が入力され、少なくとも１つの前記チャンネルに入力された前記画像データを順次遅延させた遅延データを出力する、少なくともｎ−１個の遅延素子と、入力されたデータに対して、対応する乗算係数での乗算を行うｎ個の乗算器と、入力されたそれぞれの前記チャンネルの前記画像データ、またはそれぞれの前記遅延素子によって遅延されたそれぞれの前記遅延データのいずれか一方のデータを選択し、該選択したそれぞれのデータを、対応する前記乗算器のそれぞれに出力するデータセレクタと、前記乗算器のそれぞれから出力された乗算結果を加算する、ｎ−１個、または前記遅延素子の個数のいずれか大きい方の数と同数の加算器と、を備え、該ハードウェアアクセラレータは、全ての前記加算器が対応する前記乗算結果を加算した最終的な加算結果を、演算処理の結果として出力する、ことを特徴とする。
【００１６】
また、本発明の前記ハードウェアアクセラレータは、画像の透明度を表す１．０よりも小さい透明度係数が入力され、前記透明度係数に基づいて、画像の透明でない状態を表す透明度係数から、前記透明度係数を減算し、該減算した結果を逆透明度係数として出力する減算器と、入力されたいずれか１つの前記乗算係数、または前記逆透明度係数のいずれか一方の係数を選択し、該選択した係数を、該乗算係数に対応するいずれか１つの前記乗算器に出力する第１の係数セレクタと、入力された他のいずれか１つの前記乗算係数、または前記透明度係数のいずれか一方の係数を選択し、該選択した係数を、該他の乗算係数に対応する他のいずれか１つの前記乗算器に出力する第２の係数セレクタと、をさらに備える、ことを特徴とする。
【００１７】
また、本発明の前記ハードウェアアクセラレータは、少なくとも１つの前記乗算器に対応し、該乗算器が出力する乗算結果が予め定めた値よりも大きな値にならないように抑圧し、該抑圧した結果を抑圧乗算結果として出力するクリップ回路と、抑圧前の前記乗算結果、または抑圧後の前記抑圧乗算結果のいずれか一方の乗算結果を選択し、該選択した乗算結果を、対応する前記加算器に出力する乗算結果セレクタと、をさらに備える、ことを特徴とする。
【００１８】
また、本発明の前記ハードウェアアクセラレータは、少なくとも１つの前記チャンネルに入力された前記画像データの数をカウントするカウンタと、前記カウンタがカウントした入力された前記画像データの数と、予め定めたカウント値とを比較し、該比較した結果である比較結果を出力する比較器と、前記比較結果に基づいて、現在入力された前記画像データが有効なデータであるか否か表す有効フラグの値を選択し、該選択した前記有効フラグの値を出力する有効フラグセレクタと、前記有効フラグの値を、現在入力された前記画像データに付加する有効フラグ付加回路と、をさらに備え、前記有効フラグ付加回路は、前記有効フラグの値を付加した有効フラグ付きの画像データ、または前記有効フラグの値を付加していない現在入力された前記画像データのいずれか一方の前記画像データを出力し、前記データセレクタは、入力されたそれぞれの前記チャンネルの前記画像データ、または  前記有効フラグ付加回路をから出力された画像データのいずれか一方のデータを選択して、対応する前記乗算器のそれぞれに出力する、ことを特徴とする。
【００１９】
また、本発明の前記有効フラグ付加回路は、さらに、それぞれの前記遅延素子によって遅延されたそれぞれの前記遅延データに付加する、ことを特徴とする。
【００２０】
また、本発明の前記ハードウェアアクセラレータは、前記乗算器のそれぞれから出力された乗算結果、または前記データセレクタが選択したそれぞれのデータのいずれか一方のデータを選択し、該選択したそれぞれのデータを、対応する前記加算器のそれぞれに出力する第２のデータセレクタ、をさらに備え、前記加算器のそれぞれは、前記第２のデータセレクタから出力された対応する前記データを加算し、該ハードウェアアクセラレータは、全ての前記加算器が対応する前記データを加算した最終的な加算結果を、演算処理の結果として出力する、ことを特徴とする。
【００２１】
また、本発明の前記ハードウェアアクセラレータは、前記最終的な加算結果を、該ハードウェアアクセラレータに入力された前記画像データの数で除算する除算器と、前記最終的な加算結果、または前記除算器から出力された除算結果のいずれか一方の結果を選択し、該選択した結果を、該ハードウェアアクセラレータの演算処理の結果として出力する出力セレクタと、をさらに備える、ことを特徴とする。
【発明の効果】
【００２２】
本発明によれば、回路規模が増大することなく、所望の画像処理の演算に柔軟に変更することができる画像処理回路を備えた画像処理装置を提供することができるという効果が得られる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態における画像処理装置の概略構成の一例を示したブロック図である。
【図２】本実施形態の画像処理装置におけるバッファ制御部の概略構成の一例を示したブロック図である。
【図３】本実施形態の画像処理装置において第１の画像処理を行う場合の構成の一例を示したブロック図である。
【図４】本実施形態の画像処理装置による第１の画像処理における画像データの流れを示した図である。
【図５】本実施形態の画像処理装置における処理演算部の構成の一例を示したブロック図である。
【図６】本実施形態の画像処理装置において第２の画像処理を行う場合の構成の一例を示したブロック図である。
【図７】本実施形態の画像処理装置による第２の画像処理における処理演算部内の画像データの流れを示した図である。
【図８】本実施形態の画像処理装置において第３の画像処理を行う場合の構成の一例を示したブロック図である。
【図９】本実施形態の画像処理装置による第３の画像処理において水平方向の処理を行う場合の処理演算部内の画像データの流れを示した図である。
【図１０】本実施形態の画像処理装置による第３の画像処理において画像データの方向を変換する処理を説明する図である。
【図１１】本実施形態の画像処理装置による第３の画像処理において垂直方向の処理を行う場合の処理演算部内の画像データの流れを示した図である。
【図１２】本実施形態の画像処理装置による第４の画像処理において水平方向または垂直方向の処理を行う場合の処理演算部内の画像データの流れを示した図である。
【図１３】従来の処理装置の構成の一例を示したブロック図である。
【図１４】従来の画像処理装置の構成の一例を示したブロック図である。
【発明を実施するための形態】
【００２４】
以下、本発明の実施形態について、図面を参照して説明する。図１は、本実施形態における画像処理装置の概略構成の一例を示したブロック図である。図１に示した画像処理装置１は、２つのＣＰＵ１１およびＣＰＵ１２と、バッファ制御部３０と、メモリ部４０と、２つの処理演算部５１および処理演算部５２とが、バス２０に接続された構成である。
【００２５】
処理演算部５１と処理演算部５２とのそれぞれは、ｎ（ｎは３以上の自然数）チャンネルの入力に対応し、１次元のＦＩＲフィルタ処理、１行ｎ列×ｎ行１列のマトリックス演算、またはＬＵＴ（ルックアップテーブル）処理などの基本的な演算処理を、１つの処理演算部で実行することができるハードウェアアクセラレータとしての演算部である。処理演算部５１と処理演算部５２とのそれぞれが実行する演算処理は、画像処理装置１が実行する画像処理に応じた所望の画像処理演算を実現するために、例えば、画像処理装置１の全体を制御する制御部によって、任意に変更することができる。以下の説明において、処理演算部５１または処理演算部５２のいずれかを特定しない場合には、「処理演算部５０」という。なお、処理演算部５０の構成や動作に関する詳細な説明は、後述する。
【００２６】
ＣＰＵ１１とＣＰＵ１２とのそれぞれは、ソフトウエアで演算処理を実行するプロセッサである。ＣＰＵ１１とＣＰＵ１２とのそれぞれが実行する演算処理は、画像処理装置１が実行する画像処理に応じた所望の画像処理演算の内、処理演算部５０では実行しない演算処理である。以下の説明において、ＣＰＵ１１またはＣＰＵ１２のいずれかを特定しない場合には、「ＣＰＵ１０」という。
【００２７】
バッファ制御部３０は、処理演算部５０またはＣＰＵ１０が画像処理に用いる画像データのメモリ部４０への書き込みおよび読み出しを制御する。バッファ制御部３０は、処理演算部５０やＣＰＵ１０のそれぞれが演算処理する画像データのデータ幅や、演算処理においてアクセスするライン数（データ数）や、演算処理に使用するバッファの段数に応じて、メモリ部４０にアクセスする各入出力ポートのデータ幅や、ライン数（データ数）や、段数が設定される。バッファ制御部３０に対するデータ幅や、ライン数（データ数）や、バッファの段数の設定は、例えば、画像処理装置１の全体を制御する制御部によって、任意に設定することができる。バッファ制御部３０は、設定されたデータ幅や、ライン数（データ数）や、バッファの段数に基づいて、処理演算部５０またはＣＰＵ１０からバス２０を介して入力された画像データを、メモリ部４０に書き込み、メモリ部４０から読み出した画像データを、バス２０を介して処理演算部５０またはＣＰＵ１０に出力する。
【００２８】
メモリ部４０は、処理演算部５０やＣＰＵ１０が画像処理に用いる画像データを一時的に記憶する。メモリ部４０の記憶領域は、画像処理装置に備えたプロセッサの数とハードウェアアクセラレータの数との合計の数−１個に、物理的に分割されているように構成されている。本実施形態の画像処理装置１では、２つのプロセッサ（ＣＰＵ１１およびＣＰＵ１２）と、２つのハードウェアアクセラレータ（処理演算部５１および処理演算部５２）を備えているため、メモリ部４０は、（２＋２）−１＝３個の記憶領域に物理的に分割されている。
【００２９】
バス２０は、処理演算部５０およびＣＰＵ１０が画像処理に用いる画像データを伝送するバスである。バス２０は、接続されている処理演算部５０およびＣＰＵ１０と、バッファ制御部３０との接続関係を、例えば、それぞれの画像データの接続先を表すアドレスに基づいて、任意に変更することができる。
【００３０】
このような構成によって、画像処理装置１では、処理演算部５０およびＣＰＵ１０のそれぞれが、所望の演算処理を実行することによって、画像処理装置１が実行する画像処理を実現する。
【００３１】
次に、本実施形態の画像処理装置１に備えたバッファ制御部３０について説明する。図２は、本実施形態の画像処理装置１におけるバッファ制御部３０の概略構成の一例を示したブロック図である。なお、図２には、バッファ制御部３０が接続されたバス２０など、バッファ制御部３０に関連する画像処理装置１に備えたその他の構成要素も併せて示している。
【００３２】
本実施形態の画像処理装置１では、上述したように、２つのプロセッサ（ＣＰＵ１１およびＣＰＵ１２）と、２つのハードウェアアクセラレータ（処理演算部５１および処理演算部５２）を備えているため、メモリ部４０は、３個の記憶領域（メモリ部４１、メモリ部４２、およびメモリ部４３）に物理的に分割されている。このため、バッファ制御部３０も、図２に示したように、分割されたメモリ部４０のそれぞれに対応して、３個（バッファ制御部３１、バッファ制御部３２、およびバッファ制御部３３）に分割され、それぞれ対応するメモリ部４０に対して制御を行う。
【００３３】
バッファ制御部３１は、対応するメモリ部４１に対する画像データの書き込みおよび読み出しを制御する。バッファ制御部３１は、メモリ部４１のデータ幅を設定するデータ幅レジスタ３１１と、メモリ部４１のライン数を設定するライン数レジスタ３１２と、メモリ部４１の段数を設定するバッファ段数レジスタ３１３と、を備えている。バッファ制御部３１は、メモリ部４１を、データ幅レジスタ３１１と、ライン数レジスタ３１２と、バッファ段数レジスタ３１３とに設定された値に応じた大きさの記憶領域を持つバッファとして、メモリ部４１への画像データの書き込みおよび読み出しを制御する。
【００３４】
バッファ制御部３２も、バッファ制御部３１と同様に、データ幅レジスタ３２１と、ライン数レジスタ３２２と、バッファ段数レジスタ３２３とを備え、それぞれのレジスタに設定された値に応じた大きさの記憶領域を持つバッファとして、対応するメモリ部４２への画像データの書き込みおよび読み出しを制御する。
【００３５】
バッファ制御部３３も、バッファ制御部３１およびバッファ制御部３２と同様に、データ幅レジスタ３３１と、ライン数レジスタ３３２と、バッファ段数レジスタ３３３とを備え、それぞれのレジスタに設定された値に応じた大きさの記憶領域を持つバッファとして、対応するメモリ部４３への画像データの書き込みおよび読み出しを制御する。
【００３６】
なお、バッファ制御部３１、バッファ制御部３２、およびバッファ制御部３３のそれぞれに備えたレジスタに対する値の設定は、画像処理装置１が画像処理を実行する前に、例えば、画像処理装置１の全体を制御する制御部によって、事前に行われる。例えば、図２に示した一例では、メモリ部４１、メモリ部４２、およびメモリ部４３のそれぞれのデータ幅を、３２ｂｉｔ、２４ｂｉｔ、および２４ｂｉｔと設定した場合を示している。このように、バッファ制御部３０に備えたそれぞれのレジスタに事前に値を設定することによって、例えば、１６段の８ｂｉｔ×３ラインや、３２段の２４ｂｉｔ×１ラインや、８段の２４ｂｉｔ×２ラインなどのラインバッファを、メモリ部４０に構成することができる。
【００３７】
なお、図２においては、分割されたバッファ制御部３０とメモリ部４０とのそれぞれをまとめて、「バッファ３４０」として示している。以下の説明において、分割されたバッファ制御部３０とメモリ部４０とのそれぞれを特定しない場合には、「バッファ３４０」として説明する。
【００３８】
バス２０は、接続されたＣＰＵ１１とＣＰＵ１２、および処理演算部５１と処理演算部５２とのそれぞれの入出力ポートと、バッファ制御部３１、バッファ制御部３２、およびバッファ制御部３３のそれぞれの入出力ポート、すなわち、メモリ部４１、メモリ部４２、およびメモリ部４３のそれぞれの入力ポートおよび出力ポートとの接続を切り替える。バス２０におけるそれぞれの入出力ポートの接続の切り換えは、それぞれの画像データに対して付加されているアドレスに応じて、バス２０に備えたアドレスデコーダ（書き込みアドレスデコーダ２１０および読み出しアドレスデコーダ２２０）が行う。
【００３９】
より具体的には、書き込みアドレスデコーダ２１０は、２ビットのアドレスをデコードして、ＣＰＵ１１とＣＰＵ１２、および処理演算部５１と処理演算部５２とのそれぞれの出力ポートと、バッファ３４０のそれぞれの入力ポートとの接続を切り替える。また、読み出しアドレスデコーダ２２０は、２ビットのアドレスをデコードして、バッファ３４０のそれぞれの出力ポートと、ＣＰＵ１１とＣＰＵ１２、および処理演算部５１と処理演算部５２とのそれぞれの入力ポートとの接続を切り替える。
【００４０】
このような構成によって、画像処理装置１では、処理演算部５０およびＣＰＵ１０が、それぞれの演算処理を実行する際に用いる画像データのデータ幅、データ数（ライン数）や、バッファの段数に合わせた大きさの記憶領域を準備することができる。
【００４１】
なお、バス２０におけるそれぞれの入出力ポートの接続の切り換えは、上述したアドレスデコーダによって行う構成に限定されるものではなく、接続されている処理演算部５０およびＣＰＵ１０の入出力ポートと、バッファ３４０の入出力ポートとの接続を切り替えることができる構成であれば、いかなる構成であってもよい。
【００４２】
＜第１の画像処理＞
ここで、画像処理装置１において実行する画像処理の一例について説明する。図３は、本実施形態の画像処理装置１において第１の画像処理を行う場合の構成の一例を示したブロック図である。本第１の画像処理では、画像処理装置１が、画像データに対して、ＦＩＲフィルタ処理とマトリックス演算とのそれぞれの演算処理を実行する。
【００４３】
以下の説明においては、説明を容易にするため、図３に示したように、処理演算部５１がＦＩＲフィルタ処理を、処理演算部５２がマトリックス演算を、それぞれ実行するものとして説明を行う。また、処理演算部５０のそれぞれが演算処理を実行する際に用いる画像データに対応した大きさの記憶領域が、バッファ３４０に事前に準備されているものとし、バッファ３４０内のバッファ制御部３０に備えたそれぞれのレジスタの設定についての説明は省略する。なお、処理演算部５０のそれぞれが実行する処理に関する詳細な説明は、後述する。
【００４４】
図４は、本実施形態の画像処理装置１による第１の画像処理における画像データの流れを示した図である。図４（ａ）には、ＦＩＲフィルタ処理とマトリックス演算とを順次実行する場合の第１の画像処理における画像データの流れを示し、図４（ｂ）には、ＦＩＲフィルタ処理とマトリックス演算とを同時に実行する場合の第１の画像処理における画像データの流れを示している。
【００４５】
まず、図４（ａ）に示した、ＦＩＲフィルタ処理とマトリックス演算とを順次実行する場合（以下、「第１の処理手順」という）の第１の画像処理における画像データの流れについて説明する。画像処理装置１が第１の処理手順で第１の画像処理を実行する場合には、以下のような手順でそれぞれの処理を実行する。なお、以下の説明においては、処理演算部５０のそれぞれが処理を実行する際に用いる画像データに対応したバッファ３４０ａ、３４０ｂ、および３４０ｃが、バッファ３４０内に事前に準備されているものとする。
【００４６】
（手順１）：まず、ＣＰＵ１１は、処理演算部５１がＦＩＲフィルタ処理を実行する際に用いる画像データを、例えば、画像の画角の横幅×ＦＩＲフィルタのタップ数のバッファ３４０ａに書き込む。
【００４７】
（手順２）：続いて、処理演算部５１は、バッファ３４０ａに書き込まれた（記憶された）画像データを読み出し、読み出した画像データに対してＦＩＲフィルタ処理を実行する。そして、処理演算部５１は、ＦＩＲフィルタ処理を実行した後の画像データをバッファ３４０ｂに書き込む。
【００４８】
（手順３）：続いて、ＣＰＵ１２は、バッファ３４０ｂに書き込まれた（記憶された）、ＦＩＲフィルタ処理を実行した後の画像データを読み出し、読み出した画像データに対して画像処理を実行した後、画像処理した後の画像データを、例えば、１６段のバッファ３４０ｃに書き込む。
【００４９】
（手順４）：続いて、処理演算部５２は、バッファ３４０ｃに書き込まれた（記憶された）画像データを読み出し、読み出した画像データに対してマトリックス演算を実行する。
【００５０】
このようにして、画像処理装置１が第１の処理手順で、ＦＩＲフィルタ処理とマトリックス演算とを順次実行することによって、第１の画像処理を実行する。
【００５１】
次に、図４（ｂ）に示した、ＦＩＲフィルタ処理とマトリックス演算とを同時に実行する場合（以下、「第２の処理手順」という）の第１の画像処理における画像データの流れについて説明する。画像処理装置１が第２の処理手順で第１の画像処理を実行する場合には、以下のような手順でそれぞれの処理を実行する。なお、以下の説明においては、処理演算部５０のそれぞれが処理を実行する際に用いる画像データに対応したバッファ３４０ｄ、３４０ｅ、および３４０ｆが、バッファ３４０内に事前に準備されているものとする。
【００５２】
（手順１）：まず、ＣＰＵ１１は、処理演算部５１がＦＩＲフィルタ処理を実行する際に用いる画像データを、バッファ３４０ｄに書き込む。また、ＣＰＵ１１は、処理演算部５２がマトリックス演算を実行する際に用いる画像データを、バッファ３４０ｅに書き込む。
【００５３】
（手順２）：続いて、処理演算部５１は、バッファ３４０ｄに書き込まれた（記憶された）画像データを読み出し、読み出した画像データに対してＦＩＲフィルタ処理を実行し、ＦＩＲフィルタ処理を実行した後の画像データをバッファ３４０ｆに書き込む。また、処理演算部５２は、バッファ３４０ｅに書き込まれた（記憶された）画像データを読み出し、読み出した画像データに対してマトリックス演算を実行し、マトリックス演算を実行した後の画像データをバッファ３４０ｆに書き込む。
【００５４】
なお、手順２においては、処理演算部５１と処理演算部５２とのそれぞれが、演算を実行した後のデータをバッファ３４０ｆに書き込んでいる。しかし、処理演算部５１と処理演算部５２とが共に、同じサイクル数で演算を実行することができるとは限らない。このため、バッファ３４０ｆにデータを書き込むタイミングを、処理演算部５１と処理演算部５２とで同期させる必要がある場合もある。そこで、バッファにデータを書き込むタイミングを同期させる方法としては、例えば、画像データを読み出してから演算を実行した後の画像データを出力するまでのサイクル数を、処理演算部５０毎に事前に把握しておく。そして、それぞれの処理演算部５０が、演算を実行した後の画像データを出力するタイミングが同期するように、画像データを読み出すタイミングを調整する方法などが考えられる。また、例えば、バッファ３４０ｆの機能として、リードモディファイライトの機能を備え、異なるタイミングで書き込まれる画像データで、すでに記憶している画像データが上書きされないように制御する方法などが考えられる。
【００５５】
（手順３）：続いて、ＣＰＵ１２は、バッファ３４０ｆに書き込まれた（記憶された）、ＦＩＲフィルタ処理を実行した後の画像データおよびマトリックス演算を実行した後の画像データを読み出す（取得する）。
【００５６】
このようにして、画像処理装置１が第２の処理手順で、ＦＩＲフィルタ処理とマトリックス演算とを同時に実行することによって、第１の画像処理を実行する。
【００５７】
上記に述べたように、本実施形態の画像処理装置１では、同様の画像処理を実行する場合であっても、プロセッサ（ＣＰＵ１１およびＣＰＵ１２）と、ハードウェアアクセラレータ（処理演算部５１および処理演算部５２）とがそれぞれ実行する画像処理の順番を、任意に組み替えることができる。これにより、ハードウェアアクセラレータによる画像処理の高速化と、プロセッサによる画像処理の柔軟性とを両立することができる。
【００５８】
また、本実施形態の画像処理装置１では、画像の画角やフィルタのサイズ（タップ数）に応じて、メモリ部４０の記憶領域の大きさを任意に設定することができる。これにより、バッファ制御部３０によるバッファの管理を集中しておこうことができ、それぞれの画像処理に対して個別に十分な大きさのバッファを準備する場合に比べて、メモリ部４０の面積効率を向上し、画像処理装置１に係るコストを削減することができる。
【００５９】
次に、本実施形態の画像処理装置１に備えた処理演算部５０について説明する。図５は、本実施形態の画像処理装置１における処理演算部５０の構成の一例を示したブロック図である。図５には、３チャンネルの入力に対応し、演算処理を実行して１つの演算結果を得る処理演算部５０の一例を示している。すなわち、図５に示した処理演算部５０は、３タップの１次元のＦＩＲフィルタ処理、および１行３列×３行１列のマトリックス演算の基本的な演算処理を行うことができるハードウェアアクセラレータの一例である。なお、図５には、処理演算部５０が実行する１次元のＦＩＲフィルタ処理および１行３列×３行１列のマトリックス演算の基本的な演算処理を実現する構成要素以外にも、付加的な演算処理の機能を実現する構成要素も併せて示している。
【００６０】
図５に示した処理演算部５０は、遅延素子５１１および５１２と、セレクタ５２０と、乗算器５３１、５３２、および５３３と、加算器５４１および５４２と、減算器５５０と、セレクタ５６２および５６３と、クリップ（ＣＬＩＰ）回路５７０と、セレクタ５８０と、セレクタ５９０と、有効フラグ（Ｖａｌｉｄ）付加回路６０１と、カウンタ６１１と、比較器６１２と、セレクタ６１３と、セレクタ６２０と、除算器６３０と、を備えている。処理演算部５０は、入力ポートＩｎ１、Ｉｎ２、およびＩｎ３のそれぞれに同時に入力された同一位置における３チャンネルの画像データに対して、対応する係数ポートＣ１、Ｃ２、およびＣ３のそれぞれに入力された係数、またはアルファチャンネル係数ポートＣαに入力された係数に応じた演算処理を実行し、その結果を出力ポートＯｕｔ１から出力する。
【００６１】
遅延素子５１１と遅延素子５１２とのそれぞれは、入力ポートＩｎ１に時系列的に入力された画像データを順次遅延させる。処理演算部５０では、３チャンネルの画像データが入力されるため、画像データを、チャネル数−１、すなわち、３−１＝２段の遅延素子が直列に接続されている。これにより、処理演算部５０は、入力ポートＩｎ１に入力された画像データ（以下、「現データ」という）と、１段遅延させた画像データ（以下、「１段遅延データ」という）と、２段遅延させた画像データ（以下、「２段遅延データ」という）とに対して、同時に演算処理を実行することができる。すなわち、入力ポートＩｎ１に時系列的に入力されたそれぞれの画像データが、同時に入力されたものとして演算処理を実行することができる。
【００６２】
なお、図５に示した処理演算部５０では、入力ポートＩｎ１に入力された１つのチャンネルの画像データのみを遅延させる構成を示している、すなわち、他のチャンネルの画像データを遅延させる構成を省略している。しかし、処理演算部５０において遅延させる画像データは、図５に示したような１つのチャンネルのみに限定されるものではなく、図５に示した遅延素子５１１および遅延素子５１２と同様の構成を他のチャンネルの入力ポートＩｎ２および入力ポートＩｎ２にも備え、それぞれのチャンネルの画像データをそれぞれ２段遅延させる構成にしてもよい。また、図５に示した処理演算部５０では、入力された画像データを２段遅延させる構成を示しているが、遅延素子の構成、すなわち、画像データを遅延させる段数は、図５に示した構成のみに限定されるものではなく、入力された画像データを、さらに多くの段数遅延させる構成にすることもできる。
【００６３】
セレクタ５２０は、演算処理を実行する画像データを選択する。より具体的には、セレクタ５２０は、入力ポートＩｎ１〜Ｉｎ３のそれぞれに同時に入力された同一位置における３チャンネル分の画像データ、または遅延素子５１１および遅延素子５１２によって遅延された１チャンネルの画像データの３つ分（３段分）の画像データのいずれか一方の画像データを、演算処理を実行する画像データとして選択する。そして、セレクタ５２０は、選択した画像データのそれぞれを、乗算器５３１、５３２、または５３３のいずれかの乗算器に出力する。
【００６４】
なお、図５に示した処理演算部５０では、後述する付加的な演算処理機能の追加に伴って、１チャンネルの画像データの３つ分（３段分）の画像データ、すなわち、現データと、１段遅延データと、２段遅延データとが、有効フラグ付加回路６０１を介して入力される構成になっている。
【００６５】
乗算器５３１と乗算器５３２と乗算器５３３とのそれぞれは、セレクタ５２０から入力された画像データに対して、対応する係数ポートＣ１、Ｃ２、またはＣ３のそれぞれに入力された係数（以下、「乗算係数」という）での乗算を行う。処理演算部５０では、チャネル数、すなわち、画像データの入力ポート数、または遅延素子の数＋１のいずれか大きい方の数と同じ数の乗算器、すなわち、３つの乗算器を備えている。
【００６６】
なお、図５に示した処理演算部５０では、後述する付加的な演算処理機能の追加に伴って、乗算器５３２および乗算器５３３のそれぞれが乗算を実行する際に用いる乗算係数が、対応するセレクタ５６２またはセレクタ５６３から出力されたそれぞれの係数になっている。より具体的には、乗算器５３２は、セレクタ５２０から入力された画像データに対して、対応するセレクタ５６２から出力された、対応する係数ポートＣ２に入力された乗算係数、またはアルファチャンネル係数ポートＣαに入力された係数に応じた係数のいずれか一方の係数での乗算を行う構成になっている。また、乗算器５３３は、セレクタ５２０から入力された画像データに対して、対応するセレクタ５６３から出力された、対応する係数ポートＣ３に入力された乗算係数、またはアルファチャンネル係数ポートＣαに入力された係数のいずれか一方の係数での乗算を行う構成になっている。
【００６７】
なお、図５に示した処理演算部５０では、乗算器５３１と乗算器５３２と乗算器５３３とのそれぞれが乗算を実行する際に用いる乗算係数が、対応する係数ポートＣ１〜Ｃ３またはアルファチャンネル係数ポートＣαから入力される構成を示している。しかし、処理演算部５０において乗算器５３１と、乗算器５３２と、乗算器５３３とのそれぞれに乗算係数を与える方法は、図５に示したようなそれぞれのポートから入力する構成のみに限定されるものではない。例えば、それぞれの乗算係数を保持するレジスタを備え、それぞれのレジスタに保持されたそれぞれの乗算係数を、乗算器５３１と乗算器５３２と乗算器５３３とのそれぞれに与える構成にしてもよい。
【００６８】
加算器５４１と加算器５４２とのそれぞれは、対応する乗算器５３１と乗算器５３２と乗算器５３３とのそれぞれが乗算した結果の画像データの加算を行う。処理演算部５０では、チャネル数、すなわち、画像データの入力ポート数−１、または遅延素子の数のいずれか大きい方の数の加算器、すなわち、２つの加算器を備えている。この構成により、処理演算部５０は、乗算器５３１と乗算器５３２と乗算器５３３とのそれぞれが乗算した結果の画像データの全てを累積加算した画像データを出力する。
【００６９】
なお、図５に示した処理演算部５０では、後述する付加的な演算処理機能の追加に伴って、加算器５４１および加算器５４２のそれぞれには、対応する乗算器５３１と乗算器５３２と乗算器５３３とのそれぞれが乗算した結果の画像データが、セレクタ６２０を介して入力される構成になっている。
【００７０】
ここまでの構成、すなわち、遅延素子５１１および５１２と、セレクタ５２０と、乗算器５３１、５３２、および５３３と、加算器５４１および５４２との構成が、３タップの１次元のＦＩＲフィルタ処理または１行３列×３行１列のマトリックス演算のいずれかの基本的な演算処理を実現するための処理演算部５０における基本的な構成である。
【００７１】
続いて、処理演算部５０に追加された付加的な演算処理機能を実現する構成について説明する。図５に示した処理演算部５０に追加された１つめの付加的な演算処理機能は、完全な透明や半透明の２枚の画像を合成して１枚の画像を生成するための、いわゆるアルファブレンディング処理の機能である。このアルファブレンディング処理の機能の追加に伴って、処理演算部５０には、減算器５５０と、セレクタ５６２および５６３とが追加されている。また、アルファチャンネル係数ポートＣαには、画像の透明度を表す１．０よりも小さい係数（以下、「透明度係数」という）が入力される。
【００７２】
減算器５５０は、アルファチャンネル係数ポートＣαに入力されたアルファブレンディング処理における透明度係数に基づいて、最終的に生成される１枚の画像の透明度が１．０、すなわち、透明でない状態になるように、透明度係数に対する逆の係数（以下、「逆透明度係数」という）を算出する。より具体的には、減算器５５０は、１．０からアルファチャンネル係数ポートＣαに入力された透明度係数を減算し、その結果をアルファブレンディング処理における逆透明度係数としてセレクタ５６２に出力する。
【００７３】
セレクタ５６２とセレクタ５６３とのそれぞれは、対応する乗算器５３２および乗算器５３３のそれぞれが乗算を実行する際に用いる係数を選択する。より具体的には、セレクタ５６２は、対応する係数ポートＣ２に入力された乗算係数、または減算器５５０から入力された逆透明度係数のいずれか一方の係数を、乗算器５３２が乗算を実行する際に用いる係数として選択する。これにより、乗算器５３２は、セレクタ５２０から入力された画像データに対して、セレクタ５６２から入力された係数ポートＣ２に入力された乗算係数、または逆透明度係数のいずれか一方の係数での乗算を行う。また、セレクタ５６３は、対応する係数ポートＣ３に入力された乗算係数、またはアルファチャンネル係数ポートＣαに入力された透明度係数のいずれか一方の係数を、乗算器５３３が乗算を実行する際に用いる係数として選択する。これにより、乗算器５３３は、セレクタ５２０から入力された画像データに対して、セレクタ５６３から入力された係数ポートＣ３に入力された乗算係数、または透明度係数のいずれか一方の係数での乗算を行う。
【００７４】
この構成により、処理演算部５０は、アルファブレンディング処理を行うことができる。なお、アルファブレンディング処理は、画像データ毎に透明度係数が異なることもある。このため、図５に示した処理演算部５０の構成のように、透明度係数がアルファチャンネル係数ポートＣαから順次入力される構成のみに限定されるものではない。例えば、透明度係数を保持したテーブルを処理演算部５０内に備え、画像データ毎に対応した透明度係数をテーブルから順次読み出して、減算器５５０とセレクタ５６３とのそれぞれに与える構成にしてもよい。
【００７５】
また、図５に示した処理演算部５０に追加された２つめの付加的な演算処理機能は、出力する画像データの値が予め定めた値よりも大きな値にならないように、画像データの値を抑圧（クリップ）する、いわゆるコアリング処理の機能である。このコアリング処理の機能の追加に伴って、処理演算部５０には、クリップ回路５７０と、セレクタ５８０とが追加されている。
【００７６】
クリップ回路５７０は、乗算器５３３が乗算を実行した画像データの値が、予め定めた値以下になるように抑圧し、抑圧した画像データをセレクタ５８０に出力する。これにより、例えば、乗算器５３３が乗算を実行した画像データの値が飽和してしまうなどの状態を抑えることができる。なお、クリップ回路５７０が画像データを抑圧する予め定めた値は、図５に示した処理演算部５０の構成のように、事前にクリップ回路５７０内に設定されている構成のみに限定されるものではない。例えば、別途設けられたクリップ値ポートから画像データを抑圧する値を入力する構成や、画像データを抑圧する値を保持するレジスタを備え、レジスタに保持されたクリップ値で画像データを抑圧する構成にしてもよい。
【００７７】
セレクタ５８０は、乗算器５３３が乗算を実行した画像データ、またはクリップ回路５７０によって値が抑圧された画像データのいずれか一方の画像データを選択して出力する。これにより、処理演算部５０は、乗算器５３１および乗算器５３２のそれぞれが乗算した結果の画像データと、セレクタ５８０によって選択された乗算器５３３が乗算した結果の画像データまたはクリップ回路５７０によって値が抑圧された画像データのいずれか一方の画像データとの全てを累積加算した画像データを出力する。
【００７８】
なお、図５に示した処理演算部５０では、乗算器５３３が乗算を実行した画像データを抑圧する構成を示している、すなわち、他の乗算器が乗算を実行した画像データを抑圧する構成を省略している。しかし、処理演算部５０において抑圧する乗算を実行した画像データは、図５に示したような１つの乗算器５３３のみに限定されるものではない。例えば、図５に示したクリップ回路５７０およびセレクタ５８０と同様の構成を他の乗算器５３１および乗算器５３２の出力側にも備え、それぞれの乗算器が乗算を実行した画像データをそれぞれ抑圧する構成にしてもよい。
【００７９】
また、図５に示した処理演算部５０に追加された３つめの付加的な演算処理機能は、乗算器５３１と乗算器５３２と乗算器５３３とのそれぞれが乗算を行う画像データが、有効な画像データであるか否かを表す有効フラグを画像データに付加する、いわゆる有効フラグ（Ｖａｌｉｄ）付加処理の機能である。有効フラグ付加処理の機能では、予め定めたサイクルに１回の割合で、有効フラグを画像データに付加する。この有効フラグ付加処理の機能の追加に伴って、処理演算部５０には、有効フラグ付加回路６０１と、カウンタ６１１と、比較器６１２と、セレクタ６１３とが追加されている。
【００８０】
カウンタ６１１は、有効フラグを画像データに付加するサイクルをカウントする。図５に示した処理演算部５０において、カウンタ６１１は、設定されたサイクル数の値から、入力ポートＩｎ１に画像データが入力される毎にサイクル数の値を減算するカウント（カウントダウン）するダウンカウンタである。カウンタ６１１は、カウントしたサイクル数の値を、比較器６１２に出力する。
【００８１】
なお、カウンタ６１１がカウントするサイクル数は、図５に示した処理演算部５０の構成のように、事前にカウンタ６１１内に設定されている構成のみに限定されるものではない。例えば、別途設けられたカウント数ポートから画像データに有効フラグを付加するサイクル数を入力する構成や、画像データに有効フラグを付加するサイクル数を保持するレジスタを備え、レジスタに保持されたサイクル数をカウントする構成にしてもよい。
【００８２】
比較器６１２は、カウンタ６１１から入力されたサイクル数の値と、予め定めた値とを比較し、比較した結果をセレクタ６１３に出力する。図５に示した処理演算部５０において、カウンタ６１１はダウンカウンタであるため、比較器６１２がカウンタ６１１から入力されたサイクル数の値と比較する予め定めた値は“０”である。比較器６１２は、例えば、カウンタ６１１から入力されたサイクル数の値が“０”となったときに比較結果＝１をセレクタ６１３に出力し、サイクル数の値が“０”以外である場合に比較結果＝０を、セレクタ６１３に出力する。
【００８３】
セレクタ６１３は、比較器６１２から入力された比較結果に基づいて、画像データに付加する有効フラグの値を選択し、選択した有効フラグの値を、有効フラグ付加回路６０１に出力する。図５に示した処理演算部５０において、セレクタ６１３は、例えば、有効フラグを画像データに付加するサイクルのときに有効フラグの値＝１を有効フラグ付加回路６０１に出力し、有効フラグを画像データに付加するサイクルではないときに有効フラグの値＝０を有効フラグ付加回路６０１に出力する。
【００８４】
有効フラグ付加回路６０１は、セレクタ６１３から入力された有効フラグの値を、実際に画像データに付加する。有効フラグ付加回路６０１による有効フラグの付加は、例えば、画像データの上位ビット側に１ビットの有効フラグの値のビットを付加することによって行われる。なお、有効フラグ付加回路６０１は、有効フラグを付加しないこともできる。すなわち、有効フラグ付加回路６０１は、現データ、１段遅延データ、および２段遅延データの全てに有効フラグを付加する、全てに有効フラグを付加しない、いずれか１つに有効フラグを付加する、いずれか１つに有効フラグを付加しないなど、様々な状態にすることができる。これにより、以降の演算処理では、画像データが有効であることを表している有効フラグが付加された画像データに対してのみに演算処理を行うことや、有効な画像データが揃ったサイクルで演算処理を行うなど、柔軟に演算処理を行うタイミングを変更することができる。
【００８５】
なお、図５に示した処理演算部５０では、入力ポートＩｎ１に入力された１つのチャンネルの画像データのみに有効フラグを付加する構成を示している、すなわち、他のチャンネルの画像データに有効フラグを付加する構成を省略している。しかし、処理演算部５０において有効フラグを付加する画像データは、図５に示したような１つのチャンネルのみに限定されるものではない。例えば、図５に示したカウンタ６１１、比較器６１２、セレクタ６１３、および有効フラグ付加回路６０１と同様の構成を他のチャンネルの入力ポートＩｎ２および入力ポートＩｎ２にも備え、それぞれのチャンネルの画像データに有効フラグを付加する構成にしてもよい。
【００８６】
また、図５に示した処理演算部５０に追加された４つめの付加的な演算処理機能は、加算器５４１と加算器５４２とによって累積加算する画像データを選択するブロック累積加算処理の機能である。このブロック累積加算処理の機能の追加に伴って、処理演算部５０には、セレクタ６２０が追加されている。
【００８７】
セレクタ６２０は、加算器５４１と加算器５４２とによって行う累積加算する画像データを選択する。より具体的には、セレクタ６２０は、乗算器５３１、５３２、および５３３のそれぞれが乗算を行った画像データ、または乗算器５３１、５３２、および５３３のそれぞれが乗算を行う前の画像データ、すなわち、入力ポートＩｎ１〜Ｉｎ３に入力された元の画像データのいずれか一方の画像データを、累積加算する画像データとして選択する。そして、セレクタ６２０は、選択した画像データのそれぞれを、加算器５４１または加算器５４２のいずれかの加算器に出力する。これにより、処理演算部５０は、乗算器５３１と乗算器５３２と乗算器５３３とのそれぞれが対応する乗算係数での乗算を行った画像データ、または入力ポートＩｎ１〜Ｉｎ３のそれぞれに同時に入力された同一位置における３チャンネル分の画像データのいずれか一方の画像データを、累積加算した画像データを出力することができる。
【００８８】
また、図５に示した処理演算部５０に追加された５つめの付加的な演算処理機能は、加算器５４１と加算器５４２とによって累積加算した画像データを入力された画像データの数で除算したブロック加算平均処理の機能である。このブロック加算平均処理の機能の追加に伴って、処理演算部５０には、除算器６３０が追加されている。
【００８９】
除算器６３０は、加算器５４１と加算器５４２とによって累積加算された画像データを、入力された画像データの数で除算する。これにより、処理演算部５０は、乗算器５３１と乗算器５３２と乗算器５３３とのそれぞれが対応する乗算係数での乗算を行った画像データ、または入力ポートＩｎ１〜Ｉｎ３のそれぞれに同時に入力された同一位置における３チャンネル分の画像データのいずれか一方の画像データを、加算平均した画像データを出力することができる。
【００９０】
そして、図５に示した処理演算部５０は、基本的な演算処理の結果の画像データ、または追加された付加的な演算処理の結果の画像データのいずれか一方の画像データを、処理演算部５０が演算処理を実行した結果の画像データとして、出力ポートＯｕｔ１から出力する。出力ポートＯｕｔ１から出力する画像データを選択するため、処理演算部５０には、セレクタ５９０が追加されている。
【００９１】
セレクタ５９０は、出力ポートＯｕｔ１から出力する画像データを選択する。より具体的には、セレクタ５９０は、加算器５４２が出力する累積加算した画像データ、加算器５４２に入力される加算前の画像データ、または、除算器６３０が出力する加算平均した画像データのいずれか一方の画像データを、処理演算部５０が演算処理を実行した結果の画像データとして選択し、出力ポートＯｕｔ１から出力する。
【００９２】
このような構成によって、処理演算部５０は、入力ポートＩｎ１、Ｉｎ２、およびＩｎ３のそれぞれに入力された画像データ、または入力ポートＩｎ１に時系列的に入力された画像データに基づいて、以下のような演算処理を実行した画像データを出力することができる。
【００９３】
・３タップの１次元のＦＩＲフィルタ処理、
・１行３列×３行１列のマトリックス演算、
・アルファブレンディング処理、
・コアリング処理、
・有効フラグ（Ｖａｌｉｄ）の付加処理、
・１行×３列または３行×１列のブロック累積加算処理、
・１行×３列または３行×１列のブロック加算平均処理。
【００９４】
なお、図５に示した処理演算部５０は、３チャンネルの入力に対応した処理演算部であったが、同様の考え方で処理演算部５０内の構成要素を増やすなどの対応を行うことによって、さらに多くのチャンネルの入力に対応した処理演算部を構築することができる。
【００９５】
＜第２の画像処理＞
本実施形態の画像処理装置１では、処理演算部５０を複数組み合わせることによって、様々な画像処理を実現することができる。ここで、画像処理装置１において、処理演算部５０を複数組み合わせで実行する画像処理の一例について説明する。図６は、本実施形態の画像処理装置１において第２の画像処理を行う場合の構成の一例を示したブロック図である。本第２の画像処理では、図６に示したように、画像処理装置１に備えた３つの処理演算部５０（処理演算部５１、処理演算部５２、および処理演算部５３）を用いて、入力された画像データに対して、下式（１）のような、３行３列×３行１列のマトリックス演算を、画像処理装置１における画像処理演算として実行する。
【００９６】
【数１】
2013239120.tif 000003
【００９７】
上式（１）において、「Ｒ」、「Ｇ」、「Ｂ」は画像におけるそれぞれの色（Ｒ＝赤色、Ｇ＝緑色、Ｂ＝青色）の画像データである。なお、「Ｒ」、「Ｇ」、および「Ｂ」は処理演算部５０に入力されるそれぞれの色の画像データであり、「Ｒ’」、「Ｇ’」、および「Ｂ’」は処理演算部５０から出力されるそれぞれの色の画像データである。また、「Ｃ００」〜「Ｃ２２」は処理演算部５０が演算処理に用いる乗算係数である。
【００９８】
それぞれの処理演算部５０は、対応する色の画像データに対して、１行３列×３行１列のマトリックス演算を同時に行う。図６に示した画像処理装置１の構成では、処理演算部５１が赤色（Ｒ）の画像データに対応し、処理演算部５２が緑色（Ｇ）の画像データに対応し、処理演算部５３が青色（Ｂ）の画像データに対応している。
【００９９】
次に、画像処理装置１による本第２の画像処理において、処理演算部５０が実行する演算処理について説明する。図７は、本実施形態の画像処理装置１による第２の画像処理における処理演算部５０内の画像データの流れを示した図である。図７には、赤色（Ｒ）の画像データに対して、１行３列×３行１列のマトリックス演算を行う処理演算部５１内の画像データの流れを示している。なお、図７には、処理演算部５１の演算処理において使用される処理経路を、太線で示している。
【０１００】
処理演算部５１には、同時に入力された同一位置における３チャンネル分、すなわち、３色（「Ｒ」、「Ｇ」、「Ｂ」）の画像データ（以下、「画像データＲ」、「画像データＧ」、および「画像データＢ」という）が入力される。そして、処理演算部５１は、入力されたそれぞれの色（Ｒ、Ｇ、Ｂ）の画像データに対して、下式（２）のような、１行３列×３行１列のマトリックス演算を実行し、累積加算した赤色（Ｒ）の画像データ（以下、「画像データＲ’」という）を出力する。
【０１０１】
【数２】
2013239120.tif 000004
【０１０２】
より具体的には、処理演算部５１の入力ポートＩｎ１には画像データＲが、入力ポートＩｎ２には画像データＧが、入力ポートＩｎ３には画像データＢが、それぞれ入力される。また、処理演算部５１の係数ポートＣ１には乗算係数＝Ｃ００が、係数ポートＣ２には乗算係数＝Ｃ０１が、係数ポートＣ３には乗算係数＝Ｃ０２が、それぞれ入力される。そして、処理演算部５１の出力ポートＯｕｔ１から画像データＲ’を出力する。
【０１０３】
処理演算部５１内のセレクタ５２０は、入力ポートＩｎ１〜Ｉｎ３のそれぞれに同時に入力された画像データＲ、画像データＧ、および画像データＢを、対応する乗算器５３１、乗算器５３２、および乗算器５３３のそれぞれに出力する。
【０１０４】
処理演算部５１内のセレクタ５６２は、対応する係数ポートＣ２から入力された乗算係数＝Ｃ０１を乗算器５３２に出力し、処理演算部５１内のセレクタ５６３は、対応する係数ポートＣ３から入力された乗算係数＝Ｃ０２を乗算器５３３に出力する。
【０１０５】
処理演算部５１内の乗算器５３１は、セレクタ５２０から入力された画像データＲに対して、対応する係数ポートＣ１から入力された乗算係数＝Ｃ００を乗算し、セレクタ６２０に出力する。また、処理演算部５１内の乗算器５３２は、セレクタ５２０から入力された画像データＧに対して、セレクタ５６２から入力された乗算係数＝Ｃ０１を乗算し、セレクタ６２０に出力する。また、処理演算部５１内の乗算器５３３は、セレクタ５２０から入力された画像データＢに対して、セレクタ５６３から入力された乗算係数＝Ｃ０２を乗算し、セレクタ５８０を介して、セレクタ６２０に出力する。
【０１０６】
処理演算部５１内のセレクタ６２０は、乗算器５３１が乗算した結果（画像データＲ×Ｃ００）の画像データと、乗算器５３２が乗算した結果（画像データＧ×Ｃ０１）の画像データとを加算器５４１に出力する。また、処理演算部５１内のセレクタ６２０は、セレクタ５８０を介して入力された、乗算器５３３が乗算した結果（画像データＢ×Ｃ０２）の画像データを加算器５４２に出力する。
【０１０７】
処理演算部５１内の加算器５４１は、セレクタ６２０から入力された画像データ（画像データＲ×Ｃ００）と、画像データ（画像データＧ×Ｃ０１）とを加算し、加算器５４２に出力する。また、処理演算部５１内の加算器５４２は、加算器５４１から入力された画像データ（（画像データＲ×Ｃ００）＋（画像データＧ×Ｃ０１））と、セレクタ６２０から入力された画像データ（画像データＢ×Ｃ０２）とを加算し、セレクタ５９０を介して、処理演算部５１が演算処理した結果の画像データＲ’として、出力ポートＯｕｔ１から出力する。
【０１０８】
このように、処理演算部５１は、入力ポートＩｎ１〜Ｉｎ３のそれぞれに同時に入力されたそれぞれの画像データに対して、対応する係数ポートＣ１〜Ｃ２のそれぞれに入力された乗算係数での乗算を行った後、累積加算した結果の画像データＲ’を出力することによって、１行３列×３行１列のマトリックス演算を実行する。
【０１０９】
なお、画像処理装置１による本第２の画像処理では、上述したように、処理演算部５２および処理演算部５３による１行３列×３行１列のマトリックス演算も、処理演算部５１による１行３列×３行１列のマトリックス演算と同時に行われる。なお、処理演算部５２および処理演算部５３による１行３列×３行１列のマトリックス演算は、係数ポートＣ１〜Ｃ２のそれぞれに入力される乗算係数と、出力する累積加算した結果の画像データの色とが異なるのみである。
【０１１０】
より具体的には、処理演算部５２の入力ポートＩｎ１には画像データＲが、入力ポートＩｎ２には画像データＧが、入力ポートＩｎ３には画像データＢが、それぞれ入力され、係数ポートＣ１には乗算係数＝Ｃ１０が、係数ポートＣ２には乗算係数＝Ｃ１１が、係数ポートＣ３には乗算係数＝Ｃ１２が、それぞれ入力される。そして、処理演算部５２の出力ポートＯｕｔ１から画像データＧ’を出力する。また、処理演算部５３の入力ポートＩｎ１には画像データＲが、入力ポートＩｎ２には画像データＧが、入力ポートＩｎ３には画像データＢが、それぞれ入力され、係数ポートＣ１には乗算係数＝Ｃ２０が、係数ポートＣ２には乗算係数＝Ｃ２１が、係数ポートＣ３には乗算係数＝Ｃ２２が、それぞれ入力される。そして、処理演算部５３の出力ポートＯｕｔ１から画像データＢ’を出力する。
【０１１１】
その他、処理演算部５２および処理演算部５３内の画像データの流れは、図７に示した処理演算部５１内の画像データの流れと同様であるため、詳細な説明は省略する。
【０１１２】
そして、画像処理装置１では、処理演算部５１、処理演算部５２、および処理演算部５３が対応する色の画像データに対してそれぞれ１行３列×３行１列のマトリックス演算を実行した結果の画像データＲ’、画像データＧ’、および画像データＢ’を合わせることにより、最終的な３行３列×３行１列のマトリックス演算の結果を得る。
【０１１３】
上記に述べたように、本実施形態の画像処理装置１では、３つの処理演算部５０を用いて、入力された画像データに対する３行３列×３行１列のマトリックス演算の画像処理演算を実行する。
【０１１４】
なお、本第２の画像処理では、図５に示した３チャンネルの入力に対応した処理演算部５０を用いて、３行３列×３行１列のマトリックス演算を実行する場合について説明したが、処理演算部５０がさらに多くのチャンネルの入力に対応した処理演算部である場合には、さらに多くの行および列のマトリックス演算を実行することができる。
【０１１５】
より具体的には、処理演算部５０に、マトリックス演算を実行する行または列の大きい方と同じ数の入力ポートおよび係数ポートを備え、それぞれの入力ポートから入力された画像データとそれぞれの係数ポートから入力された乗算係数とを乗算する乗算器と、それぞれの乗算器が乗算した画像データを加算する加算器とをさらに備える。このような構成にすることによって、さらに多くの行および列に対応したマトリックス演算を実行することができる処理演算部５０を構成することができる。
【０１１６】
なお、画像処理装置１によるアルファブレンディング処理も、上述した１行３列×３行１列のマトリックス演算と同様に考えることができる。つまり、アルファブレンディングの演算処理も、画像処理装置１に備えた３つの処理演算部５０（処理演算部５１、処理演算部５２、および処理演算部５３）を用いて、画像データの色毎に行う。
【０１１７】
より具体的には、例えば、処理演算部５１の入力ポートＩｎ２に１枚目の画像の画像データＲを入力し、入力ポートＩｎ３に２枚目の画像の画像データＲを入力する。そして、処理演算部５１内の乗算器５３２が、セレクタ５２０から入力された１枚目の画像の画像データＲに対して、セレクタ５６２から入力された逆透明度係数での乗算を行い、乗算器５３３が、セレクタ５２０から入力された２枚目の画像の画像データＲに対して、セレクタ５６３から入力された透明度係数での乗算を行う。そして、処理演算部５１内の加算器５４１および加算器５４２で加算した結果を、処理演算部５１がアルファブレンディングの演算処理した結果の画像データＲ’として、出力ポートＯｕｔ１から出力する。
【０１１８】
同様に、処理演算部５２が、１枚目の画像の画像データＧと２枚目の画像の画像データＧとに対してアルファブレンディングの演算処理した結果の画像データＧ’を、出力ポートＯｕｔ１から出力する。また、同様に、処理演算部５３が、１枚目の画像の画像データＢと２枚目の画像の画像データＢとに対してアルファブレンディングの演算処理した結果の画像データＢ’を、出力ポートＯｕｔ１から出力する。
【０１１９】
このようにして、画像処理装置１では、処理演算部５１、処理演算部５２、および処理演算部５３が対応する色の画像データに対してそれぞれアルファブレンディングの演算処理を実行した結果の画像データＲ’、画像データＧ’、および画像データＢ’を合わせることにより、最終的なアルファブレンディングの演算処理の結果を得ることができる。
【０１２０】
＜第３の画像処理＞
次に、画像処理装置１において実行する画像処理の別の一例について説明する。図８は、本実施形態の画像処理装置１において第３の画像処理を行う場合の構成の一例を示したブロック図である。本第３の画像処理では、図８に示したように、画像処理装置１に備えた２つの処理演算部５０（処理演算部５１および処理演算部５２）を用いて、入力された画像データに対して、下式（３）のような、３×３タップの２次元のＦＩＲフィルタ（２ＤＦＩＲ）処理を、画像処理装置１における画像処理演算として実行する。
【０１２１】
【数３】
2013239120.tif 000005
【０１２２】
上式（３）において、「ｋ」および「ｉ」は水平方向の行の数であり、「ｌ」および「ｊ」は垂直方向の列の数であり、「Ｄ」は画像データである。なお、「Ｄ」は処理演算部５０に入力される、対応する水平方向（ｋまたはｉ）および垂直方向（ｌまたはｊ）の画像データであり、「Ｄ’」は処理演算部５０から出力される、対応する水平方向（ｋ）および垂直方向（ｌ）の画像データである。また、「Ｃｉｊ」は処理演算部５０が演算処理に用いる、対応する水平方向（ｉ）および垂直方向（ｊ）の乗算係数である。
【０１２３】
上述したように、単体の処理演算部５０では、１次元のＦＩＲフィルタ処理を行うことができる。そこで、画像処理装置１において本第３の画像処理を行う場合には、２次元のＦＩＲフィルタ処理を、水平方向と垂直方向との１次元のＦＩＲフィルタ処理にそれぞれ分け、水平方向の１次元のＦＩＲフィルタ処理に引き続き、垂直方向の１次元のＦＩＲフィルタ処理を行うことで、２次元のＦＩＲフィルタ処理を実現する。
【０１２４】
より具体的には、上式（３）を、下式（４）が成り立つことを条件として、水平方向の下式（５）と、垂直方向の下式（６）とに分ける。
【０１２５】
【数４】
2013239120.tif 000006
【０１２６】
【数５】
2013239120.tif 000007
【０１２７】
【数６】
2013239120.tif 000008
【０１２８】
上式（４）において、「ＣＨｉ」は水平方向（ｉ）の乗算係数であり、「ＣＶｊ」は垂直方向（ｊ）の乗算係数である。また、上式（５）および上式（６）において、「Ｄｔｍｐ」は処理演算部５０が水平方向に１次元のＦＩＲフィルタ処理を実行した水平方向（ｋ）および垂直方向（ｌ）の画像データ、すなわち、２次元のＦＩＲフィルタ処理における中間の画像データである。
【０１２９】
図８に示した画像処理装置１の構成では、処理演算部５１が水平方向の１次元のＦＩＲフィルタ処理に対応し、処理演算部５２が垂直方向の１次元のＦＩＲフィルタ処理に対応している。従って、画像処理装置１による本第３の画像処理では、図８に示したＨ方向処理に引き続き、図８に示したＶ方向処理を実行する。
【０１３０】
なお、水平方向の１次元のＦＩＲフィルタ処理の結果に対して、垂直方向の１次元のＦＩＲフィルタ処理を行う場合には、水平方向から垂直方向への変換が必要である。このため、図８に示した画像処理装置１の構成では、バッファ３４０でラインメモリを構成し、ラインメモリ３４０ｇを用いて、水平方向から垂直方向への変換を行う。
【０１３１】
ラインメモリ３４０ｇには、処理演算部５１および処理演算部５２のそれぞれが１次元のＦＩＲフィルタ処理を実行する際に用いる画像データに対応した大きさの記憶領域が、バッファ３４０に事前に準備されている。なお、バッファ３４０内のバッファ制御部３０に備えたそれぞれのレジスタの設定についての説明は省略する。なお、ラインメモリ３４０ｇにおける水平方向から垂直方向への変換方法に関する詳細な説明は、後述する。
【０１３２】
次に、画像処理装置１による本第３の画像処理において、処理演算部５０が実行する演算処理について説明する。まず、処理演算部５１による水平方向の１次元のＦＩＲフィルタ処理について説明する。図９は、本実施形態の画像処理装置１による第３の画像処理において水平方向の処理を行う場合の処理演算部５０内の画像データの流れを示した図である。図９には、水平方向に１次元のＦＩＲフィルタ処理を行う処理演算部５１内の画像データの流れを示している。なお、図９には、処理演算部５１の演算処理において使用される処理経路を、太線で示している。
【０１３３】
処理演算部５１には、入力ポートＩｎ１に水平方向、すなわち、行方向の画像データ（以下、「画像データＤ」という）が時系列的に入力される。そして、処理演算部５１は、３つの画像データＤ、すなわち、３列分の画像データＤに対して、順次上式（５）のような、水平方向に３タップの１次元のＦＩＲフィルタ処理を実行し、累積加算した画像データ（以下、「画像データＤｔｍｐ」という）を、ラインメモリ３４０ｇに出力する。
【０１３４】
より具体的には、処理演算部５１の入力ポートＩｎ１には画像データＤが時系列的に入力される。また、処理演算部５１の係数ポートＣ１には３つ目（３列目）の画像データに対応した乗算係数＝ＣＨ２が、係数ポートＣ２には２つ目（２列目）の画像データに対応した乗算係数＝ＣＨ１が、係数ポートＣ３には１つ目（１列目）の画像データに対応した乗算係数＝ＣＨ０が、それぞれ入力される。そして、処理演算部５１の出力ポートＯｕｔ１から画像データＤｔｍｐを出力する。
【０１３５】
処理演算部５１内の遅延素子５１１と遅延素子５１２とのそれぞれは、入力ポートＩｎ１に時系列的に入力された画像データＤを順次遅延させ、３つ分（３列分）の画像データ（現データ、１段遅延データ、および２段遅延データ）を、有効フラグ付加回路６０１を介してセレクタ５２０に出力する。なお、このとき、２段遅延データは１つ目（１列目）の画像データであり、１段遅延データは２つ目（２列目）の画像データであり、現データは３つ目（３列目）の画像データである。また、有効フラグ付加回路６０１は、それぞれの画像データに対して有効フラグを付加しない。
【０１３６】
処理演算部５１内のセレクタ５２０は、３つ目の画像データＤが入力されたときから、有効フラグ付加回路６０１を介して入力された現データ、１段遅延データ、および２段遅延データを、対応する乗算器５３１、乗算器５３２、および乗算器５３３のそれぞれに出力する。
【０１３７】
処理演算部５１内のセレクタ５６２は、対応する係数ポートＣ２から入力された乗算係数＝ＣＨ１を乗算器５３２に出力し、処理演算部５１内のセレクタ５６３は、対応する係数ポートＣ３から入力された乗算係数＝ＣＨ０を乗算器５３３に出力する。
【０１３８】
処理演算部５１内の乗算器５３１は、セレクタ５２０から入力された現データに対して、対応する係数ポートＣ１から入力された乗算係数＝ＣＨ２を乗算し、セレクタ６２０に出力する。また、処理演算部５１内の乗算器５３２は、セレクタ５２０から入力された１段遅延データに対して、セレクタ５６２から入力された乗算係数＝ＣＨ１を乗算し、セレクタ６２０に出力する。また、処理演算部５１内の乗算器５３３は、セレクタ５２０から入力された２段遅延データに対して、セレクタ５６３から入力された乗算係数＝ＣＨ０を乗算し、セレクタ５８０を介して、セレクタ６２０に出力する。
【０１３９】
処理演算部５１内のセレクタ６２０は、乗算器５３１が乗算した結果（現データ×ＣＨ２）の画像データと、乗算器５３２が乗算した結果（１段遅延データ×ＣＨ１）の画像データとを加算器５４１に出力する。また、処理演算部５１内のセレクタ６２０は、セレクタ５８０を介して入力された、乗算器５３３が乗算した結果（２段遅延データ×ＣＨ０）の画像データを加算器５４２に出力する。
【０１４０】
処理演算部５１内の加算器５４１は、セレクタ６２０から入力された画像データ（現データ×ＣＨ２）と、画像データ（１段遅延データ×ＣＨ１）とを加算し、加算器５４２に出力する。また、処理演算部５１内の加算器５４２は、加算器５４１から入力された画像データ（（現データ×ＣＨ２）＋（１段遅延データ×ＣＨ１））と、セレクタ６２０から入力された画像データ（２段遅延データ×ＣＨ０）とを加算し、セレクタ５９０を介して、処理演算部５１が演算処理した結果の画像データＤｔｍｐとして、出力ポートＯｕｔ１から出力する。
【０１４１】
このように、処理演算部５１は、入力ポートＩｎ１に時系列的に入力されたそれぞれの画像データＤに対して、対応する係数ポートＣ１〜Ｃ２のそれぞれに入力された乗算係数での乗算を行った後、累積加算した結果の画像データＤｔｍｐを出力することによって、水平方向に３タップの１次元のＦＩＲフィルタ処理を実行する。
【０１４２】
その後、画像処理装置１による本第３の画像処理では、処理演算部５２による垂直方向の１次元のＦＩＲフィルタ処理を実行する。このとき、画像処理装置１は、上述したように、水平方向の１次元のＦＩＲフィルタ処理の結果、すなわち、画像データＤｔｍｐに対して実行する演算処理の方向を、ラインメモリ３４０ｇを用いて、水平方向から垂直方向に変換する。
【０１４３】
ここで、ラインメモリ３４０ｇにおける水平方向から垂直方向への変換方法について説明する。図１０は、本実施形態の画像処理装置１による第３の画像処理において画像データの方向を変換する処理を説明する図である。上述したように、ラインメモリ３４０ｇは、処理演算部５１および処理演算部５２のそれぞれが１次元のＦＩＲフィルタ処理を実行する際に用いる画像データＤｔｍｐに対応した大きさのラインメモリである。
【０１４４】
ところで、画像処理装置１による本第３の画像処理は、３×３タップの２次元のＦＩＲフィルタ処理であるため、処理演算部５２が垂直方向に３タップの１次元のＦＩＲフィルタ処理を実行するには、３行分の画像データＤｔｍｐが揃っている必要がある。なお、処理演算部５２による垂直方向の１次元のＦＩＲフィルタ処理は、３行分の画像データＤｔｍｐが揃っていれば、処理演算部５１による水平方向の１次元のＦＩＲフィルタ処理と同時に実行することができる。
【０１４５】
ラインメモリ３４０ｇは、図１０に示したように、４行分の画像データＤｔｍｐを記憶するラインメモリで構成されている。より具体的には、処理演算部５２が垂直方向の１次元のＦＩＲフィルタ処理を実行する際に用いる画像データＤｔｍｐを記憶した３行分のラインメモリと、処理演算部５１が水平方向の１次元のＦＩＲフィルタ処理を実行した画像データＤｔｍｐを記憶する１行分のラインメモリとの合計４行分のラインメモリで構成されている。
【０１４６】
そして、処理演算部５１が水平方向の１次元のＦＩＲフィルタ処理を実行し、３行分の画像データＤｔｍｐをラインメモリ３４０ｇに書き込んだ後、処理演算部５２がラインメモリ３４０ｇに記憶されている３行分の画像データＤｔｍｐの内、同一の列の画像データＤｔｍｐを読み出すことによって、水平方向から垂直方向に変換する。図１０には、処理演算部５１が水平方向の１次元のＦＩＲフィルタ処理を実行した画像データＤｔｍｐをラインメモリ３４１ｇに書き込み、処理演算部５２が垂直方向の１次元のＦＩＲフィルタ処理を実行するための３行分の画像データＤｔｍｐをラインメモリ３４２ｇ、３４３ｇ、および３４４ｇの同一列から読み出している場合を示している。
【０１４７】
このようにして、画像処理装置１では、ＦＩＲフィルタ処理を行う画像データＤｔｍｐに対して実行する演算処理の方向を、ラインメモリ３４０ｇを用いて水平方向から垂直方向に変換することができる。なお、処理演算部５１が水平方向の１次元のＦＩＲフィルタ処理を実行した画像データＤｔｍｐを書き込むラインメモリ３４０ｇは、１行分のＦＩＲフィルタ処理が完了する毎に、例えば、図１０に示したラインメモリ３４１ｇからラインメモリ３４２ｇというように、順次次のラインメモリ３４０ｇに移動していく。このラインメモリ３４０ｇの移動に伴い、処理演算部５２が垂直方向の１次元のＦＩＲフィルタ処理を実行するために画像データＤｔｍｐを読み出すラインメモリ３４０ｇも、順次対応するラインメモリ３４０ｇに移動していく。
【０１４８】
次に、処理演算部５２による垂直方向の１次元のＦＩＲフィルタ処理について説明する。図１１は、本実施形態の画像処理装置１による第３の画像処理において垂直方向の処理を行う場合の処理演算部５０内の画像データの流れを示した図である。図１１には、垂直方向に１次元のＦＩＲフィルタ処理を行う処理演算部５２内の画像データの流れを示している。なお、図１１には、処理演算部５２の演算処理において使用される処理経路を、太線で示している。
【０１４９】
処理演算部５２には、入力ポートＩｎ１に垂直方向、すなわち、列方向の画像データＤｔｍｐが時系列的に入力される。そして、処理演算部５２は、３つの画像データＤｔｍｐ、すなわち、３行分の画像データＤｔｍｐが揃ったときに、入力されたそれぞれの画像データＤｔｍｐに基づいて、順次上式（６）のような、垂直方向に３タップの１次元のＦＩＲフィルタ処理を実行し、累積加算した画像データＤ’を、画像処理装置１における２次元のＦＩＲフィルタ処理の画像処理演算の結果として出力する。
【０１５０】
より具体的には、処理演算部５２の入力ポートＩｎ１には画像データＤｔｍｐが時系列的に入力される。また、処理演算部５２の係数ポートＣ１には３つ目（３行目）の画像データに対応した乗算係数＝ＣＶ２が、係数ポートＣ２には２つ目（２行目）の画像データに対応した乗算係数＝ＣＶ１が、係数ポートＣ３には１つ目（１行目）の画像データに対応した乗算係数＝ＣＶ０が、それぞれ入力される。そして、処理演算部５２の出力ポートＯｕｔ１から画像データＤ’を出力する。
【０１５１】
処理演算部５２内の遅延素子５１１と遅延素子５１２とのそれぞれは、入力ポートＩｎ１に時系列的に入力された画像データＤｔｍｐを順次遅延させ、３つ分（３行分）の画像データ（現データ、１段遅延データ、および２段遅延データ）を、有効フラグ付加回路６０１に出力する。なお、このとき、２段遅延データは１つ目（１行目）の画像データであり、１段遅延データは２つ目（２行目）の画像データであり、現データは３つ目（３行目）の画像データである。
【０１５２】
上述したように、処理演算部５２による垂直方向の１次元のＦＩＲフィルタ処理は、３行分の画像データＤｔｍｐが揃ったときに、演算処理を実行する。従って、有効フラグ付加回路６０１が、それぞれの画像データに有効フラグを付加することによって、３行分の画像データＤｔｍｐが揃ったタイミングを判定する。
【０１５３】
処理演算部５２内のカウンタ６１１は、画像データＤｔｍｐが入力される毎に、サイクル数をダウンカウントし、カウントしたサイクル数の値（“２”、“１”、または“０”）を、比較器６１２に出力する。また、処理演算部５２内の比較器６１２は、カウンタ６１１から入力されたサイクル数の値と、予め定めた値＝０とを比較し、カウンタ６１１から入力されたサイクル数の値が“０”となったときに、例えば、比較結果＝１をセレクタ６１３に出力する。また、処理演算部５２内のセレクタ６１３は、比較器６１２から入力された比較結果に基づいて、例えば、有効な画像データであることを表す有効フラグの値＝１、または無効な画像データであることを表す有効フラグの値＝０を、有効フラグ付加回路６０１に出力する。また、処理演算部５２内の有効フラグ付加回路６０１は、セレクタ６１３から入力された有効フラグの値を、実際に現データ、１段遅延データ、および２段遅延データに付加して、セレクタ５２０に出力する。
【０１５４】
このようなカウンタ６１１、比較器６１２、セレクタ６１３、および有効フラグ付加回路６０１の動作によって、処理演算部５２による垂直方向の１次元のＦＩＲフィルタ処理では、入力される画像データＤｔｍｐの３つ目毎（３行目毎）、すなわち、３行分の画像データＤｔｍｐが揃う毎に、現データ、１段遅延データ、および２段遅延データに対して、有効な画像データであることを表す有効フラグの値＝１が付加される。なお、有効フラグ付加回路６０１は、３行分の画像データＤｔｍｐが揃う毎に、現データのみに有効な画像データであることを表す有効フラグの値＝１が付加することもできる。
【０１５５】
処理演算部５２内のセレクタ５２０は、有効フラグの値＝１が付加された現データ、１段遅延データ、および２段遅延データが有効フラグ付加回路６０１から入力されたときに、入力された現データ、１段遅延データ、および２段遅延データを、対応する乗算器５３１、乗算器５３２、および乗算器５３３のそれぞれに出力する。なお、処理演算部５２内の有効フラグ付加回路６０１が、３行分の画像データＤｔｍｐが揃ったときに、現データのみに有効フラグの値＝１を付加する場合には、セレクタ５２０は、有効フラグの値＝１が付加された現データが有効フラグ付加回路６０１から入力されたときに、入力された現データと、同時に入力されている１段遅延データおよび２段遅延データとを、対応する乗算器５３１、乗算器５３２、および乗算器５３３のそれぞれに出力する。
【０１５６】
処理演算部５２内のセレクタ５６２は、対応する係数ポートＣ２から入力された乗算係数＝ＣＶ１を乗算器５３２に出力し、処理演算部５２内のセレクタ５６３は、対応する係数ポートＣ３から入力された乗算係数＝ＣＶ０を乗算器５３３に出力する。
【０１５７】
処理演算部５２内の乗算器５３１は、セレクタ５２０から入力された現データに対して、対応する係数ポートＣ１から入力された乗算係数＝ＣＶ２を乗算し、セレクタ６２０に出力する。また、処理演算部５２内の乗算器５３２は、セレクタ５２０から入力された１段遅延データに対して、セレクタ５６２から入力された乗算係数＝ＣＶ１を乗算し、セレクタ６２０に出力する。また、処理演算部５２内の乗算器５３３は、セレクタ５２０から入力された２段遅延データに対して、セレクタ５６３から入力された乗算係数＝ＣＶ０を乗算し、セレクタ５８０を介して、セレクタ６２０に出力する。
【０１５８】
処理演算部５２内のセレクタ６２０は、乗算器５３１が乗算した結果（現データ×ＣＶ２）の画像データと、乗算器５３２が乗算した結果（１段遅延データ×ＣＶ１）の画像データとを加算器５４１に出力する。また、処理演算部５２内のセレクタ６２０は、セレクタ５８０を介して入力された、乗算器５３３が乗算した結果（２段遅延データ×ＣＶ０）の画像データを加算器５４２に出力する。
【０１５９】
処理演算部５２内の加算器５４１は、セレクタ６２０から入力された画像データ（現データ×ＣＶ２）と、画像データ（１段遅延データ×ＣＶ１）とを加算し、加算器５４２に出力する。また、処理演算部５２内の加算器５４２は、加算器５４１から入力された画像データ（（現データ×ＣＶ２）＋（１段遅延データ×ＣＶ１））と、セレクタ６２０から入力された画像データ（２段遅延データ×ＣＶ０）とを加算し、セレクタ５９０を介して、処理演算部５２が演算処理した結果の画像データＤ’として、出力ポートＯｕｔ１から出力する。
【０１６０】
このように、処理演算部５２は、入力ポートＩｎ１に時系列的に入力されたそれぞれの画像データＤｔｍｐに対して、対応する係数ポートＣ１〜Ｃ２のそれぞれに入力された乗算係数での乗算を行った後、累積加算した結果の画像データＤ’を出力することによって、垂直方向に３タップの１次元のＦＩＲフィルタ処理を実行する。
【０１６１】
上記に述べたように、本実施形態の画像処理装置１では、２つの処理演算部５０を用いて、水平方向と垂直方向とに分けてそれぞれの１次元のＦＩＲフィルタ処理を行うことで、入力された画像データに対する３×３タップの２次元のＦＩＲフィルタ処理の画像処理演算を実行する。
【０１６２】
なお、本第３の画像処理では、処理演算部５０の基本的な構成に追加された有効フラグ（Ｖａｌｉｄ）付加処理の機能を使用して、３行分の画像データＤｔｍｐが揃ったタイミングを判定する場合について説明した。しかし、例えば、図１０に示したラインメモリ３４２ｇ、３４３ｇ、および３４４ｇに記憶された３行分の同一列の画像データＤｔｍｐを同時に読み出すことができるなど、処理演算部５２に同一の列の画像データＤｔｍｐを同時に入力することができる場合には、３行分の画像データＤｔｍｐが揃ったタイミングを判定せずに、垂直方向の１次元のＦＩＲフィルタ処理を実行することができる。この場合には、例えば、ラインメモリ３４２ｇに記憶された画像データＤｔｍｐが入力ポートＩｎ１に、ラインメモリ３４３ｇに記憶された画像データＤｔｍｐが入力ポートＩｎ２に、ラインメモリ３４４ｇに記憶された画像データＤｔｍｐが入力ポートＩｎ３に、それぞれ同時に入力する。そして、処理演算部５２内のセレクタ５２０は、入力ポートＩｎ１〜Ｉｎ３のそれぞれに同時に入力されたそれぞれの画像データＤｔｍｐを、対応する乗算器５３１、乗算器５３２、および乗算器５３３のそれぞれに出力することになる。
【０１６３】
なお、本第３の画像処理では、図５に示した３チャンネルの入力に対応した処理演算部５０を用いて、３×３タップの２次元のＦＩＲフィルタ処理を実行する場合について説明したが、処理演算部５０がさらに多くのチャンネルの入力に対応した処理演算部である場合には、さらに多くのタップ数の２次元のＦＩＲフィルタ処理を実行することができる。
【０１６４】
より具体的には、処理演算部５０に、ＦＩＲフィルタ処理を実行するタップ数と同じ数の入力ポートおよび係数ポートを備え、それぞれの入力ポートから入力された画像データとそれぞれの係数ポートから入力された乗算係数とを乗算する乗算器と、それぞれの乗算器が乗算した画像データを加算する加算器とをさらに備える。または、処理演算部５０に、ＦＩＲフィルタ処理を実行するタップ数−１段の遅延素子と、ＦＩＲフィルタ処理を実行するタップ数と同じ数の乗算器と、それぞれの乗算器が乗算した画像データを加算する加算器とをさらに備え、ＦＩＲフィルタ処理を実行するタップ数に応じた有効フラグ付加処理を実行する。このような構成にすることによって、さらに多くのタップ数に対応したＦＩＲフィルタ処理を実行することができる処理演算部５０を構成することができる。
【０１６５】
＜第４の画像処理＞
次に、画像処理装置１において実行する画像処理の別の一例について説明する。本第４の画像処理では、画像処理装置１に備えた２つの処理演算部５０を用いて、入力された画像データの３行×３列のブロックにおける画像データのブロック加算平均処理を、画像処理装置１における画像処理演算として実行する。なお、画像処理装置１の構成は、図８に示した第３の画像処理を行う場合の構成と同様である。
【０１６６】
本第４の画像処理においても、第３の画像処理と同様に、画像データの３行×３列のブロックを、水平方向と垂直方向とに分けて、水平方向の１行×３列のブロック加算平均処理と、垂直方向の３行×１列のブロック加算平均処理とを行うことで、３行×３列のブロック加算平均処理を実現する。従って、本第４の画像処理においては、図８に示した処理演算部５１が水平方向の１行×３列のブロック加算平均処理を行い、処理演算部５２が垂直方向の３行×１列のブロック加算平均処理を行う。
【０１６７】
また、本第４の画像処理においても、第３の画像処理と同様に、処理演算部５１が水平方向にブロック加算平均した画像データを、処理演算部５２が垂直方向にブロック加算平均する必要があるため、水平方向から垂直方向への変換にバッファ３４０に構成された、図８に示したラインメモリ３４０ｇと同様の構成のラインメモリを使用する。ただし、ラインメモリのデータ数は、ラインメモリ３４０ｇと異なり、ブロック加算平均処理に対応したデータ数である。なお、バッファ３４０内のバッファ制御部３０に備えたそれぞれのレジスタの設定についての説明は省略する。また、ラインメモリ３４０における水平方向から垂直方向への変換方法は、第３の画像処理と同様であるため、説明は省略する。
【０１６８】
また、処理演算部５１と処理演算部５とのそれぞれが行うブロック加算平均の演算処理は、第３の画像処理において、処理演算部５２が実行した演算処理と同様に考えることができる。ただし、ブロック加算平均の演算処理では、乗算器５３１、乗算器５３２、および乗算器５３３による乗算を行わない。つまり、処理演算部５１と処理演算部５とのそれぞれに備えたセレクタ５２０は、有効フラグ付加回路６０１から入力された現データ、１段遅延データ、および２段遅延データを、そのままセレクタ６２０に出力する。
【０１６９】
ここで、処理演算部５０によるブロック加算平均処理について説明する。図１２は、本実施形態の画像処理装置１による第４の画像処理において水平方向または垂直方向の処理を行う場合の処理演算部５０内の画像データの流れを示した図である。本第４の画像処理においては、それぞれの処理演算部５０に入力される画像データが、ブロック加算平均処理を実行する前の画像データであるか、水平方向のブロック加算平均処理を実行した後の画像データであるかが異なるのみで、演算処理する際の処理演算部５０内の画像データの流れは同じである。なお、図１２には、処理演算部５０の演算処理において使用される処理経路を、太線で示している。
【０１７０】
以下の説明においては、処理演算部５１が、水平方向にブロック加算平均の演算処理をする場合について説明する。なお、本第４の画像処理において使用するラインメモリは、上述したようにデータ数が異なるが、図８に示したラインメモリ３４０ｇであるものとして説明する。
【０１７１】
処理演算部５１には、入力ポートＩｎ１に水平方向、すなわち、行方向の画像データＤが時系列的に入力される。そして、処理演算部５１は、３つの画像データＤ、すなわち、３列分の画像データＤが揃ったときに、入力されたそれぞれの画像データＤに対してブロック加算平均処理を実行し、加算平均した画像データＤｔｍｐを、処理演算部５１がブロック加算平均処理した結果として、出力ポートＯｕｔ１から出力し、ラインメモリ３４０ｇに記憶させる。
【０１７２】
処理演算部５１内の遅延素子５１１と遅延素子５１２とのそれぞれは、入力ポートＩｎ１に時系列的に入力された画像データＤを順次遅延させ、３つ分（３列分）の画像データ（現データ、１段遅延データ、および２段遅延データ）を、有効フラグ付加回路６０１に出力する。なお、このとき、２段遅延データは１つ目（１列目）の画像データであり、１段遅延データは２つ目（２列目）の画像データであり、現データは３つ目（３列目）の画像データである。
【０１７３】
上述したように、処理演算部５１による水平方向のブロック加算平均処理は、３列分の画像データＤ毎に演算処理を実行する。従って、有効フラグ付加回路６０１が、３列の区切りとなる画像データに有効フラグを付加することによって、加算平均処理を実行する画像データＤのタイミングを判定する。なお、カウンタ６１１、比較器６１２、セレクタ６１３、および有効フラグ付加回路６０１の動作は、第３の画像処理におけるカウンタ６１１、比較器６１２、セレクタ６１３、および有効フラグ付加回路６０１の動作と同様に考えることができるため、説明は省略する。
【０１７４】
処理演算部５１内のセレクタ５２０は、有効フラグの値＝１が付加された現データ、１段遅延データ、および２段遅延データが有効フラグ付加回路６０１から入力されたときに、入力された現データ、１段遅延データ、および２段遅延データを、セレクタ６２０に出力する。なお、処理演算部５１内の有効フラグ付加回路６０１が、３列分の画像データＤが揃ったときに、現データのみに有効フラグの値＝１を付加する場合には、セレクタ５２０は、有効フラグの値＝１が付加された現データが有効フラグ付加回路６０１から入力されたときに、入力された現データと、同時に入力されている１段遅延データおよび２段遅延データとを、セレクタ６２０に出力する。
【０１７５】
処理演算部５１内のセレクタ６２０は、セレクタ５２０から入力された現データと、１段遅延データとを加算器５４１に出力する。また、処理演算部５１内のセレクタ６２０は、セレクタ５２０から入力された２段遅延データを加算器５４２に出力する。
【０１７６】
処理演算部５１内の加算器５４１は、セレクタ６２０から入力された現データと１段遅延データとを加算し、加算器５４２に出力する。また、処理演算部５１内の加算器５４２は、加算器５４１から入力された画像データ（現データ＋１段遅延データ）と、セレクタ６２０から入力された２段遅延データとを加算し、除算器６３０に出力する。
【０１７７】
処理演算部５１内の除算器６３０は、加算器５４２から入力された画像データ（現データ＋１段遅延データ＋２段遅延データ）を、入力された画像データＤの数で除算し、セレクタ５９０を介して、処理演算部５１が演算処理した結果の画像データＤｔｍｐとして、出力ポートＯｕｔ１から出力する。なお、本第４の画像処理は、３行×３列のブロック加算平均処理であるため、水平方向または垂直方向のそれぞれのブロック加算平均処理を行う処理演算部５１に入力される画像データＤの数は、“３”である。従って、除算器６３０は、加算器５４２から入力された画像データ（現データ＋１段遅延データ＋２段遅延データ）を、“３”で除算した結果を、画像データＤｔｍｐとしてセレクタ５９０を介して出力ポートＯｕｔ１から出力する。
【０１７８】
このように、処理演算部５１は、入力ポートＩｎ１に時系列的に入力されたそれぞれの画像データＤを加算平均した結果の画像データＤｔｍｐを出力することによって、水平方向の１行×３列のブロック加算平均処理を実行する。
【０１７９】
その後、画像処理装置１による本第４の画像処理でも、第３の画像処理と同様に、処理演算部５２が、ラインメモリ３４０ｇに記憶されている水平方向のブロック加算平均処理の結果である画像データＤｔｍｐの内、同一の列の画像データＤｔｍｐを読み出す、すなわち、垂直方向に読み出して、垂直方向の３行×１列のブロック加算平均処理とを行う。
【０１８０】
なお、処理演算部５２による垂直方向のブロック加算平均処理は、上述した処理演算部５１による水平方向のブロック加算平均処理における、画像データＤを画像データＤｔｍｐに置き換え、画像データＤｔｍｐを画像データＤ’に置き換えることで、処理演算部５１によるブロック加算平均処理と同様に考えることができる。従って、処理演算部５２による垂直方向のブロック加算平均処理についての説明は省略する。
【０１８１】
上記に述べたように、本実施形態の画像処理装置１では、２つの処理演算部５０を用いて、水平方向と水平方向とに分けてそれぞれのブロック加算平均処理を行うことで、入力された画像データに対する３行×３列のブロック加算平均処理の画像処理演算を実行する。
【０１８２】
なお、本第４の画像処理では、処理演算部５０の基本的な構成に追加された有効フラグ（Ｖａｌｉｄ）付加処理の機能を使用した場合について説明したが、演算処理に用いる画像データを同時に処理演算部５０に入力することができる場合には、第３の画像処理と同様に、有効フラグ付加処理の機能を使用せずに、ブロック加算平均処理を実行することができる。
【０１８３】
なお、本第４の画像処理では、図５に示した３チャンネルの入力に対応した処理演算部５０を用いて、３行×３列のブロック加算平均処理を実行する場合について説明したが、処理演算部５０がさらに多くのチャンネルの入力に対応した処理演算部である場合には、さらに多くの行および列のブロック加算平均処理を実行することができる。
【０１８４】
より具体的には、処理演算部５０に、ブロック加算平均処理を実行する行または列の大きい方と同じ数の入力ポートを備え、それぞれの入力ポートから入力された画像データを加算する加算器をさらに備える。または、処理演算部５０に、ブロック加算平均処理を実行する行または列の大きい方の数−１段の遅延素子と、それぞれの遅延素子から入力された画像データを加算する加算器をさらに備え、ブロック加算平均処理を実行する行または列の大きい方と同じ数に応じた有効フラグ付加処理を実行する。このような構成にすることによって、さらに多くの行および列に対応したブロック加算平均処理を実行することができる処理演算部５０を構成することができる。
【０１８５】
上記に述べたとおり、本発明を実施するための形態によれば、画像処理装置に備えたプロセッサ（ＣＰＵ）の数とハードウェアアクセラレータ（処理演算部）の数との合計の数−１個に、物理的に分割されたバッファによって、１つ以上のプロセッサと１つ以上のハードウェアアクセラレータとのそれぞれが、演算処理に用いる画像データを受け渡しする。これにより、本発明を実施するための形態では、ハードウェアアクセラレータによる画像処理の高速化と、プロセッサによる画像処理のプログラマビリティとを両立することができる。
【０１８６】
また、本発明を実施するための形態によれば、画像処理装置に備えたバッファ制御部によって、バッファの記憶領域の大きさを任意に変更する。これにより、本発明を実施するための形態では、画像処理装置が画像処理する画像の画角やフィルタのサイズ（タップ数）に応じたバッファを、事前に準備することができる。このことにより、本発明を実施するための形態では、それぞれの画像処理に対して個別に十分な大きさのバッファをそれぞれ準備する場合に比べて、バッファの記憶領域を効率的に使用することができ、メモリ部の面積効率を向上し、画像処理装置に係るコストを削減することができる。
【０１８７】
また、本発明を実施するための形態によれば、画像処理装置に備えたハードウェアアクセラレータ（処理演算部）が実行する演算処理を、画像処理装置が実行する画像処理に応じて任意に変更することができる。これにより、本発明を実施するための形態では、画像処理装置において排他的に実行する画像処理演算同士で、それぞれの演算処理を実行する処理演算部を共有することができる。
【０１８８】
また、本発明を実施するための形態によれば、画像処理装置に備えたハードウェアアクセラレータが実行する演算処理を、ＦＩＲフィルタ処理、マトリックス演算、アルファブレンディング処理、コアリング処理、ブロック累積加算処理、またはブロック加算平均処理のような、ある程度まとまった演算処理の単位で変更する。これにより、本発明を実施するための形態では、演算処理の変更に伴う構成要素の数を少なくすることができ、画像処理装置の回路規模やコストを削減することができる。
【０１８９】
なお、本実施形態においては、処理演算部５０が、３チャンネルの入力に対応している場合の構成について説明した。しかし、処理演算部５０が対応するチャンネル入力の数は、本発明を実施するための形態に限定されるものではなく、処理演算部５０の構成を追加することによって、さらに多くのチャンネルの入力に対応した処理演算部を構成することができる。この場合、それぞれの処理演算部は、画像処理装置が実行する画像処理において、最大のチャンネル数に対応していることが望ましい。ただし、画像処理装置に備える全ての処理演算部が、最大のチャンネル数に対応していない場合でも、同時に実行する画像処理演算のそれぞれに対応した適切なチャンネル数の処理演算部を備えていれば、所望の画像処理演算を実現することができる。
【０１９０】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【０１９１】
１・・・画像処理装置
１０，１１，１２・・・ＣＰＵ（プロセッサ）
２０・・・バス
２１０・・・書き込みアドレスデコーダ
２２０・・・読み出しアドレスデコーダ
３０，３１，３２，３３・・・バッファ制御部
３１１，３２１，３３１・・・データ幅レジスタ
３１２，３２２，３３２・・・ライン数レジスタ
３１３，３２３，３３３・・・バッファ段数レジスタ
４０，４１，４２，４３・・・メモリ部
５０，５１，５２，５３・・・処理演算部（ハードウェアアクセラレータ）
５１１，５１２・・・遅延素子
５２０・・・セレクタ（データセレクタ）
５３１，５３２，５３３・・・乗算器
５４１，５４２・・・加算器
５５０・・・減算器
５６２・・・セレクタ（第１の係数セレクタ）
５６３・・・セレクタ（第２の係数セレクタ）
５７０・・・クリップ回路
５８０・・・セレクタ（乗算結果セレクタ）
５９０・・・セレクタ（出力セレクタ）
６０１・・・有効フラグ付加回路
６１１・・・カウンタ
６１２・・・比較器
６１３・・・セレクタ（有効フラグセレクタ）
６２０・・・セレクタ（第２のデータセレクタ）
６３０・・・除算器
３４０，３４０ａ，３４０ｂ，３４０ｃ，３４０ｄ，３４０ｅ，３４０ｆ，３４０ｇ，３４１ｇ，３４２ｇ，３４３ｇ，３４４ｇ・・・バッファ（バッファ領域）
【図１】
2013239120.tif 000009
【図２】
2013239120.tif 000010
【図３】
2013239120.tif 000011
【図４】
2013239120.tif 000012
【図５】
2013239120.tif 000013
【図６】
2013239120.tif 000014
【図７】
2013239120.tif 000015
【図８】
2013239120.tif 000016
【図９】
2013239120.tif 000017
【図１０】
2013239120.tif 000018
【図１１】
2013239120.tif 000019
【図１２】
2013239120.tif 000020
【図１３】
2013239120.tif 000021
【図１４】
2013239120.tif 000022