以下、本発明の実施形態について、図面を参照して説明する。図1は、本発明の実施形態における画像処理装置の概略構成を示したブロック図である。図1に示した画像処理装置1は、DMAバス10と、DRAM20と、画像処理部30と、CPU(Central Processing Unit)バス60と、CPU50と、を備えている。また、画像処理部30は、接続切り替え部31と、入力DMAモジュール32と、5つの画像処理モジュール33−1〜画像処理モジュール33−5と、出力DMAモジュール34と、を備えている。画像処理装置1は、例えば、静止画用カメラなどの撮像装置に備えられる。
なお、図1においては、画像処理装置1に備えられ、DMAバス10およびCPUバス60のいずれか一方または両方に接続される他の構成要素の図示を省略している。画像処理装置1に備える他の構成要素としては、例えば、撮像装置に備えたレンズによって結像された被写体の光学像を光電変換する固体撮像素子を制御する撮像処理部、画像処理部30によって処理された画像のデータを記録するための記録処理を行う記録処理部、画像処理部30によって処理された画像のデータを画像処理装置1に備えた表示部に表示させるための表示処理部などがある。
DRAM20は、DMAバス10に接続され、撮像装置において処理される様々なデータを記憶する。例えば、撮像装置に備えた図示しない固体撮像素子から出力された静止画像のデータを記憶する。画像処理装置1においては、DRAM20に記憶された1フレームの静止画像のデータを、予め定めた複数の小さなブロックに分割し、画像処理部30が、それぞれのブロックごとに画像処理を行う。
CPU50は、CPUバス60に接続され、画像処理装置1に備えたそれぞれの構成要素や撮像装置に備えた構成要素を制御するシステム制御部である。CPU50は、それぞれの構成要素を制御するためのプログラムやデータに応じて、撮像装置の全体を制御する。なお、CPU50が撮像装置の全体を制御するためのプログラムやデータは、DMAバス10に接続されたDRAM20から、DMAバス10とCPUバス60とを接続する不図示のバス接続部を介して読み出す構成であってもよい。
画像処理部30は、図1に示したように、入力DMAモジュール32、画像処理モジュール33−1〜画像処理モジュール33−5、および出力DMAモジュール34が直列に接続されたパイプライン処理によって、画像処理装置1における画像処理を順次行う。画像処理部30が行う画像処理の内容や動作は、CPUバス60を介して接続されたCPU50によって制御(設定)される。例えば、画像処理部30が行う画像処理の処理モードや、画像処理を行う際のフィルタ係数や歪み係数などの値(パラメータ)、画像処理部30内のデータバッファの構成や動作などが、CPU50によって設定される。
以下の説明においては、1フレームの静止画像のデータを分割したそれぞれのブロックに含まれるデータを、「ブロック画像データ」という。画像処理部30は、ブロック画像データに含まれるそれぞれの画素のデータ(以下、「画素データ」という)を、例えば、予め定めた数の列ごとにDRAM20から読み出し、読み出した画素データを1つの処理単位として画像処理を行う。以下の説明においては、画像処理部30が画像処理を行う1つの処理単位の画素データにおいて、同じ列に含まれる連続した複数の画素データを、「ユニットライン」という。
また、画像処理部30は、1フレームの静止画像のデータに対して行う画像処理を選択する機能を備えている。より具体的には、画像処理部30は、画像処理モジュール33−1〜画像処理モジュール33−5のそれぞれによる画像処理を順次行うこともできるが、画像処理モジュール33−1〜画像処理モジュール33−5のいずれか1つまたは複数によって画像処理を行ったり、画像処理モジュール33−1〜画像処理モジュール33−5の順番を変更して画像処理を行ったりすることができる。以下の説明においては、画像処理モジュール33−1〜画像処理モジュール33−5のそれぞれを区別せずに表すときには、「画像処理モジュール33」という。
接続切り替え部31は、画像処理部30に備えたそれぞれの構成要素が出力した画像データの出力先を切り替える、つまり、画像処理部30に備えたそれぞれの構成要素同士の接続を切り替える。例えば、画像処理部30によって画像処理モジュール33−2のみの画像処理を行う場合には、入力DMAモジュール32の出力端子と画像処理モジュール33−2の入力端子とを接続し、画像処理モジュール33−2の出力端子と出力DMAモジュール34の入力端子とを接続するように、それぞれの構成要素の接続を切り替える。また、例えば、画像処理部30によって画像処理モジュール33−5、画像処理モジュール33−1の順番で画像処理を行う場合には、入力DMAモジュール32の出力端子と画像処理モジュール33−5の入力端子とを接続し、画像処理モジュール33−5の出力端子と画像処理モジュール33−1の入力端子とを接続し、画像処理モジュール33−1の出力端子と出力DMAモジュール34の入力端子とを接続するように、それぞれの構成要素の接続を切り替える。なお、接続切り替え部31は、CPUバス60を介して接続されたCPU50からの制御に応じて、画像処理部30に備えたそれぞれの構成要素の接続の切り替えを行う。
入力DMAモジュール32は、DRAM20に記憶されているブロック画像データに含まれるそれぞれの画素データをユニットラインごとに読み出し、読み出した画素データを、接続切り替え部31を介して、次に画像処理を行う処理モジュールであるいずれかの画像処理モジュール33に出力するための処理モジュールである。入力DMAモジュール32は、CPUバス60を介して接続されたCPU50からの制御に応じて、DMAバス10を介してDRAM20から画素データを読み出し、読み出した画素データを接続切り替え部31によって接続が切り替えられた接続先の画像処理モジュール33に出力する。
なお、入力DMAモジュール32は、予め定めた数のユニットライン分の画素データを一時的に記憶することができるデータバッファを備えている。このため、入力DMAモジュール32は、DMAバス10を介してDRAM20から読み出した画素データをデータバッファに一時記憶し、データバッファに一時記憶した画素データを、接続切り替え部31によって接続が切り替えられた接続先の画像処理モジュール33に出力することもできる。
画像処理モジュール33−1〜画像処理モジュール33−5のそれぞれは、接続切り替え部31によって接続が切り替えられた接続先の入力DMAモジュール32または画像処理モジュール33から、接続切り替え部31を介して入力された画素データに対して予め定めた種々のデジタル的な画像処理を行う処理モジュールである。画像処理モジュール33−1〜画像処理モジュール33−5のそれぞれは、CPUバス60を介して接続されたCPU50からの制御に応じて、接続切り替え部31を介して入力された画素データに対して画像処理を施し、画像処理を施した画素データを、接続切り替え部31によって接続が切り替えられた接続先の画像処理モジュール33または出力DMAモジュール34に出力する。
画像処理モジュール33−1〜画像処理モジュール33−5のそれぞれが行う画像処理には、種々の画像処理がある。例えば、それぞれの画素データに対応するY(輝度)信号とC(色)信号とを生成するYC処理、それぞれの画素データに含まれるノイズを低減するノイズ低減処理、それぞれの画素データで表される画像における高周波成分の抑圧を行うLPF処理、画像における被写体の輪郭を強調するエッジ強調処理などが含まれている。また、例えば、ブロック画像データに含まれるそれぞれの画素の位置(座標)の変換を伴う画像補間処理なども含まれている。この画像補間処理には、例えば、画像の大きさ(サイズ)を変更(拡大や縮小)するリサイズ処理、画像に含まれる倍率色収差や歪曲収差などの歪みの補正を行う歪補正処理、台形補正などの画像の形状の補正を行う形状補正処理など、種々の処理が含まれている。このように、画像処理モジュール33には、予め定めた1つの画像処理の機能を備えた構成の画像処理モジュール33もあれば、同じ処理機能(上述した例では、座標の変換機能)を利用することによって、複数の画像処理を排他的に行う構成の画像処理モジュール33もある。
なお、画像処理モジュール33−1〜画像処理モジュール33−5のそれぞれにも、予め定めた数のユニットライン分の画素データを一時的に記憶することができるデータバッファを備えている。そして、画像処理モジュール33−1〜画像処理モジュール33−5のそれぞれでは、接続切り替え部31を介して入力された画素データをデータバッファに一時記憶するか否かが、CPU50によって制御される。例えば、CPU50は、いずれかの画像処理モジュール33に備えたデータバッファを、その画像処理モジュール33の前段または後段に接続された他の画像処理モジュール33のデータバッファとして利用するように制御する。つまり、CPU50は、画像処理モジュール33自身に備えたデータバッファを、他の画像処理モジュール33に備えたデータバッファと共有するように考えて制御することができる。なお、CPU50によるそれぞれの画像処理モジュール33に備えたデータバッファの制御方法に関する詳細な説明は、後述する。
なお、以下の説明においては、画像処理を施した後の画素データを、DRAM20に記憶されている画像処理を行う対象の画素データと区別して表す場合には、「処理画素データ」という。
出力DMAモジュール34は、接続切り替え部31によって接続が切り替えられた接続先の画像処理モジュール33から、接続切り替え部31を介して入力された処理画素データを、DRAM20に書き込む(記憶する)ための処理モジュールである。出力DMAモジュール34は、CPUバス60を介して接続されたCPU50からの制御に応じて、接続切り替え部31を介して入力された処理画素データを、DMAバス10を介してDRAM20に出力する。
なお、出力DMAモジュール34も、予め定めた数のユニットライン分の処理画素データを一時的に記憶することができるデータバッファを備えている。このため、出力DMAモジュール34は、接続切り替え部31を介して入力された処理画素データをデータバッファに一時記憶し、データバッファに一時記憶した処理画素データを、DMAバス10を介してDRAM20に出力することもできる。
このように、画像処理部30では、それぞれの処理モジュールが、1フレームの静止画像のデータをブロック画像データに分割し、CPUバス60を介して接続されたCPU50からの制御に応じた画像処理を、それぞれのブロック画像データに含まれる画素データに対してユニットラインごとに順次を行うことによって、それぞれのブロック画像データに対する一連の画像処理を行う。
次に、画像処理部30に備えたそれぞれの処理モジュールの構成および動作について説明する。まず、画像処理部30に備えたそれぞれの処理モジュール間の画素データの受け渡し方法について説明する。
図2は、本発明の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール33間のデータの転送方法の一例を示した図である。図2には、画像処理モジュール33−1が画像処理を行った処理画素データを、画像処理モジュール33−2に出力する場合の一例を示している。なお、上述したように、画像処理部30においては、それぞれの処理モジュールが出力する画素データは、接続切り替え部31を介して次に処理を行う処理モジュールに出力される。しかし、図2においては、接続切り替え部31の図示を省略し、画像処理モジュール33−1から画像処理モジュール33−2に、処理画素データを直接出力するものとして示している。
上述したように、画像処理部30では、それぞれの処理モジュールが、複数のユニットラインを1つの処理単位として画像処理を行う。このため、画像処理部30に備えたそれぞれの処理モジュール間での画素データの受け渡しも、1つの処理単位ごとに行われる。図2には、前段の画像処理モジュール33−1が、8つのユニットラインのそれぞれの処理画素データを1つの処理単位として、後段の画像処理モジュール33−2に出力する場合を示している。なお、1つのユニットラインには、画像処理を施した同じ列に含まれる連続した複数の処理画素データが含まれている。
なお、図2においては、画像処理モジュール33−1と画像処理モジュール33−2との間の処理画素データの受け渡し方法(転送方法)の一例を示しているが、入力DMAモジュール32と画像処理モジュール33との間の画素データの受け渡し方法や、画像処理モジュール33と出力DMAモジュール34との間の処理画素データの受け渡し方法も、図2と同様である。また、図2においては、8つのユニットラインのそれぞれの処理画素データを1つの処理単位として受け渡している一例を示しているが、それぞれの処理モジュールの間で受け渡しを行うユニットラインの数は、図2に示した数、つまり、8つに限定されるものではない。
<第1の構成>
次に、画像処理部30に備えたそれぞれの処理モジュールの第1の構成について説明する。第1の構成の画像処理モジュール33は、予め定めた1つの画像処理の演算機能を備えた構成の画像処理モジュール33である。図3は、本発明の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール33の概略構成を示したブロック図である。図3には、第1の構成の画像処理モジュール33における基本的な構成を示している。図3に示した第1の構成の画像処理モジュール33は、入力バッファ331と、セレクタ332と、演算部333と、制御部334と、を備えている。また、制御部334は、設定レジスタ3341を備えている。
入力バッファ331は、画像処理モジュール33に入力された入力データを、一時的に記憶するデータバッファである。入力バッファ331は、例えば、SRAM(Static Random Access Memory)などのメモリで構成される。入力バッファ331は、前段の処理モジュールから入力された予め定めた数のユニットライン分の画素データを、入力データとして記憶することができる記憶容量をもっている。入力バッファ331は、制御部334から入力されたバッファ制御信号に応じて、入力された入力データを一時記憶する。
画像処理モジュール33では、入力された入力データ(画素データ)に対して施す画像処理によって必要なユニットラインの数が異なる。それぞれの画像処理モジュール33に備える入力バッファ331が一時記憶するユニットライン数、つまり、入力バッファ331の記憶容量は、それぞれの画像処理モジュール33が行う画像処理の内容、それぞれの画像処理モジュール33に画素データが入力されてから画像処理を施した後の画素データを出力するまでの遅延時間、前段および後段に接続された処理モジュールに備えた入力バッファ331の記憶容量や遅延時間などに基づいて予め決定されている。
なお、入力バッファ331は、予め定めた数のユニットライン分の画素データ(入力データ)を記憶する記憶容量の組を2つ備え、一方の記憶容量の組への画素データの書き込みと、他方の記憶容量の組からの画素データの読み出しとを交互に切り替えることによって、1つの処理単位の画素データの入出力を同時期に行うことができるように動作する、いわゆる、ダブルバッファで構成されていてもよい。
セレクタ332は、演算部333に出力する画素データを選択する選択部である。セレクタ332は、制御部334から入力されたスルー選択信号に応じて、入力バッファ331に一時記憶された入力データ(画素データ)、または画像処理モジュール33に現在入力されている入力データ(画素データ)のいずれか一方の入力データ(画素データ)を、演算部333に出力する。つまり、セレクタ332は、前段の処理モジュールから入力されて入力バッファ331に一時記憶された画素データ、または前段の処理モジュールから現在入力されているそのままの画素データのいずれか一方の画素データを、演算部333に転送する。
演算部333は、入力された画素データに対して予め定めた種々のデジタル的な画像処理の演算を行う。演算部333は、制御部334から入力されたモード選択信号に応じた画像処理の演算を行う。演算部333は、画像処理の演算を行って生成した処理画素データを、出力データとして画像処理モジュール33の外部に出力する。つまり、演算部333は、生成した処理画素データを、接続切り替え部31を介して他の画像処理モジュール33または出力DMAモジュール34に出力する。
制御部334は、画像処理モジュール33の前段に接続された他の処理モジュールとの間での入力データ(画素データ)と、後段に接続された他の処理モジュールとの間での出力データ(処理画素データ)との受け渡しの制御を行う。このとき、制御部334は、画像処理モジュール33の動作状態を表す状態通知信号を、前段および後段の処理モジュールに出力する。
また、制御部334は、CPU50から入力された設定信号によって設定レジスタ3341に記憶された設定に基づいて、制御部334自身を備えた画像処理モジュール33内のそれぞれの構成要素の動作を制御する。設定レジスタ3341には、演算部333が行う画像処理の演算を行う際の処理モードやパラメータ、セレクタ332を介して演算部333に入力する入力データ(画素データ)を選択するパラメータなどが、CPU50によって記憶(設定)される。そして、制御部334は、CPU50によって設定レジスタ3341に設定されたセレクタ332のパラメータに応じた入力データ(画素データ)の経路を選択するためのスルー選択信号を、セレクタ332に出力する。これにより、セレクタ332は、スルー選択信号に応じた経路で、入力データ(画素データ)を演算部333に転送する。また、制御部334は、CPU50によって設定レジスタ3341に設定された演算部333の処理モードやパラメータに応じた動作をするためのモード選択信号を、演算部333に出力する。これにより、演算部333は、セレクタ332を介して入力された入力データ(画素データ)に対して、モード選択信号に応じた画像処理の演算を行う。
より具体的には、CPU50によって設定レジスタ3341に設定されたセレクタ332のパラメータが、画像処理モジュール33に入力された入力データ(画素データ)を一時記憶することを表している場合、制御部334は、入力バッファ331に一時記憶された入力データ(画素データ)を演算部333に出力する経路を選択するためのスルー選択信号を、セレクタ332に出力する。これにより、セレクタ332は、制御部334によって入力バッファ331に一時記憶された画素データが読み出された際に、読み出された画素データを演算部333に転送する。そして、制御部334は、入力バッファ331に空いている記憶容量があるか否かによって、入力バッファ331の動作を制御する。
入力バッファ331に空いている記憶容量がある場合、入力バッファ331は、画像処理モジュール33に入力された入力データ(画素データ)を一時記憶することができる状態である。この場合、制御部334は、前段の処理モジュールからの入力データを受け付けることができる状態であることを表す状態通知信号として、入力データ(画素データ)の出力を要求するデータリクエスト信号を、前段の処理モジュールに出力する。そして、制御部334は、出力したデータリクエスト信号に応じて前段の処理モジュールから入力データ(画素データ)を出力することを表すデータアクノリッジ信号が入力されると、データアクノリッジ信号に対応する入力データ(画素データ)を受け取って一時記憶する(書き込む)ように制御するためのバッファ制御信号を生成し、生成したバッファ制御信号を入力バッファ331に出力する。このとき、制御部334は、前段の処理モジュールから入力データ(画素データ)と共に入力されたデータ有効信号に基づいて、現在入力された入力データ(画素データ)が有効なデータであるか否かを判定する。このデータ有効信号は、ユニットラインに含まれるそれぞれの画素データが、有効な画素データであるか否かを表す信号である。そして、制御部334は、有効な入力データ(画素データ)のみが入力バッファ331に書き込まれるタイミングのバッファ制御信号を生成する。これにより、演算部333は、制御部334によって入力バッファ331に一時記憶された画素データが読み出された際に、入力バッファ331に一時記憶された有効な画素データに対して、モード選択信号に応じた画像処理の演算を行うことができる。
また、制御部334は、後段の処理モジュールから入力されたデータリクエスト信号に応じて、演算部333が画像処理の演算を行った出力データ(処理画素データ)を出力することを表すデータアクノリッジ信号を、後段の処理モジュールに出力する。このとき、制御部334は、入力バッファ331に一時記憶された入力データ(画素データ)を読み出すように制御するためのバッファ制御信号を生成し、生成したバッファ制御信号を入力バッファ331に出力する。これにより、入力バッファ331に一時記憶された有効な入力データ(画素データ)が、セレクタ332を介して演算部333に入力される。そして、演算部333は、入力された有効な画素データに対してモード選択信号に応じた画像処理の演算を行い、画像処理の演算を行った後の処理画素データを、出力データとして後段の処理モジュールに出力する。なお、演算部333が画像処理の演算を行って生成したユニットラインに含まれるそれぞれの出力データ(処理画素データ)が、有効な処理画素データであるか否かを表すデータ有効信号は、演算部333が画像処理の演算を行う際に生成して処理画素データと共に出力する。しかし、このデータ有効信号は、制御部334が、演算部333に画素データが入力されてから処理画素データが出力されるまでの遅延時間(以下、「レイテンシ」という)に基づいて生成して出力してもよい。
一方、入力バッファ331に空いている記憶容量がない場合、入力バッファ331は、画像処理モジュール33に入力された入力データ(画素データ)を一時記憶することができない状態である。この場合、制御部334は、前段の処理モジュールからの入力データを受け付けることができない状態であることを表す状態通知信号として、入力データ(画素データ)の出力を要求しないことを表す信号を、前段の処理モジュールに出力する。なお、このときの状態通知信号は、前段の処理モジュールに入力データ(画素データ)の出力を要求しないことを、入力データ(画素データ)の出力を要求するデータリクエスト信号の論理レベルで表してもよいし、例えば、パイプライン処理が(一時)停止していることを表すパイプラインストール信号など、データリクエスト信号と異なる信号で表してもよい。そして、制御部334は、入力バッファ331に一時記憶している画素データを保持するように制御するためのバッファ制御信号を生成し、生成したバッファ制御信号を入力バッファ331に出力する。
また、CPU50によって設定レジスタ3341に設定されたセレクタ332のパラメータが、画像処理モジュール33に入力された入力データ(画素データ)を一時記憶しないことを表している場合、制御部334は、前段の処理モジュールから入力された入力データ(画素データ)を入力バッファ331に一時記憶せずに直接、演算部333に出力する経路を選択するためのスルー選択信号を、セレクタ332に出力する。つまり、制御部334は、前段の処理モジュールから入力された入力データ(画素データ)を、入力バッファ331をスルーして演算部333に転送する経路を選択するためのスルー選択信号を、セレクタ332に出力する。これにより、セレクタ332は、現在入力されている入力データ(画素データ)をそのまま、演算部333に転送する。このとき、制御部334は、前段の処理モジュールから入力データ(画素データ)と共に入力されたデータ有効信号に基づいて、現在入力された入力データ(画素データ)が有効なデータであるか否かを判定し、データ有効信号が有効であることを表している入力データ(画素データ)のタイミングを、演算部333に通知する。なお、制御部334は、有効な入力データ(画素データ)のタイミングを通知するために、入力されたデータ有効信号を演算部333に出力してもよい。これにより、演算部333は、直接入力された有効な画素データに対してモード選択信号に応じた画像処理の演算を行い、画像処理の演算を行った後の処理画素データを、出力データとして後段の処理モジュールに出力する。また、制御部334は、後段の処理モジュールから入力されたデータリクエスト信号に応じたデータアクノリッジ信号を、後段の処理モジュールに出力する。なお、演算部333が画像処理の演算を行った出力データ(処理画素データ)が、有効な処理画素データであるか否かを表すデータ有効信号は、CPU50によって設定レジスタ3341に設定されたセレクタ332のパラメータが、画像処理モジュール33に入力された入力データ(画素データ)を一時記憶することを表している場合と同様である。
このような構成によって画像処理部30に備えた第1の構成の画像処理モジュール33は、CPU50からの制御に応じて、前段の処理モジュールからの入力データ(画素データ)の受け付けと、画像処理の演算を行う画素データの選択(切り替え)と、演算部333による画像処理の演算とを行う。
<第2の構成>
次に、画像処理部30に備えたそれぞれの処理モジュールの第2の構成について説明する。上述したように、画像処理部30に備えた画像処理モジュール33には、予め定めた1つの画像処理の機能を備えた構成の画像処理モジュール33のみではなく、座標の変換機能などの同じ処理機能を利用することによって、複数の画像処理を排他的に行う構成の画像処理モジュール33もある。第2の構成の画像処理モジュール33は、座標の変換機能を利用することによって種々の画像補間処理を排他的に行う、複数の画像処理の演算機能を備えた構成の画像処理モジュール33である。以下の説明においては、第2の構成の画像処理モジュール33を、「画像処理モジュール43」という。
図4は、本発明の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール43の概略構成を示したブロック図である。図4には、第2の構成の画像処理モジュール43における基本的な構成を示している。図4に示した第2の構成の画像処理モジュール43は、入力バッファ431と、セレクタ332と、演算部433と、制御部434と、を備えている。また、演算部433は、座標算出部4331と、補間演算部4332と、を備えている。また、制御部434は、設定レジスタ3341と、バッファリードアドレス生成部4342と、を備えている。
画像処理モジュール43は、複数の画像処理の演算機能を備えている点が第1の構成の画像処理モジュール33と異なるが、画像処理モジュール43も、第1の構成の画像処理モジュール33と同様に、画像処理部30においてパイプライン処理を行う構成要素である。このため、第2の構成の画像処理モジュール43の構成要素には、図3に示した第1の構成の画像処理モジュール33に備えた構成要素と同様の構成要素を含んでいる。従って、以下の説明においては、画像処理モジュール43の構成要素において、第1の構成の画像処理モジュール33の構成要素と同様の構成要素には同一の符号を付与し、それぞれの構成要素における異なる点のみを説明する。
入力バッファ431は、第1の構成の画像処理モジュール33に備えた入力バッファ331と同様に、前段の処理モジュールから入力された予め定めた数のユニットライン分の入力データ(画素データ)を記憶することができる記憶容量をもったデータバッファであり、制御部434から入力されたバッファ制御信号(バッファライト信号)に応じて、入力された入力データを一時記憶する。また、入力バッファ431は、第1の構成の画像処理モジュール33に備えた入力バッファ331と同様に、制御部434から入力されたバッファ制御信号(バッファリード信号)に応じて一時記憶された画素データを読み出してセレクタ332に出力する。
画像処理モジュール43でも、第1の構成の画像処理モジュール33に備えた入力バッファ331と同様に、入力バッファ431が一時記憶するユニットライン数(入力バッファ431の記憶容量)が予め決定されている。ただし、画像処理モジュール43は、複数の画像処理の演算機能によって、種々の画像補間処理を排他的に行う。このため、画像処理モジュール43では、画像処理モジュール43が実行するそれぞれの画像処理(画像補間処理)ごとに、必要とするユニットライン数、つまり、入力バッファ431の記憶容量が異なる。また、画像処理モジュール43が同じ画像処理を実行する場合でも、画像処理(画像補間処理)の設定値(パラメータ)によって、必要とするユニットライン数(入力バッファ431の記憶容量)が異なる。
このため、画像処理モジュール43では、画像処理モジュール43が実行するそれぞれの画像処理(画像補間処理)において用いるユニットライン数の画素データを記憶することができるようにするため、必要とする最大のユニットライン数に対応する記憶容量が、入力バッファ431の記憶容量として予め決定されている。
ここで、入力バッファ431が一時記憶するユニットライン数、すなわち、入力バッファ431の記憶容量の一例について説明する。図5は、本発明の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール43に備えた入力バッファ431の一例を説明する図である。図5には、座標の変換機能を利用することによって、リサイズ処理、歪補正処理、形状補正処理などの画像補間処理を行うことができる構成の画像処理モジュール43に備えた入力バッファ431の一例を模式的に示している。
上述したように、入力バッファ431は、予め定めた数のユニットライン分の画素データを記憶することができる記憶容量を備えている。図5(a)には、列方向に連続した複数の画素データのそれぞれを一時記憶する1つのユニットラインに対応したユニットライン記憶領域4311を、行方向に複数並べた構成の入力バッファ431を示している。なお、図5(a)に示した入力バッファ431の構成は、第1の構成の画像処理モジュール33に備えた入力バッファ331と同様である。
入力バッファ431の記憶容量は、上述したように、複数の画像処理の演算機能を備えた構成の画像処理モジュール43が実行するそれぞれの画像処理において必要とする最大のユニットライン数に対応する記憶容量に決められる。しかし、画像処理モジュール43では、実行する画像処理によって、必要なユニットライン数が異なる。図5(b−1)〜図5(b−3)と図5(c−1)および図5(c−2)とには、画像処理モジュール43が実行する画像処理において必要なユニットライン数の一例を模式的に示している。
例えば、画像処理モジュール43が歪曲収差の歪補正処理を行う場合、歪補正処理を行った後の1つのユニットライン分の処理画素データを出力するために必要な画素データのユニットライン数は、撮像装置に備えたレンズの歪曲収差の特性に基づいてCPU50によって設定レジスタ3341に設定された歪み係数の値(パラメータ)に応じて決まる。画像処理モジュール43が歪曲収差の歪補正処理を行う場合、入力バッファ431に一時記憶された画素データを歪み係数の値に基づいて用いることによって、歪曲収差の歪補正処理を行った1つのユニットライン分の画素データを生成する。このため、画像処理モジュール43が歪曲収差の歪補正処理を行う場合には、図5(b−1)〜図5(b−3)に示したように、画像処理モジュール43に備えた入力バッファ431が一時記憶することができるユニットライン数の内、歪み係数の値に応じた予め定めた数のユニットライン数の画素データを記憶するユニットライン記憶領域4311が使用される。図5(b−1)〜図5(b−3)には、画像処理モジュール43が歪曲収差の歪補正処理を行って1つのユニットライン分の処理画素データを生成する際に入力バッファ431から読み出す画素データの入力バッファ431内の位置の一例を模式的に示している。
歪み係数の値が小さい場合、すなわち、レンズの歪みが少ない場合には、画像処理モジュール43は、図5(b−1)に示した位置の画素データを用いることによって歪曲収差の歪補正処理を行った1つのユニットライン分の処理画素データを生成することができる。つまり、レンズの歪みが少ない場合には、少ないユニットライン数の画素データを用いて、入力された入力データ(画素データ)に対して歪曲収差の歪補正処理を行うことができる。しかし、歪曲収差の歪補正処理では、歪み係数の値が大きくなるにつれて、すなわち、レンズの歪みが大きくなるにつれて、歪曲収差の歪補正処理に用いるユニットライン数が多くなる。つまり、図5(b−2)、図5(b−3)に示したように、歪曲収差の歪補正処理に用いる画素データの位置の範囲が、歪み係数の値が大きくなるにつれて広がるため、必要なユニットライン数が多くなる。
また、例えば、画像処理モジュール43がリサイズ処理を行う場合、リサイズ処理を行った後の1つのユニットライン分の処理画素データを出力するために必要な画素データのユニットライン数は、CPU50によって設定レジスタ3341に設定されたリサイズ率の値(パラメータ)に応じて決まる。画像処理モジュール43がリサイズ処理を行う場合、入力バッファ431に一時記憶された画素データをリサイズ率のパラメータに基づいた間隔ごとに用いることによって、リサイズ処理を行った1つのユニットライン分の処理画素データを生成する。このため、画像処理モジュール43がリサイズ処理を行う場合には、図5(c−1)および図5(c−2)に示したように、画像処理モジュール43に備えた入力バッファ431が一時記憶することができるユニットライン数の内、リサイズ率に応じた予め定めた数のユニットライン数の画素データを記憶するユニットライン記憶領域4311のみが使用される。図5(c−1)および図5(c−2)には、画像処理モジュール43がリサイズ処理を行って1つのユニットライン分の処理画素データを生成する際に入力バッファ431から読み出す画素データの入力バッファ431内の位置の一例を模式的に示している。
例えば、画像を縮小する場合において、リサイズ率の値が小さい場合、すなわち、画像の縮小率が小さい場合には、画像処理モジュール43は、図5(c−1)に示したような、少ないユニットライン数の範囲内の予め定めた位置の画素データを読み出してリサイズ処理を行うことによって、入力された入力データ(画素データ)に対してリサイズ処理を行った1つのユニットライン分の処理画素データを生成することができる。一方、リサイズ率の値が大きい場合、すなわち、画像の縮小率が大きい場合には、リサイズ処理に用いるユニットライン数の範囲が大きくなる。つまり、画像処理モジュール43は、図5(c−2)に示したように、より多くのユニットライン数の範囲内の予め定めた位置の画素データを読み出すことによって、リサイズ処理を行った1つのユニットライン分の処理画素データを生成することになる。
このように、複数の画像処理の演算機能を備えた構成の画像処理モジュール43では、実行するそれぞれの画像処理において必要なユニットライン数が異なるため、それぞれの画像処理が必要とする最大のユニットライン分の画素データを記憶することができる記憶容量が、入力バッファ431の記憶容量として予め決定されている。
なお、画像処理モジュール43が倍率色収差の歪補正処理を行う場合、台形補正などの形状補正処理を行う場合、また、その他のフィルタ処理を行う場合などにおける入力バッファ431の記憶容量の決定方法も図5に示した一例と同様に考えることができる。
なお、入力バッファ431も、第1の構成の画像処理モジュール33に備えた入力バッファ331と同様に、ダブルバッファで構成されていてもよい。
セレクタ332は、制御部434から入力されたスルー選択信号に応じて、入力バッファ431から読み出された画素データ、または前段の処理モジュールから現在入力されているそのままの入力データ(画素データ)のいずれか一方の画素データを、演算部433に転送する。
演算部433は、入力された画素データに対して、制御部434から入力されたモード選択信号に応じた画像処理(画像補間処理)の演算(リサイズ処理、歪補正処理、または形状補正処理などの画像補間処理の演算)を行う。演算部433では、画像処理の演算を行う際に用いる画素データの位置(座標)を、演算部433自体が決定する。そして、演算部433は、決定した座標に位置する画素データに基づいて、画像処理の演算を行う。
より具体的には、座標算出部4331が、制御部434から入力されたモード選択信号、つまり、CPU50によって設定レジスタ3341に設定された画像処理(画像補間処理)の設定値(リサイズ率のパラメータや歪み係数のパラメータなど)に基づいて、画素データを補間する補間演算を行う際に用いる画素データの座標を算出する。そして、座標算出部4331は、算出した座標の情報(以下、「座標情報」という)を、補間演算部4332と制御部434とのそれぞれに出力する。
補間演算部4332は、座標算出部4331から出力された座標情報と、この座標情報に基づいて入力バッファ431から読み出されてセレクタ332を介して入力された画素データとに基づいて、補間演算(例えば、バイリニア補間やバイキュービック補間)を行う。演算部433は、補間演算を行って生成した処理画素データを出力データとして、接続切り替え部31を介して後段の処理モジュールに出力する。
制御部434は、第1の構成の画像処理モジュール33に備えた制御部334と同様に、画像処理モジュール43の前段および後段に接続された処理モジュールとの間での入力データ(画素データ)および出力データ(処理画素データ)との受け渡しの制御を行う。なお、このときに制御部434が前段および後段の処理モジュールに出力する状態通知信号は、第1の構成の画像処理モジュール33に備えた制御部334と同様である。
また、制御部434は、第1の構成の画像処理モジュール33に備えた制御部334と同様に、CPU50から入力された設定信号によって設定レジスタ3341に記憶された設定に基づいて、制御部434自身を備えた画像処理モジュール43内のそれぞれの構成要素の動作を制御する。画像処理モジュール43には、セレクタ332のパラメータ、演算部433が行う補間演算を行う際の処理モード(リサイズ処理モード、歪補正処理モード、形状補正処理モード)、画像処理(画像補間処理)の設定値(リサイズ率や歪み係数のパラメータなど)が、CPU50によって設定レジスタ3341に記憶(設定)される。なお、設定レジスタ3341に設定されたパラメータや処理モードに応じてセレクタ332や演算部433に出力するスルー選択信号やモード選択信号は、第1の構成の画像処理モジュール33に備えた制御部334と同様である。
また、制御部434は、演算部433から入力された座標情報に基づいて、入力バッファ431に一時記憶されている画素データを読み出し、読み出した画素データを、セレクタ332を介して演算部433に転送する。
より具体的には、バッファリードアドレス生成部4342が、演算部433から入力された座標情報に示された、補間演算を行う際に用いる画素データの座標に対応する画素データが一時記憶された入力バッファ431の記憶領域を指定するためのアドレス(以下、「バッファリードアドレス」という)を生成する。そして、制御部434は、バッファリードアドレス生成部4342が生成したバッファリードアドレスを含むバッファ制御信号(バッファリード信号)を入力バッファ431に出力する。これにより、演算部433に備えた座標算出部4331が算出した座標に位置する画素データが入力バッファ431から読み出され、セレクタ332を介して演算部433に転送される。なお、制御部434における入力バッファ431の動作の制御は、演算部433から入力された座標情報に示された画素データを入力バッファ431から読み出して転送する以外は、第1の構成の画像処理モジュール33に備えた制御部334と同様である。
このような構成によって画像処理部30に備えた第2の構成の画像処理モジュール33(画像処理モジュール43)は、第1の構成の画像処理モジュール33と同様に、CPU50からの制御に応じて、前段の処理モジュールからの入力データ(画素データ)の受け付けと、画像処理の演算を行う画素データの選択(切り替え)と、演算部333による画像処理の演算とを行う。
そして、画像処理部30では、パイプライン接続されたそれぞれの処理モジュールが、それぞれのブロック画像データに含まれるユニットラインごとの画素データに対する画像処理の演算を順次行うことによって、それぞれのブロック画像データに対する一連の画像処理、つまり、パイプライン処理を行う。
なお、画像処理装置1では、画像処理部30に備えたそれぞれの処理モジュールによるパイプライン構成や、画像処理部30がパイプライン処理よって1フレームの静止画像のデータに対して行う画像処理などを、必要に応じてCPU50が設定することができる。つまり、画像処理装置1では、画像処理部30に備えた接続切り替え部31によって、画像処理部30に備えたそれぞれの処理モジュールの接続を切り替えることによって、様々なパイプライン構成を実現することができる。また、画像処理モジュール33に備えた制御部334内の設定レジスタ3341に設定する演算部333の処理モードやフィルタ係数などのパラメータと、画像処理モジュール43に備えた制御部434内の設定レジスタ3341に設定する演算部433の処理モードや歪み係数などのパラメータとを、画像処理部30において実行する画像処理ごとに設定することができる。また、画像処理モジュール33に備えた演算部333に入力データを転送する経路のパラメータと、画像処理モジュール43に備えた演算部433に入力データを転送する経路のパラメータとを、画像処理部30において実行する画像処理ごとに設定することができる。例えば、撮像装置に歪曲収差の大きいレンズが装着された場合には、画像処理部30内のパイプライン構成を、歪曲収差の歪補正処理を行う構成とし、歪曲収差の歪補正処理を行う画像処理モジュール43における歪み係数のパラメータを、装着されたレンズの歪曲収差の特性に対応する値にすることができる。
次に、画像処理部30に備えたそれぞれの処理モジュールの動作について説明する。図6は、本発明の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール(画像処理モジュール33および画像処理モジュール43)の接続の一例を示した図である。図6には、画像処理モジュール33−1、画像処理モジュール43−2、画像処理モジュール33−3、および画像処理モジュール33−4が直列に接続されたパイプライン構成によって、一連のパイプライン処理を行う構成を示している。なお、図6では、画像処理部30に備えた入力DMAモジュール32および出力DMAモジュール34の図示を省略している。
上述したように、画像処理モジュール33は、YC処理、ノイズ低減処理、LPF処理、エッジ強調処理などの画像処理の機能を備えており、画像処理モジュール43は、リサイズ処理、歪補正処理、形状補正処理などの複数の画像処理の演算機能を備えている。図6に示したパイプライン構成の一例は、例えば、画像処理モジュール33−1がYC処理を行い、画像処理モジュール43−2が歪曲収差の歪補正処理を行い、画像処理モジュール33−3がノイズ低減処理を行い、画像処理モジュール33−4がエッジ強調処理を行うパイプライン構成である。
画像処理部30では、上述したように、接続切り替え部31が、CPU50からの制御に応じて、画像処理部30内のそれぞれの処理モジュールの接続を切り替える。図6には、接続切り替え部31がそれぞれの処理モジュールの間で画素データや処理画素データの受け渡しを行うために接続を切り替える入力信号および出力信号として、データリクエスト信号REQ、データアクノリッジ信号ACK、入力データDAT、出力データDAT、およびデータ有効信号VALIDのそれぞれを示している。なお、図6においては、接続切り替え部31内の入力信号および出力信号に、その信号を出力する側の処理モジュールに付与した「−」に続く数字の部分を付与して示している。例えば、画像処理モジュール43−2が出力し、画像処理モジュール33−1に入力されるデータリクエスト信号REQを「データリクエスト信号REQ2」として示している。
より具体的には、図6のパイプライン構成の一例では、接続切り替え部31が、画像処理モジュール33−1の前段の処理モジュール(例えば、入力DMAモジュール32)のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの出力端子と、画像処理モジュール33−1のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの入力端子とを接続する。また、接続切り替え部31は、画像処理モジュール33−1のデータリクエスト信号REQの出力端子と、画像処理モジュール33−1の前段の処理モジュール(例えば、入力DMAモジュール32)のデータリクエスト信号REQの入力端子とを接続する。これにより、画像処理モジュール33−1の前段の処理モジュール(例えば、入力DMAモジュール32)の出力信号であるデータアクノリッジ信号ACK0、データ有効信号VALID0、および入力データDAT0が画像処理モジュール33−1に、画像処理モジュール33−1の出力信号であるデータリクエスト信号REQ1が、前段の処理モジュール(例えば、入力DMAモジュール32)にそれぞれ入力される。
また同様に、接続切り替え部31は、画像処理モジュール43−2の前段の画像処理モジュール33−1のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの出力端子と、画像処理モジュール43−2のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの入力端子とを接続する。また、接続切り替え部31は、画像処理モジュール43−2のデータリクエスト信号REQの出力端子と、画像処理モジュール43−2の前段の画像処理モジュール33−1のデータリクエスト信号REQの入力端子とを接続する。これにより、画像処理モジュール43−2の前段の画像処理モジュール33−1の出力信号であるデータアクノリッジ信号ACK1、データ有効信号VALID1、および処理画素データDAT1が画像処理モジュール43−2に、画像処理モジュール43−2の出力信号であるデータリクエスト信号REQ2が、前段の画像処理モジュール33−1にそれぞれ入力される。
また同様に、接続切り替え部31は、画像処理モジュール33−3の前段の画像処理モジュール43−2のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの出力端子と、画像処理モジュール33−3のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの入力端子とを接続する。また、接続切り替え部31は、画像処理モジュール33−3のデータリクエスト信号REQの出力端子と、画像処理モジュール33−3の前段の画像処理モジュール43−2のデータリクエスト信号REQの入力端子とを接続する。これにより、画像処理モジュール33−3の前段の画像処理モジュール43−2の出力信号であるデータアクノリッジ信号ACK2、データ有効信号VALID2、および処理画素データDAT2が画像処理モジュール33−3に、画像処理モジュール33−3の出力信号であるデータリクエスト信号REQ3が、前段の画像処理モジュール43−2にそれぞれ入力される。
また同様に、接続切り替え部31は、画像処理モジュール33−4の前段の画像処理モジュール33−3のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの出力端子と、画像処理モジュール33−4のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの入力端子とを接続する。また、接続切り替え部31は、画像処理モジュール33−4のデータリクエスト信号REQの出力端子と、画像処理モジュール33−4の前段の画像処理モジュール33−3のデータリクエスト信号REQの入力端子とを接続する。これにより、画像処理モジュール33−4の前段の画像処理モジュール33−3の出力信号であるデータアクノリッジ信号ACK3、データ有効信号VALID3、および処理画素データDAT3が画像処理モジュール33−4に、画像処理モジュール33−4の出力信号であるデータリクエスト信号REQ4が、前段の画像処理モジュール33−3にそれぞれ入力される。
また同様に、接続切り替え部31は、画像処理モジュール33−4の後段の処理モジュール(例えば、出力DMAモジュール34)のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの入力端子と、画像処理モジュール33−4のデータアクノリッジ信号ACK、データ有効信号VALID、および入力データDATの出力端子とを接続する。また、接続切り替え部31は、画像処理モジュール33−4のデータリクエスト信号REQの入力端子と、画像処理モジュール33−4の後段の処理モジュール(例えば、出力DMAモジュール34)のデータリクエスト信号REQの出力端子とを接続する。これにより、画像処理モジュール33−4の出力信号であるデータアクノリッジ信号ACK4、データ有効信号VALID4、および処理画素データDAT4が画像処理モジュール33−4の後段の処理モジュール(例えば、出力DMAモジュール34)に、画像処理モジュール33−4の後段の処理モジュール(例えば、出力DMAモジュール34)の出力信号であるデータリクエスト信号REQ5が、画像処理モジュール33−4にそれぞれ入力される。
また、図6のパイプライン構成の一例では、CPU50が、それぞれの画像処理モジュール33の制御部334に備えた設定レジスタ3341、および画像処理モジュール43の制御部434に備えた設定レジスタ3341に、入力された入力データDATを一時記憶することを表すセレクタ332のパラメータを設定している。これにより、それぞれの画像処理モジュール33の制御部334は、入力バッファ331に一時記憶された入力データDATを演算部333に出力する経路を選択するためのスルー選択信号をセレクタ332に出力し、セレクタ332は、制御部334によって読み出された入力データDATを演算部333に転送する。また、画像処理モジュール43の制御部434は、入力バッファ431に一時記憶された入力データDATを演算部433に出力する経路を選択するためのスルー選択信号をセレクタ332に出力し、セレクタ332は、制御部434によって読み出された入力データDATを演算部433に転送する。
より具体的には、画像処理モジュール33−1では、制御部334から出力されたスルー選択信号によって、入力された入力データDAT0を一旦入力バッファ331に記憶し、読み出された入力データDAT0を演算部333に転送する経路が選択されている。また、画像処理モジュール43−2では、制御部434から出力されたスルー選択信号によって、入力された処理画素データDAT1を一旦入力バッファ431に記憶し、読み出された処理画素データDAT1を演算部433に転送する経路が選択されている。また、画像処理モジュール33−3では、制御部334から出力されたスルー選択信号によって、入力された処理画素データDAT2を一旦入力バッファ331に記憶し、読み出された処理画素データDAT2を演算部333に転送する経路が選択されている。また、画像処理モジュール33−4では、制御部334から出力されたスルー選択信号によって、入力された処理画素データDAT3を一旦入力バッファ331に記憶し、読み出された処理画素データDAT3を演算部333に転送する経路が選択されている。
図6に示したようにそれぞれの処理モジュールを接続したパイプライン構成を構成することによって、画像処理部30は、それぞれのブロック画像データに対するYC処理、歪曲収差の歪補正処理、ノイズ低減処理、およびエッジ強調処理の一連の画像処理(パイプライン処理)を行う。このパイプライン処理において、画像処理部30に備えたそれぞれの処理モジュールは、入力された入力データDATまたは処理画素データDATを入力バッファ331または入力バッファ431に一旦記憶してから読み出して、後段の処理モジュールに順次出力する。
図7は、本発明の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール(画像処理モジュール33および画像処理モジュール43)の動作の一例を示したタイミングチャートである。図7には、画像処理部30が、図6に示したパイプライン構成によって一連のパイプライン処理を行う場合において、画像処理モジュール33−1から画像処理モジュール33−4までの処理画素データの受け渡しの一例を示している。
図7には、それぞれの処理モジュールにおける入力データおよび出力データ(処理画素データDAT)のいずれか一方または両方と、それぞれの処理モジュールが前段の処理モジュールに出力するデータリクエスト信号REQとを示している。また、図7には、それぞれの処理モジュールにおいて入力バッファ331または入力バッファ431への処理画素データDATの書き込みを表すバッファ制御信号(バッファライト信号)、入力バッファ331または入力バッファ431からの処理画素データDATの読み出しを表すバッファ制御信号(バッファリード信号)のいずれか一方または両方を示している。
なお、以下の説明においては、説明を容易にするため、データアクノリッジ信号ACKおよびデータ有効信号VALIDのタイミングは、出力データ(処理画素データDAT)のタイミングと同様のタイミングである、つまり、それぞれの処理モジュールから出力される出力データ(処理画素データDAT)は、全て有効な処理画素データであるものとして説明する。従って、図7においては、それぞれの処理モジュールにおけるデータアクノリッジ信号ACKおよびデータ有効信号VALIDの図示を省略している。
また、図7の説明においては、1つのユニットラインを1つの処理単位として画像処理を行うものとして説明する。そして、図7には、入力データ(処理画素データDAT)、バッファライト信号を出力している期間、バッファリード信号を出力している期間、および出力データ(処理画素データDAT)のそれぞれに、何番目のユニットラインであるかを表す数字を示している。
なお、画像処理モジュール33−1は、5つのユニットライン分の処理画素データDAT0を記憶することができる記憶容量の入力バッファ331を備え、画像処理モジュール43−2は、5つのユニットライン分の処理画素データDAT1を記憶することができる記憶容量の入力バッファ431を備えた構成であるものとして説明する。また、画像処理モジュール33−3および画像処理モジュール33−4のそれぞれは、2つのユニットライン分の処理画素データDATを記憶することができる記憶容量の入力バッファ331を備えた構成であるものとして説明する。つまり、画像処理モジュール33−1に備えた入力バッファ331は、5つのユニットライン記憶領域(以下、「ユニットライン記憶領域3311」という)を備え、画像処理モジュール43−2に備えた入力バッファ431は、5つのユニットライン記憶領域4311を備え、画像処理モジュール33−3および画像処理モジュール33−4のそれぞれに備えた入力バッファ331は、2つのユニットライン記憶領域3311を備えているものとして説明する。そして、図7には、それぞれの処理モジュールに備えたデータバッファ内のいずれのユニットライン記憶領域に処理画素データDATを一時記憶するかを表すため、バッファライト信号およびバッファリード信号を出力しているそれぞれの期間に示した何番目のユニットラインであるかを表す数字に続く「():括弧」内に、ユニットライン記憶領域を表す数字を示す。
なお、以下の説明においては、それぞれの処理モジュールに備えた構成要素を区別するため、それぞれの構成要素に付与した符号に続いて、処理モジュールのそれぞれに付与した「−」と、それに続く数字の部分を付与して表す。例えば、画像処理モジュール33−1に備えた入力バッファ331を「入力バッファ331−1」とし、画像処理モジュール43−2に備えた入力バッファ431を「入力バッファ431−2」として表す。
また、図7の説明においては、画像処理部30がパイプライン処理を開始した後、画像処理モジュール33−1から出力された5つのユニットライン分の処理画素データDAT1が画像処理モジュール43−2に備えた入力バッファ431−2にすでに一時記憶され、次に処理を行う5つのユニットライン分の入力データ(画素データ)が画像処理モジュール33−1に備えた入力バッファ331−1にすでに一時記憶されている状態からの動作を説明する。つまり、画像処理モジュール43−2に備えた入力バッファ431−2の1番目〜5番目のユニットライン記憶領域4311−2に、1番目〜5番目のユニットラインの処理画素データDAT1がすでに一時記憶され、画像処理モジュール33−1に備えた入力バッファ331−1の1番目〜5番目のユニットライン記憶領域3311−1に、6番目〜10番目のユニットラインの処理画素データDAT0がすでに一時記憶されている状態からの動作を説明する。
上述した状態のとき、画像処理モジュール33−4に備えた制御部334−4が、処理画素データDAT3の出力を要求するデータリクエスト信号REQ4を画像処理モジュール33−3に出力すると、画像処理モジュール33−3に備えた制御部334−3は、後段の画像処理モジュール33−4から入力されたデータリクエスト信号REQ4に応じて、データアクノリッジ信号ACK3を出力する。そして、制御部334−3は、処理画素データDAT2の出力を要求するデータリクエスト信号REQ3を画像処理モジュール43−2に出力する。
なお、図7においては、データリクエスト信号REQが“High”レベルの期間が、それぞれの処理モジュールが処理画素データDATを受け付けることができる状態であるリクエスト期間を表し、データリクエスト信号REQが“Low”レベルの期間が、それぞれの処理モジュールが処理画素データDATを受け付けることができない状態であるリクエストネゲート期間を表している。
画像処理モジュール43−2に備えた制御部434−2は、後段の画像処理モジュール33−3から入力されたデータリクエスト信号REQ3に応じて、データアクノリッジ信号ACK2を出力する。そして、制御部434−2は、入力バッファ431−2に一時記憶している1番目のユニットラインのそれぞれの処理画素データDAT1を読み出すためのバッファリード信号を生成する。これにより、演算部433−2には、1番目のユニットラインのバッファリードの期間に、入力バッファ431−2の1番目のユニットライン記憶領域4311−2から読み出されたそれぞれの処理画素データDAT1がセレクタ332−2を介して転送される。そして、演算部433−2は、セレクタ332−2を介して入力された1番目のユニットラインのそれぞれの処理画素データDAT1に対して、制御部434−2から出力されたモード選択信号に応じた歪曲収差の歪補正処理の演算を行って生成した処理画素データDAT2を、画像処理モジュール33−3に出力する。なお、画像処理モジュール43−2から出力される1番目のユニットラインに対応した処理画素データDAT2は、演算部433−2が歪曲収差の歪補正処理の演算を行うことによって発生する、処理画素データDAT1が入力されてから処理画素データDAT2が出力されるまでの遅延時間D2(レイテンシD2)だけ遅れて出力される。
なお、制御部434−2は、入力バッファ431−2に一時記憶している1番目のユニットラインのそれぞれの処理画素データDAT1の読み出しが終了すると、引き続き、2番目以降のユニットラインの処理画素データDAT1を入力バッファ431−2から読み出すためのバッファリード信号を順次生成する。これにより、演算部433−2には、それぞれのユニットラインのバッファリードの期間に、入力バッファ431−2のそれぞれのユニットライン記憶領域4311−2から順次読み出されたそれぞれの処理画素データDAT1がセレクタ332−2を介して順次転送される。そして、演算部433−2は、セレクタ332−2を介して順次入力されたそれぞれのユニットラインのそれぞれの処理画素データDAT1に対して歪曲収差の歪補正処理の演算を行って生成した2番目以降のユニットラインの処理画素データDAT2を、画像処理モジュール33−3に順次出力する。
また、制御部434−2によって1番目のユニットラインのそれぞれの処理画素データDAT1の読み出しが終了すると、入力バッファ431−2は、1つのユニットライン記憶領域4311−2(1番目のユニットライン記憶領域4311−2)に処理画素データDAT1が記憶されていない(1番目のユニットライン記憶領域4311−2が空いている)状態になる。つまり、画像処理モジュール43−2は、画像処理モジュール33−1から次の処理画素データDAT1を受け付けることができる状態になる。このため、制御部434−2は、画像処理モジュール43−2が処理画素データDAT1を受け付けることができる状態になったことを表すために、画像処理モジュール33−1に出力しているデータリクエスト信号REQ2を“High”レベルにする。これにより、画像処理モジュール33−1は、データリクエスト信号REQ2に応じて、入力バッファ331に一時記憶している6番目以降のユニットラインのそれぞれの画素データに対してYC処理の演算を行って生成したそれぞれのユニットラインに対応した処理画素データDAT1を、遅延時間D1(レイテンシD1)だけ遅れたタイミングから、画像処理モジュール43−2に順次出力する。
なお、画像処理モジュール33−1に備えた制御部334−1は、入力バッファ331に一時記憶している6番目のユニットラインのそれぞれの画素データの読み出しが終了すると、入力バッファ331−1の1番目のユニットライン記憶領域3311−1が空いている状態になり、前段の処理モジュール(例えば、入力DMAモジュール32)から次の入力データ(画素データ)を受け付けることができる状態になる。このため、制御部334−1は、画像処理モジュール43−2と同様に、前段の処理モジュール(例えば、入力DMAモジュール32)に出力しているデータリクエスト信号REQ1を“High”レベルにして、入力データ(画素データ)を受け付けることができる状態になったことを表してもよい。これにより、前段の処理モジュール(例えば、入力DMAモジュール32)は、データリクエスト信号REQ1に応じて、次のユニットラインのそれぞれの入力データ(画素データ)を、画像処理モジュール33−1に順次出力する。
制御部434−2は、前段の画像処理モジュール33−1から6番目以降のユニットラインに対応した処理画素データDAT1が入力されると、入力されたそれぞれのユニットラインの処理画素データDAT1を入力バッファ431−2内の空いているユニットライン記憶領域4311−2に書き込むためのバッファライト信号を生成する。これにより、それぞれのユニットラインのバッファライトの期間において、6番目以降のユニットラインに対応したそれぞれの処理画素データDAT1が順次、入力バッファ431−2に一時記憶される。より具体的には、6番目のユニットラインに対応した処理画素データDAT1が、最初に空いている状態になった1番目のユニットライン記憶領域4311−2に書き込まれ、一時記憶される。続いて、7番目のユニットラインに対応した処理画素データDAT1が、次に空いている状態になった2番目のユニットライン記憶領域4311−2に書き込まれ、一時記憶される。以降、同様に、制御部434−2によって読み出されて空いている状態になった入力バッファ431−2内のそれぞれのユニットライン記憶領域4311−2に、それぞれのユニットラインに対応した処理画素データDAT1が順次書き込まれ、一時記憶される。
このようにして、画像処理モジュール43−2は、前段の画像処理モジュール33−1から入力された処理画素データDAT1を入力バッファ431−2に一旦記憶してから読み出して、歪曲収差の歪補正処理を行った処理画素データDAT2を、後段の画像処理モジュール33−3に順次出力する。
画像処理モジュール33−3に備えた制御部334−3は、前段の画像処理モジュール43−2から1番目のユニットラインに対応したそれぞれの処理画素データDAT2が入力されると、入力されたそれぞれの処理画素データDAT2を入力バッファ331−3内の空いているユニットライン記憶領域3311−3に書き込むためのバッファライト信号を生成する。なお、図7においては、画像処理部30がパイプライン処理を開始した最初の段階で、入力バッファ331−3には処理画素データDAT2が一時記憶されていない、つまり、入力バッファ331−3の全てのユニットライン記憶領域3311−3が空いている状態である。このため、画像処理モジュール33−3における1番目のユニットラインのバッファライトの期間に、画像処理モジュール43−2から入力された1番目のユニットラインに対応したそれぞれの処理画素データDAT2が、入力バッファ331−3の1番目のユニットライン記憶領域3311−3に書き込まれ、一時記憶される。
なお、入力バッファ331−3は、2つのユニットライン記憶領域3311−3を備えている。つまり、1番目のユニットライン記憶領域3311−3に処理画素データDAT2が書き込まれても、2番目のユニットライン記憶領域3311−3が空いている状態である。このため、制御部334−3は、1番目のユニットラインのそれぞれの処理画素データDAT2の入力バッファ331−3への書き込みが終了すると、引き続き、2番目のユニットラインに対応したそれぞれの処理画素データDAT2を入力バッファ331−3に書き込むためのバッファライト信号を順次生成する。これにより、入力バッファ331−3には、画像処理モジュール33−3における2番目のユニットラインのバッファライトの期間において、画像処理モジュール43−2から入力された2番目のユニットラインに対応したそれぞれの処理画素データDAT2が、入力バッファ331−3の2番目のユニットライン記憶領域3311−3に書き込まれ、一時記憶される。
また、画像処理モジュール33−3には、後段の画像処理モジュール33−4から、処理画素データDAT3の出力を要求するデータリクエスト信号REQ4が入力されている。このため、制御部334−3は、1番目のユニットラインに対応したそれぞれの処理画素データDAT2の入力バッファ331−3への書き込みが終了すると、入力バッファ331−3に一時記憶している1番目のユニットラインのそれぞれの処理画素データDAT2を読み出すためのバッファリード信号を生成する。これにより、演算部333−3には、1番目のユニットラインのバッファリードの期間に、入力バッファ331−3の1番目のユニットライン記憶領域3311−3から読み出されたそれぞれの処理画素データDAT2がセレクタ332−3を介して転送される。そして、演算部333−3は、セレクタ332−3を介して入力された1番目のユニットラインのそれぞれの処理画素データDAT2に対して、制御部334−3から出力されたモード選択信号に応じたノイズ低減処理の演算を行って生成した処理画素データDAT3を、遅延時間D3(レイテンシD3)だけ遅れたタイミングから画像処理モジュール33−4に出力する。
なお、制御部334−3は、2番目のユニットラインのそれぞれの処理画素データDAT2の入力バッファ331−3への書き込みが終了している場合には、入力バッファ331−3からの1番目のユニットラインのそれぞれの処理画素データDAT2の読み出しに引き続き、2番目のユニットラインのそれぞれの処理画素データDAT2の読み出しを行う。これにより、演算部333−3は、2番目のユニットラインのそれぞれの処理画素データDAT2に対してノイズ低減処理の演算を行って生成した処理画素データDAT3を画像処理モジュール33−4に出力する。
また、制御部334−3によって1番目のユニットラインのそれぞれの処理画素データDAT2の読み出しが終了すると、入力バッファ331−3の1番目のユニットライン記憶領域3311−3が空いている状態になる。このため、制御部334−3は、2番目のユニットラインのそれぞれの処理画素データDAT2の入力バッファ331−3への書き込みに引き続き、3番目のユニットラインのバッファライトの期間において、3番目のユニットラインに対応したそれぞれの処理画素データDAT2の入力バッファ331−3の1番目のユニットライン記憶領域3311−3への書き込みを行う。
このように、画像処理モジュール33−3では、入力バッファ331−3内の2つのユニットライン記憶領域3311−3に対して、一方のユニットライン記憶領域3311−3への処理画素データDAT2の書き込みと、他方のユニットライン記憶領域3311−3からの処理画素データDAT2の読み出しとを交互に行う。これにより、画像処理モジュール33−3では、それぞれのユニットラインのバッファライトの期間に、前段の画像処理モジュール43−2から順次入力された処理画素データDAT2が順次書き込まれ、それぞれのユニットラインのバッファリードの期間に、入力バッファ331−3に一時記憶されたそれぞれのユニットラインの処理画素データDAT2が順次読み出される。そして、画像処理モジュール33−3では、入力バッファ331−3から順次読み出した処理画素データDAT2に対して演算部333−3がノイズ低減処理の演算を行って生成した処理画素データDAT3を、画像処理モジュール33−4に順次出力する。
このようにして、画像処理モジュール33−3でも、画像処理モジュール43−2と同様に、前段の画像処理モジュール43−2から順次入力された処理画素データDAT2を入力バッファ331−3に一旦記憶してから読み出し、読み出した処理画素データDAT2に対してノイズ低減処理を行った処理画素データDAT3を、後段の画像処理モジュール33−4に順次出力する。
そして、画像処理モジュール33−4は、前段の画像処理モジュール33−3から順次入力されたそれぞれの処理画素データDAT3に対してエッジ強調処理を順次行って、生成した処理画素データDAT4を、後段の処理モジュール(例えば、出力DMAモジュール34)に順次出力する。なお、図7において説明した図6に示したパイプライン構成の画像処理部30では、画像処理モジュール33−4に備えた入力バッファ331−4は、2つのユニットライン記憶領域3311−4を備えている。このため、画像処理モジュール33−4でも、画像処理モジュール33−3と同様に、入力バッファ331−4内の一方のユニットライン記憶領域3311−4への処理画素データDAT3の書き込みと、他方のユニットライン記憶領域3311−4からの処理画素データDAT3の読み出しとを交互に行う。そして、画像処理モジュール33−4では、入力バッファ331−4から順次読み出した処理画素データDAT3に対して演算部333−4がエッジ強調処理の演算を行う。
このように、画像処理部30では、パイプラインを構成するそれぞれの処理モジュールに備えたデータバッファ(入力バッファ331や入力バッファ431)に、入力データを(画素データや処理画素データ)を一旦記憶することによって演算部(演算部333や演算部433)における処理の遅延を吸収し、それぞれの処理モジュール間の処理画素データDATの流れが滞らずに、パイプライン処理がスムーズに行われるようにしている。つまり、後段の処理モジュールへの処理画素データDATの出力が(一時)停止したり、前段の処理モジュールへの処理画素データDATの要求が(一時)停止したりするようなパイプラインストール状態を回避する構成にしている。
ところで、図7に示した画像処理部30における画像処理モジュール33および画像処理モジュール43の動作の一例では、画像処理モジュール33−3は、入力バッファ331−3内の一方のユニットライン記憶領域3311−3への処理画素データDAT2の書き込みと、他方のユニットライン記憶領域3311−3からの処理画素データDAT2の読み出しとを交互に行っている。つまり、画像処理モジュール33−3では、前段の画像処理モジュール43−2から順次入力された処理画素データDAT2を入力バッファ331−3に一時記憶した後すぐに読み出し、読み出した処理画素データDAT2に対して演算部333−3がノイズ低減処理を行っている。このため、画像処理モジュール33−3における処理画素データDAT2の入力バッファ331−3への書き込みと読み出しとを行わずに、演算部333−3が、画像処理モジュール43−2から現在入力されている処理画素データDAT2に対して直接ノイズ低減処理の演算を行う構成にすることも考えられる。つまり、画像処理装置1では、CPU50が、画像処理部30においてパイプラインを構成する画像処理モジュール33−3の制御部334−3に備えた設定レジスタ3341に設定するセレクタ332のパラメータによって、画像処理モジュール43−2から入力された処理画素データDAT2を、入力バッファ331−3に一時記憶せずに演算部333−3に直接出力する経路を選択することも考えられる。この構成にすることによって、画像処理部30では、画像処理モジュール33−3に備えた入力バッファ331−3の動作を停止するように制御することができ、入力バッファ331−3の消費電力を削減することができる。なお、入力バッファ331−3の動作の停止は、CPU50によって設定される。しかし、制御部334−3が、動作を停止するように入力バッファ331−3を制御してもよい。
次に、画像処理部30において、入力データをデータバッファに一時記憶せずにそのまま画像処理の演算を行う構成とした場合のそれぞれの処理モジュールの動作について説明する。図8は、本発明の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール(画像処理モジュール33および画像処理モジュール43)の別の接続の一例を示した図である。図8には、図6に示した画像処理モジュールの接続の一例と同様に、画像処理モジュール33−1、画像処理モジュール43−2、画像処理モジュール33−3、および画像処理モジュール33−4が直列に接続されたパイプライン構成によって、一連のパイプライン処理を行う構成を示している。なお、図8でも、図6に示したパイプライン構成の一例と同様に、画像処理部30に備えた入力DMAモジュール32および出力DMAモジュール34の図示を省略している。
図8に示したパイプライン構成の一例も、図6に示したパイプライン構成の一例と同様に、例えば、画像処理モジュール33−1がYC処理を行い、画像処理モジュール43−2が歪曲収差の歪補正処理を行い、画像処理モジュール33−3がノイズ低減処理を行い、画像処理モジュール33−4がエッジ強調処理を行うパイプライン構成である。
なお、図8においても、それぞれの処理モジュールに備えた構成要素を区別するため、それぞれの構成要素に付与した符号に続いて、処理モジュールのそれぞれに付与した「−」と、それに続く数字の部分を付与して表し、接続切り替え部31内の入力信号および出力信号に、その信号を出力する側の処理モジュールに付与した「−」に続く数字の部分を付与して表す。
図8のパイプライン構成の一例では、CPU50が、画像処理モジュール33−3の制御部334−3に備えた設定レジスタ3341−3に、入力された入力データDATを一時記憶せずにそのまま、演算部333−3に転送することを表すセレクタ332−3のパラメータを設定している。これにより、画像処理モジュール33−3の制御部334−3は、前段の画像処理モジュール43−2から入力されている処理画素データDAT2を入力バッファ331−3に一時記憶せずに直接、演算部333−3に出力する経路を選択するためのスルー選択信号をセレクタ332−3に出力し、セレクタ332−3は、画像処理モジュール43−2から現在入力されている処理画素データDAT2を演算部333に転送する。
また、図8のパイプライン構成の一例では、画像処理モジュール33−3において、入力された処理画素データDAT2をそのまま演算部333−3に転送する経路を選択させることに伴って、CPU50は、接続切り替え部31における画像処理モジュール43−2〜画像処理モジュール33−4のデータリクエスト信号REQとデータアクノリッジ信号ACKとの接続を変更する。
より具体的には、図8のパイプライン構成の一例では、接続切り替え部31が、画像処理モジュール43−2のデータリクエスト信号REQの入力端子と、後段の画像処理モジュール33−4のデータリクエスト信号REQの出力端子とを接続し、画像処理モジュール43−2のデータアクノリッジ信号ACKの出力端子と、後段の画像処理モジュール33−4のデータアクノリッジ信号ACKの入力端子とを接続している。これにより、画像処理モジュール43−2の後段の画像処理モジュール33−4の出力信号であるデータリクエスト信号REQ4が画像処理モジュール43−2に、画像処理モジュール43−2の出力信号であるデータアクノリッジ信号ACK2が、画像処理モジュール43−2の後段の画像処理モジュール33−4にそれぞれ入力される。つまり、図8のパイプライン構成の一例では、画像処理モジュール33−4が前段の画像処理モジュール33−3に処理画素データDAT3の出力を要求するデータリクエスト信号REQ4を、さらに前段の画像処理モジュール43−2が受け取り、画像処理モジュール43−2が、入力されたデータリクエスト信号REQ4に応じたデータアクノリッジ信号ACK2を、さらに後段の画像処理モジュール33−4に出力するように接続している。
これは、画像処理モジュール33−3が、画像処理モジュール43−2から入力された処理画素データDAT2をそのまま演算部333−3に転送して画像処理の演算を行う構成にすることによって、画像処理モジュール43−2に備えた演算部433−2と、画像処理モジュール33−3に備えた演算部333−3とが、1つの演算部であると考えるためである。
なお、演算部433−2と演算部333−3とを1つの演算部であると考えた場合であっても、画像処理の演算を行う順番は変更しない。このため、接続切り替え部31は、画像処理モジュール33−3の前段の画像処理モジュール43−2のデータ有効信号VALIDおよび入力データDATの出力端子と、画像処理モジュール33−3のデータ有効信号VALIDおよび入力データDATの入力端子とを接続する。また、接続切り替え部31は、画像処理モジュール33−3の後段の画像処理モジュール33−4のデータ有効信号VALIDおよび入力データDATの入力端子と、画像処理モジュール33−3のデータ有効信号VALIDおよび入力データDATの出力端とを接続する。これにより、画像処理モジュール43−2の出力信号であるデータ有効信号VALID2および処理画素データDAT2が後段の画像処理モジュール33−3に、画像処理モジュール33−3の出力信号であるデータ有効信号VALID3および処理画素データDAT3が後段の画像処理モジュール33−4にそれぞれ入力される。
なお、その他の画像処理モジュール33の制御部334に備えた設定レジスタ3341、および画像処理モジュール43の制御部434に備えた設定レジスタ3341におけるセレクタ332のパラメータは、図6に示したパイプライン構成の一例と同様である。従って、画像処理モジュール33−1および画像処理モジュール33−4は、入力された入力データDATを入力バッファ331に一旦記憶してから読み出して、演算部333に転送する。また、画像処理モジュール43は、入力された入力データDATを入力バッファ431に一旦記憶してから読み出して、演算部433に転送する。このため、接続切り替え部31における画像処理モジュール33−1と画像処理モジュール43−2との間のデータリクエスト信号REQ2、データアクノリッジ信号ACK1、入力データDAT1、およびデータ有効信号VALID1のそれぞれの接続は、図6に示したパイプライン構成の一例と同様である。
図8に示したようにそれぞれの処理モジュールを接続したパイプライン構成を構成することによって、画像処理部30は、それぞれのブロック画像データに対するYC処理、歪曲収差の歪補正処理、ノイズ低減処理、およびエッジ強調処理の一連の画像処理(パイプライン処理)を行う。このパイプライン処理において、画像処理部30に備えた画像処理モジュール43−2と画像処理モジュール33−3とは、歪曲収差の歪補正処理とノイズ低減処理とを行う1つの画像処理モジュールであるものとして動作し、生成した処理画素データDAT3を、後段の画像処理モジュール33−4に順次出力する。つまり、図8のパイプライン構成の一例では、画像処理モジュール43−2に備えた入力バッファ431−2が、演算部433−2と演算部333−3との両方の演算部における処理の遅延を吸収し、画像処理モジュール43−2から画像処理モジュール33−4までの間の処理画素データDATの流れが滞らずに、パイプライン処理がスムーズに行われるように動作している。
図9は、本発明の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール(画像処理モジュール33および画像処理モジュール43)の別の動作の一例を示したタイミングチャートである。図9には、画像処理部30が、図8に示したパイプライン構成によって一連のパイプライン処理を行う場合において、画像処理モジュール33−1から画像処理モジュール33−4までの処理画素データの受け渡しの一例を示している。
なお、図9に示したそれぞれの処理モジュールの動作の一例においても、図6のパイプライン構成でパイプライン処理を行う場合における図7に示したそれぞれの処理モジュールの動作の一例と同様に、それぞれの処理モジュールにおける入力データおよび出力データ(処理画素データDAT)、データリクエスト信号REQ、およびバッファ制御信号(バッファライト信号およびバッファリード信号)を示している。また、図9に示したそれぞれの処理モジュールの動作の一例においても、データアクノリッジ信号ACKおよびデータ有効信号VALIDのタイミングは、出力データ(処理画素データDAT)のタイミングと同様のタイミングであるものとし、それぞれの処理モジュールにおけるデータアクノリッジ信号ACKおよびデータ有効信号VALIDの図示を省略している。
また、図9の説明においても、図7に示したそれぞれの処理モジュールの動作の一例と同様に、1つのユニットラインを1つの処理単位として画像処理を行うものとし、入力データ(処理画素データDAT)、バッファライトの期間、バッファリードの期間、および出力データ(処理画素データDAT)のそれぞれに、何番目のユニットラインであるかを表す数字を示して説明する。また、図9の説明においても、図7に示したそれぞれの処理モジュールの動作の一例と同様に、バッファライトおよびバッファリードのそれぞれの期間に示した何番目のユニットラインであるかを表す数字に続く「():括弧」内に、入力バッファ331および入力バッファ431内のいずれのユニットライン記憶領域4311に処理画素データDATを一時記憶するかを表す数字を示して説明する。
なお、図9の説明においても、それぞれの処理モジュールに備えた入力バッファ331または入力バッファ431の記憶容量、つまり、ユニットライン記憶領域3311またはユニットライン記憶領域4311の数は、図7に示したそれぞれの処理モジュールの動作の一例と同様であるものとして説明する。ただし、図8に示したパイプライン構成では、画像処理モジュール33−3が、入力された処理画素データDAT2をそのまま演算部333−3に転送する経路が選択されているため、画像処理モジュール33−3は、入力バッファ331−3を備えていない構成と同様である。
また、図9の説明においても、図7に示したそれぞれの処理モジュールの動作の一例と同様に、画像処理部30がパイプライン処理を開始した後、5つのユニットライン分の処理画素データDAT1が画像処理モジュール43−2に備えた入力バッファ431−2にすでに一時記憶され、次に処理を行う5つのユニットライン分の入力データ(画素データ)が画像処理モジュール33−1に備えた入力バッファ331−1にすでに一時記憶されている状態からの動作を説明する。
なお、図9においても、図7に示したそれぞれの処理モジュールの動作の一例と同様に、データリクエスト信号REQが“High”レベルの期間が、それぞれの処理モジュールが処理画素データDATを受け付けることができる状態であるリクエスト期間を表し、データリクエスト信号REQが“Low”レベルの期間が、それぞれの処理モジュールが処理画素データDATを受け付けることができない状態であるリクエストネゲート期間を表している。
上述した状態のとき、画像処理モジュール33−4に備えた制御部334−4が、処理画素データDAT3の出力を要求するデータリクエスト信号REQ4を画像処理モジュール43−2に出力すると、画像処理モジュール43−2に備えた制御部434−2は、後段の画像処理モジュール33−4から入力されたデータリクエスト信号REQ4に応じて、データアクノリッジ信号ACK2を出力する。そして、制御部434−2は、入力バッファ431−2に一時記憶している1番目のユニットラインのそれぞれの処理画素データDAT1を読み出すためのバッファリード信号を生成する。これにより、演算部433−2には、1番目のユニットラインのバッファリードの期間に、入力バッファ431−2の1番目のユニットライン記憶領域4311−2から読み出されたそれぞれの処理画素データDAT1がセレクタ332−2を介して転送される。そして、演算部433−2は、セレクタ332−2を介して入力された1番目のユニットラインのそれぞれの処理画素データDAT1に対して、制御部434−2から出力されたモード選択信号に応じた歪曲収差の歪補正処理の演算を行って生成した処理画素データDAT2を、遅延時間D2(レイテンシD2)だけ遅れたタイミングから画像処理モジュール33−3に出力する。
なお、以降の画像処理モジュール43−2および画像処理モジュール33−1の動作は、図7に示したそれぞれの処理モジュールの動作の一例と同様である。従って、画像処理モジュール43−2および画像処理モジュール33−1の動作に関する詳細な説明は省略する。
画像処理モジュール33−3は、前段の画像処理モジュール43−2から1番目のユニットラインに対応したそれぞれの処理画素データDAT2が入力されると、画像処理モジュール33−3に備えたセレクタ332−3は、入力されたそれぞれの処理画素データDAT2をそのまま、演算部333−3に転送する。そして、演算部333−3は、セレクタ332−3を介して前段の画像処理モジュール43−2から入力された1番目のユニットラインのそれぞれの処理画素データDAT2に対して、制御部334−3から出力されたモード選択信号に応じたノイズ低減処理の演算を行って生成した処理画素データDAT3を、遅延時間D3(レイテンシD3)だけ遅れたタイミングから画像処理モジュール33−4に出力する。
その後、画像処理モジュール33−3は、前段の画像処理モジュール43−2から2番目のユニットラインのそれぞれの処理画素データDAT2が入力されると、セレクタ332−3は、入力されたそれぞれの処理画素データDAT2をそのまま、演算部333−3に転送する。これにより、演算部333−3は、2番目のユニットラインのそれぞれの処理画素データDAT2に対してノイズ低減処理の演算を行って生成した処理画素データDAT3を画像処理モジュール33−4に出力する。
以降同様に、画像処理モジュール33−3は、前段の画像処理モジュール43−2から順次入力されたそれぞれのユニットラインの処理画素データDAT2に対して演算部333−3がノイズ低減処理の演算を行って生成した処理画素データDAT3を、画像処理モジュール33−4に順次出力する。
このようにして、画像処理モジュール33−3では、前段の画像処理モジュール43−2から順次入力された処理画素データDAT2に対して直接ノイズ低減処理を行った処理画素データDAT3を、後段の画像処理モジュール33−4に順次出力する。
そして、画像処理モジュール33−4は、前段の画像処理モジュール33−3から順次入力されたそれぞれの処理画素データDAT3に対してエッジ強調処理を順次行って、生成した処理画素データDAT4を、後段の処理モジュール(例えば、出力DMAモジュール34)に順次出力する。なお、画像処理モジュール33−4の動作は、図7に示したそれぞれの処理モジュールの動作の一例と同様である。従って、画像処理モジュール33−4の動作に関する詳細な説明は省略する。
このように、図8に示したパイプライン構成の画像処理部30でも、図6に示したパイプライン構成の画像処理部30と同様に、パイプラインストール状態を回避して一連のパイプライン処理を行うことができる。しかも、図8に示したパイプライン構成の画像処理部30では、画像処理モジュール43−2に備えた演算部433−2と、画像処理モジュール33−3に備えた演算部333−3とが1つの演算部であると考え、画像処理モジュール43−2に備えた入力バッファ431−2の記憶容量によって演算部433−2と演算部333−3との両方の演算部における処理の遅延を吸収する。つまり、図8に示したパイプライン構成の画像処理部30では、画像処理モジュール43−2が、複数の画像処理の演算機能(リサイズ処理、歪補正処理、形状補正処理など)を備えていることに伴って、入力バッファ431−2が多くのユニットライン記憶領域4311−2を備えているということを利用して、演算部433−2におけるレイテンシD2と演算部333−3におけるレイテンシD3を合わせた遅延時間を吸収する。言い換えれば、画像処理モジュール43−2に備えた入力バッファ431−2を、画像処理モジュール43−2と画像処理モジュール33−3との両方の処理モジュールに備えたデータバッファ(入力バッファ)として扱うことによって、演算部433−2におけるレイテンシD2の吸収に加えて、演算部333−3におけるレイテンシD3を吸収するために用いる。つまり、入力バッファ431−2を、画像処理モジュール33−2に備えた演算部333−3の緩衝用として、入力バッファ331−3の代わりに用いる。これにより、図8に示したパイプライン構成の画像処理部30では、画像処理モジュール33−3に備えた入力バッファ331−3の動作を停止するように制御することができ、入力バッファ331−3の消費電力を削減することができる。なお、入力バッファ331−3の動作の停止は、CPU50によって設定される。しかし、制御部334−3が、動作を停止するように入力バッファ331−3を制御してもよい。
ここで、画像処理部30においてパイプラインを構成する複数の処理モジュールに備えたそれぞれの演算部を1つの演算部として考えて、いずれかの処理モジュールに備えたデータバッファ(入力バッファ)に複数の演算部における処理の遅延を吸収させる構成にするための考え方について説明する。図10は、本発明の実施形態の画像処理装置1に備えた画像処理部30における画像処理モジュール43に備えた入力バッファ431の記憶容量と画像処理に用いる入力バッファ431の記憶容量との関係の一例を説明する図である。図10には、画像処理モジュール43に備えた入力バッファ431の記憶容量と、画像処理モジュール43が実行する画像処理において必要な画素データのユニットライン数、つまり、実際に使用する記憶容量との関係の一例を模式的に示している。
図5において説明したように、画像処理モジュール43において必要なユニットライン数、つまり、ユニットライン記憶領域4311の数は、実行する画像処理に応じてCPU50によって設定された歪み係数の値やリサイズ率の値などのパラメータによって異なる。このため、画像処理モジュール43−2に備えた入力バッファ431−2の記憶容量の中で、画像処理モジュール33−3に備えた入力バッファ331−3の代わりに用いることができる記憶容量、つまり、余っている記憶容量は、画像処理モジュール43−2が実行する画像処理の演算によって異なる。図10には、画像処理モジュール43−2が画像処理(画像補間処理)を行う際に使用する入力バッファ431−2の記憶容量を表す記憶領域の範囲(以下、「補間領域」という)と、画像処理モジュール33−3に備えた入力バッファ331−3の代わりに用いることができる記憶容量を表す記憶領域の範囲(以下、「バッファ領域」という)との関係を模式的に示している。
例えば、画像処理モジュール43−2が歪曲収差の歪補正処理を行う場合、歪補正処理に必要な画素データのユニットライン数は、撮像装置に備えたレンズの歪曲収差の特性に基づいてCPU50によって設定レジスタ3341に設定された歪み係数の値(パラメータ)に応じて決まる。このため、図10(a−1)〜図10(a−3)に示したように、画像処理モジュール43−2に備えた入力バッファ431−2において、歪曲収差の歪補正処理(画像補間処理)を行うために使用するユニットライン数に対応する補間領域と、画像処理モジュール33−3に備えた入力バッファ331−3の代わりに用いることができるバッファ領域とは、歪み係数の値ごとに異なる。
より具体的には、歪み係数の値が小さい場合には、図10(a−1)に示したように、画像処理モジュール43−2は、少ないユニットライン数の画素データを用いて歪曲収差の歪補正処理を行うことができるため、入力バッファ431−2内の補間領域は狭い範囲になり、広い範囲のバッファ領域を画像処理モジュール33−3に備えた入力バッファ331−3の代わりに用いることができる。つまり、入力バッファ431−2内に広い範囲のバッファ領域を確保することができる。このため、画像処理モジュール43−2では、入力バッファ431−2内に確保したバッファ領域の範囲内であれば、画像処理モジュール33−3に備えた入力バッファ331−3が多くのユニットライン記憶領域3311−3を備えたデータバッファであっても、入力バッファ431−2を入力バッファ331−3の代わりに用いることができる。
しかし、図10(a−2)、図10(a−3)に示したように、歪み係数の値が大きくなるにつれて、歪曲収差の歪補正処理に用いるユニットライン数が多くなり、入力バッファ431−2内の補間領域が広い範囲になる。つまり、入力バッファ431−2内に確保することができるバッファ領域は、歪み係数の値が大きくなるにつれて、逆に狭い範囲となっていく。このため、画像処理モジュール43−2では、入力バッファ431−2を入力バッファ331−3の代わりに用いることが困難になってくる。
また、例えば、画像処理モジュール43−2がリサイズ処理を行う場合、リサイズ処理に必要な画素データのユニットライン数は、CPU50によって設定レジスタ3341に設定されたリサイズ率の値(パラメータ)に応じて決まる。このため、図10(b−1)および図10(b−2)に示したように、画像処理モジュール43−2に備えた入力バッファ431−2において、リサイズ処理(画像補間処理)を行うために使用するユニットライン数に対応する補間領域と、画像処理モジュール33−3に備えた入力バッファ331−3の代わりに用いることができるバッファ領域とは、リサイズ率の値ごとに異なる。
より具体的には、例えば、画像を縮小する場合において、リサイズ率の値が小さい場合には、図10(b−1)に示したように、画像処理モジュール43−2は、少ないユニットライン数の範囲内の予め定めた位置の画素データを読み出してリサイズ処理を行うことができるため、入力バッファ431−2内の補間領域は狭い範囲になり、広い範囲のバッファ領域を確保することができる。このため、画像処理モジュール43−2では、確保したバッファ領域を、画像処理モジュール33−3に備えた入力バッファ331−3の代わりに用いることができる。
一方、リサイズ率の値が大きい場合には、図10(b−2)に示したように、画像処理モジュール43−2は、より多くのユニットライン数の範囲内の予め定めた位置の画素データを読み出すことによってリサイズ処理を行うため、入力バッファ431−2内の補間領域が広い範囲になり、入力バッファ431−2内に確保することができるバッファ領域は、リサイズ率の値が大きくなると、逆に狭い範囲となる。このため、画像処理モジュール43−2では、入力バッファ431−2を入力バッファ331−3の代わりに用いることが困難になってくる。
なお、画像処理モジュール43が倍率色収差の歪補正処理を行う場合、台形補正などの形状補正処理を行う場合、また、その他のフィルタ処理を行う場合などにおける入力バッファ431の記憶容量の決定方法も図10に示した一例と同様に考えることができる。
CPU50は、画像処理部30において実行する画像処理(パイプライン処理)が決定すると、上述したような考え方に基づいて、画像処理部30においてパイプラインを構成する。つまり、画像処理部30において実行するパイプライン処理が決定すると、パイプラインにおいて直列に接続するそれぞれの処理モジュールが決定されるため、CPU50は、それぞれの処理モジュールに備えているデータバッファの記憶容量と、それぞれの処理モジュールが実際に使用する記憶容量とを把握することができる。このとき、CPU50は、パイプラインを構成するそれぞれの処理モジュールに備えたデータバッファ内に確保することができるバッファ領域の大きさを求める。そして、CPU50は、把握したそれぞれの記憶容量に基づいて、パイプライン構成内で流れるそれぞれのデータの経路を設定する。つまり、CPU50は、求めたバッファ領域の大きさに基づいて、パイプラインを構成するそれぞれの処理モジュールごとに、入力データをデータバッファに一旦記憶してから読み出して演算部に転送するか、入力データをそのまま演算部に転送するかを決定する。
より具体的には、例えば、図6および図8に示したパイプライン構成の一例では、CPU50は、画像処理モジュール43−2に備えた入力バッファ431−2内に確保することができるバッファ領域の大きさ、つまり、ユニットライン数(ユニットライン記憶領域4311−2の数)を求める。そして、CPU50は、求めた入力バッファ431−2におけるバッファ領域(ユニットライン数)に基づいて、画像処理モジュール33−3において、処理画素データDAT2を入力バッファ331−3に一旦記憶してから読み出して演算部333−3に転送する経路を選択するか、処理画素データDAT2をそのまま演算部333−3に転送する経路を選択するかを決定する。そして、CPU50は、ここで決定した経路に基づいて、画像処理モジュール33−3に備えた制御部334−3内の設定レジスタ3341−3に、演算部333−3に処理画素データDAT2を転送する経路を選択するセレクタ332−3のパラメータを設定する。すなわち、CPU50は、求めた入力バッファ431−2のバッファ領域(ユニットライン数)が画像処理モジュール33−3に備えた入力バッファ331−3が処理画素データDAT2を一時記憶するユニットライン数(ユニットライン記憶領域3311−3の数)よりも大きい場合には、入力された処理画素データDAT2をそのまま演算部333−3に転送することを表すセレクタ332−3のパラメータを設定する。一方、CPU50は、求めた入力バッファ431−2のバッファ領域(ユニットライン数)が画像処理モジュール33−3に備えた入力バッファ331−3が処理画素データDAT2を一時記憶するユニットライン数よりも小さい場合には、入力された処理画素データDAT2を入力バッファ331−3に一時記憶してから読み出して演算部333−3に転送することを表すセレクタ332−3のパラメータを設定する。そして、CPU50は、ここで決定した経路に基づいて、接続切り替え部31に対して、画像処理部30内にパイプラインを構成したそれぞれの処理モジュールの接続を切り替えるための制御(設定)を行う。
なお、例えば、画像処理モジュール33−3も、複数の画像処理の演算機能を備えた構成であることも考えられる。この場合には、画像処理モジュール33−3が実行する画像処理の演算によって、入力バッファ331−3に処理画素データDAT2を一時記憶するユニットライン数(ユニットライン記憶領域3311−3の数)が異なる。このため、CPU50は、画像処理モジュール33−3に備えた演算部333−3が画像処理の演算を実行する際のレイテンシも含めて、処理画素データDAT2を入力バッファ331−3に一旦記憶してから読み出して演算部333−3に転送する経路を選択するか、処理画素データDAT2をそのまま演算部333−3に転送する経路を選択するかを決定する。
また、画像処理モジュール43−2では、入力バッファ431−2を画像処理モジュール33−2に備えた入力バッファ331−3の代わりに用いた後でも、入力バッファ431−2には、バッファ領域に余裕がある(余っている)ことも考えられる。この場合には、余裕がある(余っている)入力バッファ431−2のバッファ領域を、パイプライン構成においてさらに後段に接続された他の処理モジュールに備えたデータバッファの代わりとして用いることもできる。
次に、CPU50が画像処理部30内にパイプラインを構成する際の処理手順、つまり、CPU50によるそれぞれの処理モジュールに備えたデータバッファの制御方法について説明する。図11は、本発明の実施形態の画像処理装置1に備えた画像処理部30においてパイプラインを構成する際の処理手順を示したフローチャートである。なお、以下の説明においては、図6および図8に示したパイプライン構成の一例において、画像処理モジュール43−2に備えた入力バッファ431−2の記憶容量の一部を画像処理モジュール33−3に備えた入力バッファ331−3の代わりに用いる設定を行う場合について説明する。
画像処理装置1において実行する画像処理が決定すると、CPU50は、まず、画像処理部30において決定した画像処理を実行する際にそれぞれの処理モジュールが実際に使用するデータバッファの記憶容量を算出する(ステップS100)。図6および図8に示したパイプライン構成の一例では、パイプラインを構成する画像処理モジュール43−2が実際に使用する入力バッファ431−2の記憶容量(補間領域)と、画像処理モジュール33−3が実際に使用する入力バッファ331−3の記憶容量を算出する。
なお、ステップS100においてCPU50が算出する画像処理モジュール33−3が実際に使用する入力バッファ331−3の記憶容量は、画像処理モジュール33−3が予め定めた1つの画像処理の機能を備えた構成の処理モジュールである場合には、画像処理モジュール33−3に備えた入力バッファ331−3の記憶容量である。なお、画像処理モジュール33−3が1つの画像処理の機能を実行する場合においても、例えば、フィルタ係数などのパラメータによって実際に使用する入力バッファ331−3の記憶容量が変わる場合もある。この場合、CPU50は、例えば、フィルタ係数などのパラメータに基づいて、画像処理モジュール33−3が実際に使用する入力バッファ331−3の記憶容量を算出する。また、画像処理モジュール33−3が複数の画像処理の演算機能を備えた構成の処理モジュールである場合にも、画像処理モジュール33−3が実行する画像処理の演算において使用する入力バッファ331−3の記憶容量が、ステップS100においてCPU50が算出する画像処理モジュール33−3が実際に使用する入力バッファ331−3の記憶容量である。
また、ステップS100においてCPU50は、画像処理モジュール43−2が行う画像処理(画像補間処理)や、この画像処理(画像補間処理)の設定値(パラメータ)に基づいて、画像処理モジュール43−2が実際に使用する入力バッファ431−2の記憶容量(補間領域)を算出する。
続いて、CPU50は、記憶容量を提供する処理モジュールのデータバッファに確保することができる記憶容量(バッファ領域)を算出する(ステップS101)。図6および図8に示したパイプライン構成の一例では、記憶容量を提供する処理モジュールである画像処理モジュール43−2に備えた入力バッファ431−2に確保することができるバッファ領域を算出する。
なお、ステップS101においてCPU50は、入力バッファ431−2の全体の記憶容量と、ステップS100において算出した画像処理モジュール43−2が実際に使用する入力バッファ431−2の記憶容量(補間領域)との差分を取ることによって、画像処理モジュール43−2に備えた入力バッファ431−2に確保することができる記憶容量(バッファ領域)を算出する。
続いて、CPU50は、算出したバッファ領域が、記憶容量の提供を受ける処理モジュールが使用するデータバッファの記憶容量を満たすか否かを判定する(ステップS102)。図6および図8に示したパイプライン構成の一例では、ステップS101において算出したバッファ領域が、画像処理モジュール43−2に備えた入力バッファ431−2の記憶容量の提供を受ける処理モジュールである画像処理モジュール33−3に対して、ステップS100において算出した記憶容量を満足するか否かを判定する。
ステップS102において、算出したバッファ領域が、記憶容量の提供を受ける処理モジュールが使用するデータバッファの記憶容量を満たさない判定した場合(ステップS102の“NO”)、CPU50は、記憶容量の提供を受ける処理モジュールの入力データをデータバッファに一旦記憶してから読み出して演算部に転送する経路を選択する(ステップS103)。つまり、CPU50は、入力バッファ431−2に確保されたバッファ領域(記憶容量)が、画像処理モジュール33−3が画像処理を実行する際に使用する入力バッファ331−3の記憶容量未満である場合には、画像処理モジュール33−3の入力データ(処理画素データDAT2)を入力バッファ331−3に一旦記憶してから読み出して演算部333−3に転送する経路を選択する。
一方、ステップS102において、算出したバッファ領域が、記憶容量の提供を受ける処理モジュールが使用するデータバッファの記憶容量を満たすと判定した場合(ステップS102の“YES”)、CPU50は、記憶容量の提供を受ける処理モジュールの入力データを演算部に直接転送する経路を選択する(ステップS104)。つまり、CPU50は、入力バッファ431−2に確保されたバッファ領域(記憶容量)が、画像処理モジュール33−3が画像処理を実行する際に使用する入力バッファ331−3の記憶容量以上である場合には、画像処理モジュール33−3の入力データ(処理画素データDAT2)をそのまま演算部333−3に転送する経路を選択する。
続いて、CPU50は、記憶容量の提供を受ける他の処理モジュールがあるか否かを判定する(ステップS105)。つまり、CPU50は、入力バッファ431−2に確保されたバッファ領域(記憶容量)を提供する画像処理モジュール33−3以外の処理モジュールがあるか否かを確認する。
ステップS105において、記憶容量の提供を受ける他の処理モジュールがあると判定した場合(ステップS105の“YES”)、CPU50は、ステップS101に戻って、入力バッファ431−2に確保されたバッファ領域(記憶容量)を画像処理モジュール33−3に提供した後でも残っているバッファ領域(記憶容量)を算出し、ステップS102〜ステップS105までの処理を繰り返す。
一方、ステップS105において、記憶容量の提供を受ける他の処理モジュールがないと判定した場合(ステップS105の“NO”)、CPU50は、ステップS106に進む。
続いて、CPU50は、パイプラインを構成するそれぞれの処理モジュールに、ステップS101〜ステップS105までの処理において選択した入力データの経路を設定する(ステップS106)。より具体的には、ステップS103によって画像処理モジュール33−3における入力データ(処理画素データDAT2)の経路を選択した場合には、CPU50は、画像処理モジュール33−3に備えた制御部334−3内の設定レジスタ3341−3に、入力された処理画素データDAT2を入力バッファ331−3に一時記憶してから読み出して演算部333−3に転送することを表すセレクタ332−3のパラメータを設定する。一方、ステップS104によって画像処理モジュール33−3における入力データ(処理画素データDAT2)の経路を選択した場合には、CPU50は、入力された処理画素データDAT2をそのまま演算部333−3に転送することを表すセレクタ332−3のパラメータを設定する。
続いて、CPU50は、パイプラインを構成するそれぞれの処理モジュールの接続の切り替えを、接続切り替え部31に設定する(ステップS107)。より具体的には、ステップS103によって画像処理モジュール33−3が入力データをデータバッファに一旦記憶してから演算部に転送する経路を選択した場合には、CPU50は、画像処理モジュール33−3のデータリクエスト信号REQの出力端子と、画像処理モジュール43−2のデータリクエスト信号REQの入力端子とを接続し、画像処理モジュール43−2のデータアクノリッジ信号ACKの出力端子と、画像処理モジュール33−3のデータアクノリッジ信号ACKの入力端子とを接続するように、接続切り替え部31を制御する。一方、ステップS104によって画像処理モジュール33−3が入力データを演算部に直接転送する経路を選択した場合には、CPU50は、画像処理モジュール33−3の後段の画像処理モジュール33−4のデータリクエスト信号REQの出力端子と、画像処理モジュール43−2のデータリクエスト信号REQの入力端子とを接続し、画像処理モジュール43−2のデータアクノリッジ信号ACKの出力端子と、画像処理モジュール33−4のデータアクノリッジ信号ACKの入力端子とを接続するように、接続切り替え部31を制御する。
このステップS106およびステップS107の処理によって、画像処理部30内に、図6または図8に示したパイプライン構成の一例のようなパイプラインが構成される。なお、CPU50は、上述した処理を、画像処理部30において実行する画像処理(パイプライン処理)が決定するごとに行う。これにより、画像処理装置1では、決定した画像処理部30の画像処理(パイプライン処理)ごとに、最適なパイプライン構成が構成される。
このように、画像処理装置1では、画像処理部30においてパイプラインを構成する複数の処理モジュールに備えたそれぞれの演算部を1つの演算部として考え、多くのユニットライン数の画素データを一時記憶することができる処理モジュールに備えたデータバッファにおいて画像処理の演算に使用せずに余っている記憶容量を、他の処理モジュールに備えたデータバッファの代わりに用いる。
ここで、仮に、他の処理モジュールに備えたデータバッファの代わりに用いることができる記憶容量(余っている記憶容量)が少ないにも関わらず、入力データをそのまま演算部に転送する構成にしてしまった場合のそれぞれの処理モジュールの動作について説明する。図12は、本発明の実施形態の画像処理装置1に備えた画像処理部30において異なる設定をした場合の画像処理モジュール(画像処理モジュール33および画像処理モジュール43)の動作の一例を示したタイミングチャートである。図12には、画像処理部30が、図8に示したパイプライン構成によって一連のパイプライン処理を行う場合において、画像処理モジュール33−1から画像処理モジュール33−4までの処理画素データの受け渡しの一例を示している。なお、図12に示したそれぞれの処理モジュールの動作の一例は、本発明の画像処理装置1における効果を説明するための一例であり、本発明の画像処理装置1において実行する動作とは異なるものである。
なお、図12に示したそれぞれの処理モジュールの動作の一例においても、図9に示した本発明の画像処理装置1におけるそれぞれの処理モジュールの動作の一例と同様に、それぞれの処理モジュールにおける入力データおよび出力データ(処理画素データDAT)、データリクエスト信号REQ、およびバッファ制御信号(バッファライト信号およびバッファリード信号)を示している。また、図12に示したそれぞれの処理モジュールの動作の一例においても、データアクノリッジ信号ACKおよびデータ有効信号VALIDのタイミングは、出力データ(処理画素データDAT)のタイミングと同様のタイミングであるものとし、それぞれの処理モジュールにおけるデータアクノリッジ信号ACKおよびデータ有効信号VALIDの図示を省略している。
また、図12の説明においても、図9に示した本発明の画像処理装置1におけるそれぞれの処理モジュールの動作の一例と同様に、1つのユニットラインを1つの処理単位として画像処理を行うものとし、入力データ(処理画素データDAT)、バッファライトの期間、バッファリードの期間、および出力データ(処理画素データDAT)のそれぞれに、何番目のユニットラインであるかを表す数字を示して説明する。また、図12の説明においても、図9に示した本発明の画像処理装置1におけるそれぞれの処理モジュールの動作の一例と同様に、バッファライトおよびバッファリードのそれぞれの期間に示した何番目のユニットラインであるかを表す数字に続く「():括弧」内に、入力バッファ331および入力バッファ431内のいずれのユニットライン記憶領域4311に処理画素データDATを一時記憶するかを表す数字を示して説明する。
なお、図12の説明においては、画像処理モジュール33−1は、5つのユニットライン分の処理画素データDAT0を記憶することができる記憶容量の入力バッファ331を備え、画像処理モジュール33−3および画像処理モジュール33−4のそれぞれは、2つのユニットライン分の処理画素データDATを記憶することができる記憶容量の入力バッファ331を備えた構成であるものとして説明する。ただし、図12の説明においては、画像処理モジュール33−3に備えた入力バッファ331の代わりに用いることができる記憶容量(余っている記憶容量)が少ないことを表すため、画像処理モジュール43−2は、2つのユニットライン分の処理画素データDAT1を記憶することができる記憶容量の入力バッファ431を備えた構成であるものとして説明する。つまり、画像処理モジュール33−1に備えた入力バッファ331は、図9に示した本発明の画像処理装置1におけるそれぞれの処理モジュールの動作の一例と同様に、5つのユニットライン記憶領域3311を備え、画像処理モジュール33−3および画像処理モジュール33−4のそれぞれに備えた入力バッファ331は、2つのユニットライン記憶領域3311を備えているものとして説明する。そして、画像処理モジュール43−2に備えた入力バッファ431は、図9に示した本発明の画像処理装置1におけるそれぞれの処理モジュールの動作の一例と異なり、2つのユニットライン記憶領域4311を備えているものとして説明する。
また、図12の説明においては、画像処理部30がパイプライン処理を開始した後、2つのユニットライン分の処理画素データDAT1が画像処理モジュール43−2に備えた入力バッファ431−2にすでに一時記憶され、次に処理を行う5つのユニットライン分の入力データ(画素データ)が画像処理モジュール33−1に備えた入力バッファ331−1にすでに一時記憶されている状態からの動作を説明する。つまり、画像処理モジュール43−2に備えた入力バッファ431−2の1番目および2番目のユニットライン記憶領域4311−2に、1番目および2番目のユニットラインの処理画素データDAT1がすでに一時記憶され、画像処理モジュール33−1に備えた入力バッファ331−1の1番目〜5番目のユニットライン記憶領域3311−1に、3番目〜7番目のユニットラインの処理画素データDAT0がすでに一時記憶されている状態からの動作を説明する。
なお、図12においても、図9に示した本発明の画像処理装置1におけるそれぞれの処理モジュールの動作の一例と同様に、データリクエスト信号REQが“High”レベルの期間が、それぞれの処理モジュールが処理画素データDATを受け付けることができる状態であるリクエスト期間を表し、データリクエスト信号REQが“Low”レベルの期間が、それぞれの処理モジュールが処理画素データDATを受け付けることができない状態であるリクエストネゲート期間を表している。
上述した状態のとき、画像処理モジュール33−4に備えた制御部334−4が、処理画素データDAT3の出力を要求するデータリクエスト信号REQ4を画像処理モジュール43−2に出力すると、画像処理モジュール43−2に備えた制御部434−2は、後段の画像処理モジュール33−4から入力されたデータリクエスト信号REQ4に応じて、データアクノリッジ信号ACK2を出力する。そして、制御部434−2は、入力バッファ431−2に一時記憶している1番目のユニットラインのそれぞれの処理画素データDAT1を読み出すためのバッファリード信号を生成する。これにより、演算部433−2には、1番目のユニットラインのバッファリードの期間に、入力バッファ431−2の1番目のユニットライン記憶領域4311−2から読み出されたそれぞれの処理画素データDAT1がセレクタ332−2を介して転送される。そして、演算部433−2は、セレクタ332−2を介して入力された1番目のユニットラインのそれぞれの処理画素データDAT1に対して、制御部434−2から出力されたモード選択信号に応じた歪曲収差の歪補正処理の演算を行って生成した処理画素データDAT2を、遅延時間D2(レイテンシD2)だけ遅れたタイミングから画像処理モジュール33−3に出力する。
なお、制御部434−2は、入力バッファ431−2に一時記憶している1番目のユニットラインのそれぞれの処理画素データDAT1の読み出しが終了すると、引き続き、2番目のユニットラインの処理画素データDAT1を入力バッファ431−2から読み出すためのバッファリード信号を順次生成する。これにより、演算部433−2は、セレクタ332−2を介して入力された2番目のユニットラインのそれぞれの処理画素データDAT1に対して歪曲収差の歪補正処理の演算を行って生成した2番目のユニットラインの処理画素データDAT2を、画像処理モジュール33−3に出力する。
また、制御部434−2によって1番目のユニットラインのそれぞれの処理画素データDAT1の読み出しが終了すると、入力バッファ431−2は、1番目のユニットライン記憶領域4311−2が空いている状態になるため、制御部434−2は、画像処理モジュール33−1に出力しているデータリクエスト信号REQ2を“High”レベルにする。これにより、画像処理モジュール33−1は、データリクエスト信号REQ2に応じて、入力バッファ331に一時記憶している3番目のユニットラインのそれぞれの画素データに対してYC処理の演算を行って生成した3番目のユニットラインに対応した処理画素データDAT1を、遅延時間D1(レイテンシD1)だけ遅れたタイミングから、画像処理モジュール43−2に出力する。制御部434−2は、前段の画像処理モジュール33−1から3番目のユニットラインに対応した処理画素データDAT1が入力されると、入力された3番目のユニットラインの処理画素データDAT1を入力バッファ431−2内の空いている1番目のユニットライン記憶領域4311−2に書き込むためのバッファライト信号を生成する。これにより、3番目のユニットラインのバッファライトの期間において、3番目のユニットラインに対応したそれぞれの処理画素データDAT1が、入力バッファ431−2内の1番目のユニットライン記憶領域4311−2に書き込まれ、一時記憶される。
また、制御部434−2によって2番目のユニットラインのそれぞれの処理画素データDAT1の読み出しが終了すると、入力バッファ431−2は、2番目のユニットライン記憶領域4311−2が空いている状態になるため、制御部434−2は、画像処理モジュール33−1に出力しているデータリクエスト信号REQ2を“High”レベルの状態を維持する。これにより、画像処理モジュール33−1は、データリクエスト信号REQ2に応じて、引き続き、入力バッファ331に一時記憶している4番目のユニットラインのそれぞれの画素データに対してYC処理の演算を行って生成した4番目のユニットラインに対応した処理画素データDAT1を、画像処理モジュール43−2に出力する。制御部434−2は、前段の画像処理モジュール33−1から4番目のユニットラインに対応した処理画素データDAT1が入力されると、入力された4番目のユニットラインの処理画素データDAT1を入力バッファ431−2内の空いている2番目のユニットライン記憶領域4311−2に書き込むためのバッファライト信号を生成する。これにより、4番目のユニットラインのバッファライトの期間において、4番目のユニットラインに対応したそれぞれの処理画素データDAT1が、入力バッファ431−2内の2番目のユニットライン記憶領域4311−2に書き込まれ、一時記憶される。
また、制御部434−2は、入力バッファ431−2内の2番目のユニットライン記憶領域4311−2への4番目のユニットラインのそれぞれの処理画素データDAT1を開始すると、入力バッファ431−2の全てのユニットライン記憶領域4311−2が空いていない状態になる。このため、制御部434−2は、画像処理モジュール43−2が処理画素データDAT1を受け付けることができない状態になったことを表すために、画像処理モジュール33−1に出力しているデータリクエスト信号REQ2を“Low”レベルにする。これにより、画像処理モジュール33−1は、データリクエスト信号REQ2に応じて、入力バッファ331に一時記憶している5番目以降のユニットラインのそれぞれの画素データに対してYC処理の演算を行って生成したそれぞれのユニットラインに対応した処理画素データDAT1の画像処理モジュール43−2への出力を停止する。
その後、同様に、制御部434−2は、入力バッファ431−2のユニットライン記憶領域4311−2の状態に応じてデータリクエスト信号REQ2のレベルを変更することによって、画像処理モジュール43−2が処理画素データDAT1を受け付けることができるか否かの状態を画像処理モジュール33−1に通知する。そして、制御部434−2は、それぞれのユニットラインのバッファライトの期間において、前段の画像処理モジュール33−1から入力された5番目以降のユニットラインに対応したそれぞれの処理画素データDAT1を順次、入力バッファ431−2に一時記憶する。
このようにして、画像処理モジュール43−2は、前段の画像処理モジュール33−1から入力された処理画素データDAT1を入力バッファ431−2に一旦記憶してから読み出して、歪曲収差の歪補正処理を行った処理画素データDAT2を、後段の画像処理モジュール33−3に順次出力する。
ところで、画像処理モジュール43−2では、図12に示したように、入力バッファ431−2に一時記憶している2番目のユニットラインのそれぞれの処理画素データDAT1の読み出しが終了したときには、3番目のユニットラインの処理画素データDAT1が入力バッファ431−2に一時記憶されていない状態である。このため、制御部334−4は、2番目のユニットラインのそれぞれの処理画素データDAT1の読み出しが終了した後に、引き続き3番目のユニットラインの処理画素データDAT1を入力バッファ431−2から読み出すことができない。このことにより、画像処理モジュール43−2から後段の画像処理モジュール33−3への3番目のユニットラインに対応したそれぞれの処理画素データDAT2の出力は、一旦停止される。そして、画像処理モジュール43−2からの3番目のユニットラインのそれぞれの処理画素データDAT2の出力が再開されるのは、制御部434−2によって3番目のユニットラインの処理画素データDAT1が入力バッファ431−2に一時記憶された後に読み出され、演算部433−2が歪曲収差の歪補正処理の演算を行って3番目のユニットラインの処理画素データDAT2を生成した後のタイミングになる。このときも、画像処理モジュール43−2から出力される3番目のユニットラインに対応した処理画素データDAT2は、演算部433−2におけるレイテンシD2だけ遅れて出力されることになる。
画像処理モジュール33−3は、前段の画像処理モジュール43−2から1番目のユニットラインに対応したそれぞれの処理画素データDAT2が入力されると、図9に示した本発明の画像処理装置1におけるそれぞれの処理モジュールの動作の一例と同様に、入力されたそれぞれの処理画素データDAT2をそのまま演算部333−3に転送される。そして、演算部333−3は、転送された1番目のユニットラインのそれぞれの処理画素データDAT2に対してノイズ低減処理の演算を行って生成した処理画素データDAT3を、遅延時間D3(レイテンシD3)だけ遅れたタイミングから画像処理モジュール33−4に出力する。
このとき、画像処理モジュール33−3でも、図12に示したように、画像処理モジュール43−2からの3番目のユニットラインのそれぞれの処理画素データDAT2の出力が一旦停止されることに伴って、画像処理モジュール33−3から後段の画像処理モジュール33−4への3番目のユニットラインに対応したそれぞれの処理画素データDAT3の出力が一旦停止される。そして、画像処理モジュール33−3でも、3番目のユニットラインのそれぞれの処理画素データDAT3の出力が再開されるのは、画像処理モジュール43−2からの3番目のユニットラインのそれぞれの処理画素データDAT2の出力が再開され、演算部333−3がノイズ低減処理の演算を行って3番目のユニットラインの処理画素データDAT3を生成した後のタイミングになる。このときも、画像処理モジュール33−3から出力される3番目のユニットラインに対応した処理画素データDAT3は、演算部333−3におけるレイテンシD3だけ遅れて出力される。
このことから、画像処理モジュール33−4には、2番目のユニットラインと3番目のユニットラインとの間に、処理画素データDAT3が入力されていない期間が発生してしまう。この画像処理モジュール33−4に処理画素データDAT3が入力されていない期間が、図12に示したそれぞれの処理モジュールの動作の一例におけるパイプラインストール状態の期間である。
なお、図12に示したそれぞれの処理モジュールの動作の一例においても、画像処理モジュール33−4の動作は、図9に示した本発明の画像処理装置1におけるそれぞれの処理モジュールの動作の一例と同様であるため、画像処理モジュール33−4に処理画素データDAT3が入力されていないパイプラインストール状態の期間が、画像処理モジュール33−4の後段の処理モジュール(例えば、出力DMAモジュール34)にも伝搬することになる。
このように、他の処理モジュールに備えたデータバッファの代わりに用いることができる記憶容量(余っている記憶容量)が少ないにも関わらず、入力データをそのまま演算部に転送する構成にしてしまった場合には、一連のパイプライン処理において、パイプラインストール状態が発生してしまう。つまり、CPU50が、画像処理部30内にパイプラインを構成したそれぞれの処理モジュールに対して、入力データを演算部に転送する経路を正しく設定しないと、構成したパイプラインにおいてパイプラインストール状態が発生してしまう。
しかしながら、本発明の画像処理装置1では、上述したような方法によって、CPU50が画像処理部30内にパイプラインを構成したそれぞれの処理モジュールに対して、入力データを演算部に転送する経路を正しく設定することによって、構成したパイプラインにおけるパイプラインストール状態を回避して一連のパイプライン処理を行うことができる。しかも、いずれかの処理モジュールに備えたデータバッファを、他の処理モジュールに備えたデータバッファの代わりに用いることにより、CPU50は、他の処理モジュールに備えたデータバッファ動作を停止するように制御することができ、停止したデータバッファの消費電力を削減することができる。
本実施形態によれば、メモリ(DRAM20)と、入力されたデータ(画素データまたは処理画素データ)に対して予め定めた処理を行う複数の処理モジュール(画像処理モジュール33−1〜画像処理モジュール33−5)が直列に接続されたパイプラインが構成され、それぞれの処理モジュール(画像処理モジュール33および画像処理モジュール43)が処理を順次行うことによってパイプライン処理を行う画像処理部(画像処理部30)とがデータバス(DMAバス10)に接続され、画像処理部30が行うパイプライン処理の設定を行うシステム制御部(CPU50)を備えた画像処理装置(画像処理装置1)であって、画像処理モジュール33および画像処理モジュール43のそれぞれは、画素データまたは処理画素データを処理の単位ごとに一時的に記憶するデータバッファ(入力バッファ331または入力バッファ431)と、CPU50による処理内容の設定(処理モードやパラメータ)に応じて、処理の演算を行う演算部(演算部333または演算部433)と、CPU50による画素データまたは処理画素データの転送経路の設定(パラメータ)に応じて、画素データまたは処理画素データを演算部333または演算部433に転送する画像処理モジュール33または画像処理モジュール43内の経路を選択すると共に、入力バッファ331または入力バッファ431の動作を制御する制御部(制御部334または制御部434)と、を備え、画像処理部30は、CPU50によるパイプライン構成の設定に応じて、パイプラインを構成する処理モジュール(画像処理モジュール33および画像処理モジュール43)同士の接続を切り替える接続切り替え部(接続切り替え部31)、をさらに備える画像処理装置(画像処理装置1)が構成される。
また、本実施形態によれば、複数の画像処理モジュール33および画像処理モジュール43の内、少なくとも1つの処理モジュールは、予め定めた複数の処理の演算を排他的に行う演算部である第2の演算部(演算部433)を備えた第2の処理モジュール(画像処理モジュール43)であり、CPU50は、画像処理モジュール43がデータに対して行う処理の内容、および画像処理モジュール43に隣接して接続された画像処理モジュール33および画像処理モジュール43に備えた入力バッファ331または入力バッファ431の記憶容量に基づいて、転送経路の設定、およびパイプライン構成の設定を行う画像処理装置1が構成される。
また、本実施形態によれば、CPU50は、画像処理モジュール43が処理内容の設定に応じた処理の演算を行う際に余っている入力バッファ431の記憶容量(バッファ領域)がある場合、演算部433と、隣接して接続された画像処理モジュール33に備えた演算部333とを1つの演算部であるものとし、余っている記憶容量(バッファ領域)が、隣接して接続された画像処理モジュール33に備えた入力バッファ331の記憶容量の代わりに用いることができる容量である場合、隣接して接続された画像処理モジュール33の転送経路の設定を、画素データまたは処理画素データを入力バッファ331に記憶せずにスルーして演算部333に転送する経路にすると共に、隣接して接続された画像処理モジュール33に備えた入力バッファ331の動作を停止させ、バッファ領域が、隣接して接続された画像処理モジュール33に備えた入力バッファ331の記憶容量の代わりに用いることができない容量である場合、隣接して接続された画像処理モジュール33の転送経路の設定を、画素データまたは処理画素データを入力バッファ331に一旦記憶してから読み出して演算部333に転送する経路にする画像処理装置1が構成される。
また、本実施形態によれば、CPU50は、画像処理モジュール43に備えた入力バッファ431の余っている記憶容量(バッファ領域)を、入力バッファ431の全体の記憶容量と、画像処理モジュール43が処理内容の設定に応じた処理の演算を行う際に使用する入力バッファ431の記憶容量(補間領域)とに基づいて算出する画像処理装置1が構成される。
また、本実施形態によれば、画像処理モジュール33および画像処理モジュール43は、入力バッファ331または入力バッファ431から読み出した画素データまたは処理画素データを転送する経路、および入力バッファ331または入力バッファ431をスルーして画素データまたは処理画素データを転送する経路のいずれか一方の経路を、画素データまたは処理画素データを転送する経路として選択するセレクタ(セレクタ332)、をさらに備える画像処理装置1が構成される。
また、本実施形態によれば、画素データまたは処理画素データは、画像に含まれるそれぞれの画素に対応した画素データであり、演算部433は、画像に含まれるそれぞれの画素の座標の変換機能を利用した画像補間処理によって複数の処理の演算を排他的に行う演算部であり、CPU50は、画像処理モジュール43に備えた入力バッファ431の余っている記憶容量(バッファ領域)を、入力バッファ431の全体の記憶容量と、画像処理モジュール43が画像補間処理の設定値に応じた画像補間処理の演算を行う際に使用する入力バッファ431の記憶容量(補間領域)とに基づいて算出する画像処理装置1が構成される。
また、本実施形態によれば、画像補間処理は、画像の大きさを変更するリサイズ処理と、画像に含まれる歪曲収差の歪みを補正する歪補正処理と、を少なくとも含む画像処理装置1が構成される。
また、本実施形態によれば、画像処理モジュール43に隣接して接続された画像処理モジュール33は、パイプラインの構成において画像処理モジュール43の後段に接続された画像処理モジュール33である画像処理装置1が構成される。
また、本実施形態によれば、メモリ(DRAM20)と、入力されたデータ(画素データまたは処理画素データ)に対して予め定めた処理を行う複数の処理モジュール(画像処理モジュール33−1〜画像処理モジュール33−5)が直列に接続されたパイプラインが構成され、それぞれの処理モジュール(画像処理モジュール33および画像処理モジュール43)が処理を順次行うことによってパイプライン処理を行う画像処理部(画像処理部30)とがデータバス(DMAバス10)に接続され、画像処理部30が行うパイプライン処理の設定を行うシステム制御部(CPU50)を備えた画像処理装置(画像処理装置1)における画像処理方法であって、画像処理モジュール33および画像処理モジュール43のそれぞれが、CPU50による処理内容の設定(処理モードやパラメータ)に応じて、処理の演算を行う演算ステップと、CPU50による画素データまたは処理画素データの転送経路の設定(パラメータ)に応じて、処理の演算を行う演算部(演算部333または演算部433)に画素データまたは処理画素データを転送する画像処理モジュール33または画像処理モジュール43内の経路を選択すると共に、画素データまたは処理画素データを処理の単位ごとに一時的に記憶するデータバッファ(入力バッファ331または入力バッファ431)の動作を制御する制御ステップと、を含み、画像処理部30が、CPU50によるパイプライン構成の設定に応じて、パイプラインを構成する処理モジュール(画像処理モジュール33および画像処理モジュール43)同士の接続を切り替える接続切り替えステップ、をさらに含む画像処理方法が構成される。
上記に述べたとおり、本発明を実施するための形態によれば、画像処理装置に備えた画像処理部に、それぞれの処理モジュールの接続を切り替える、つまり、画像処理部に構成するパイプラインの接続を切り替える接続切り替え部を備える。これにより、本発明を実施するための形態では、画像処理装置に備えた画像処理部が実行する画像処理(パイプライン処理)を決定するごとに、画像処理部内の処理モジュールの接続を切り替え、パイプライン構成内で流れるそれぞれのデータの経路を変更する(切り替える)ことができる。
また、本発明を実施するための形態によれば、画像処理装置に備えた画像処理部において、パイプラインを構成する複数の処理モジュールのそれぞれに、入力された入力データを、一旦データバッファに記憶してから読み出して演算部に転送する経路、またはデータバッファをスルーして演算部に転送する経路のいずれか一方の経路を選択する(切り替える)構成を備える。これにより、本発明を実施するための形態では、画像処理装置に備えた画像処理部が実行する画像処理(パイプライン処理)を決定するごとに、それぞれの処理モジュール内で流れる入力データの経路を変更する(切り替える)ことができる。このとき、本発明を実施するための形態では、画像処理部が実行する画像処理(パイプライン処理)によっては、画像処理部においてパイプラインを構成する複数の処理モジュールに備えたそれぞれの演算部を1つの演算部として考える。そして、本発明を実施するための形態では、複数の演算部を1つの演算部として考えた場合、多くの記憶容量をもっているデータバッファを備えた処理モジュールにおいて画像処理の演算に使用せずに余っている記憶容量を、1つの演算部として考えた他の処理モジュールに備えたデータバッファの代わりに用いる。つまり、本発明を実施するための形態では、画像処理の演算に使用せずに余っている記憶容量を、他の処理モジュールに備えたデータバッファの記憶容量として提供する。さらに、本発明を実施するための形態では、データバッファの記憶容量が提供された処理モジュールに備えたデータバッファをスルーする経路で入力データを演算部に転送するように制御し、データバッファの動作を停止させる。これにより、本発明を実施するための形態では、動作を停止したデータバッファにおける消費電力を削減することができる。このことにより、本発明を実施するための形態では、従来の処理モジュールでパイプラインを構成したときのように必ずデータバッファへのデータの書き込みとデータバッファからのデータの読み出しとを行わなくても、所望の画像処理を行うことができ、パイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。つまり、本発明を実施するための形態では、画像処理部に備えられたそれぞれの処理モジュールによるパイプライン処理によって、所望の画像処理を行うときのパイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
なお、本発明を実施するための形態では、画像処理部30内のパイプライン構成において、複数の画像処理の演算機能を備えた画像処理モジュール43に備えた演算部433−2と、画像処理モジュール43の後段に接続された画像処理モジュール33−3に備えた演算部333−3とを1つの演算部であると考えた場合について説明した。つまり、本発明を実施するための形態では、画像処理モジュール43に備えた入力バッファ431−2を、画像処理モジュール33−3に備えた入力バッファ331−3の代わりに用いる場合について説明した。しかし、画像処理部30内のパイプライン構成において、1つの演算部であると考えることができる他の処理モジュールに備えた演算部は、本発明を実施するための形態で説明したような、後段の処理モジュールに備えた演算部に限定されるものではない。例えば、前段の処理モジュールに備えた演算部と合わせて1つの演算部であると考えることもできる。この場合であっても同様に、本発明の考え方を適用することができる。
また、本発明を実施するための形態では、画像処理部30においてパイプラインを構成する画像処理モジュール43の後段に接続された画像処理モジュール33−3に備えた入力バッファ331−3の動作を停止することによって、入力バッファ331−3の消費電力を削減する場合について説明した。しかし、それぞれの処理モジュールに備えたデータバッファの構成は、図5(a)に示したように、1つのユニットラインに対応したユニットライン記憶領域4311を複数並べた構成である。このため、データバッファの構成を、ユニットライン記憶領域4311ごと、または予め定めた数のユニットライン記憶領域4311ごとに、動作を制御する構成にしてもよい。この構成にした場合には、データバッファにおいて、動作を制御する単位ごとにユニットライン記憶領域4311の動作を停止するように制御することもできるようになる。
なお、本発明を実施するための形態では、画像処理装置に備えた画像処理部において、パイプラインを構成するそれぞれの画像処理モジュールに、画像処理モジュール自身に備えたデータバッファをスルーするか否かの選択(切り替え)を制御する機能を備えた構成について説明した。しかし、上述したように、画像処理部においてパイプラインを構成する処理モジュールである入力DMAモジュールと出力DMAモジュールとにもデータバッファを備えている。従って、入力DMAモジュールや出力DMAモジュールにも、画像処理モジュールと同様に、自身に備えたデータバッファをスルーするか否かの選択(切り替え)を制御する機能を備えてもよい。この機能を備えることによって、入力DMAモジュールや出力DMAモジュールでも、画像処理モジュールと同様の効果を得ることができる。
また、本発明を実施するための形態では、画像処理装置に備えた画像処理部内にパイプラインを構成するそれぞれの処理モジュールを備えた構成について説明した。しかし、パイプライン構成によって一連の処理を行う処理装置は、画像処理装置の他にも種々の処理装置が考えられる。従って、本発明の考え方を適用することができる処理装置は、本発明を実施するための形態で示した画像処理装置に限定されるものではなく、複数の処理モジュールを直列に接続することによってパイプラインを構成してパイプライン処理を行う処理装置であれば、本発明の考え方を同様に適用することができ、本発明と同様の効果を得ることができる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。