以下、添付図面を参照しながら、本発明に係る画像処理装置、画像処理方法およびプログラムの実施形態を詳細に説明する。以下の実施形態では、2つの半球画像を繋ぎ合わせた全天球画像を生成する撮像装置に適用される画像処理装置を例に挙げて説明するが、これに限られるものではない。なお、全天球画像とは水平角度360度、垂直角度180度の全視野に渡って撮像された画像である。
図1は、本実施形態の撮像装置1(全天球画像を生成する撮像装置1)のハードウェア構成の一例を示す図である。以下では、魚眼レンズを構成する第1の光学系10b,第2の光学系10cと、第1の撮像素子13,第2の撮像素子14をまとめて撮像ユニット10と称することにする。第1の光学系10bは第1の撮像素子13に対応し、第2の光学系10cは第2の撮像素子14に対応している。図1においては、第1の撮像素子13,第2の撮像素子14は、第1の光学系10b,第2の光学系10cによる光学像を電気信号の画像データに変換して出力するCMOSセンサやCCDセンサなどの画像センサ、該画像センサの水平/垂直同期信号や画素クロックなどを生成するタイミング生成回路、当該撮像素子の動作に必要な種々のコマンド、パラメータなどが設定されるレジスタ群などを有している。これら2つの撮像素子13,14の同期信号はそれぞれ同期され、同じタイミングで撮像できるようにする必要がある。
撮像ユニット10の第1の撮像素子13および第2の撮像素子14の各々は、パラレルI/Fバスを介して画像処理装置20と接続されている。また、第1の撮像素子13および第2の撮像素子14の各々は、別途、シリアルI/Fバス(I2Cバス等)を介して撮像制御ユニット30と接続されている。画像処理装置20及び撮像制御ユニット30は、バス15を介してCPU40と接続される。 さらに、バス15には、ROM50、SRAM60、DRAM70、操作部80、外部I/F回路90などが接続される。画像処理装置20は、第1の撮像素子13により撮像された画像(以下の説明では「第1の画像」と称する場合がある)と、第2の撮像素子14により撮像された画像(以下の説明では「第2の画像」と称する場合がある)をパラレルI/Fバスを通して取り込み、それぞれの画像に対して所定の処理を施して出力画像を生成する。画像処理装置20の具体的な構成については後述する。
撮像制御ユニット30は、一般に撮像制御ユニット30自身をマスタデバイス、第1の撮像素子13および第2の撮像素子14をスレーブデバイスとして、I2Cバスを利用して、第1の撮像素子13および第2の撮像素子14のレジスタ群にコマンド等を設定する。必要なコマンド等は、CPU40から受け取る。また、該撮像制御ユニット30は、同じくI2Cバスを利用して、第1の撮像素子13および第2の撮像素子14のレジスタ群のステータス・データ等を取り込み、CPU40に送る。さらに、撮像制御ユニット30は、操作部80のシャッタボタンが押下されたタイミングで、第1の撮像素子13および第2の撮像素子14に画像(撮像画像)の出力を指示する。
CPU40は、撮像装置1の全体の動作を制御すると共に必要な処理を実行する。ROM50は、CPU40のための種々のプログラムを記憶している。SRAM60及びDRAM70はワークメモリであり、CPU40で実行するプログラムや処理途中のデータ等を記憶する。ここで、DRAM70は、画像処理装置20での処理途中の画像や処理済みの全天球画像のデータを記憶するのにも利用され、後述の画像記憶部101として機能する形態であってもよい。
操作部80は、種々の操作ボタンや電源スイッチ、シャッタボタン、表示と操作の機能を兼ねたタッチパネルなどの総称である。ユーザは操作ボタンを操作することで、種々の撮影モードや撮影条件などを入力する。外部I/F回路90は、外付けメモリ(SDカード、フラッシュメモリ等)やパーソナルコンピュータなどとのインタフェース回路(USBI/F等)の総称である。また、外部I/F回路90としては、無線、有線を問わずにネットワークインタフェースである場合も考えられる。DRAM70に記憶された全天球画像は、該外部I/F回路90を介して外付けメモリに蓄積され、必要に応じて、ネットワークI/Fとなる外部I/F回路90を介してパーソナルコンピュータや、スマートフォン等に転送される。
図2は、画像処理装置20のハードウェア構成の一例を示す図である。本実施形態の画像処理装置20は、出力画像(この例では全天球画像)を複数の領域(以下、「出力画像領域」と称する)に分割し、複数の出力画像領域ごとに、入力画像(この例では前述の第1の画像または前述の第2の画像)のうち当該出力画像領域の画像を形成するのに用いられる領域を示す参照画像を補正して該出力画像領域の画像を生成する。以下、具体的に説明する。
図2に示すように、画像処理装置20は、全体制御回路201、レジスタ制御回路202、インタフェース回路203、参照画像メモリ204A,204B、補間処理回路205、合成処理回路206、補正後画素メモリ207を備える。
また、画像処理装置20は、メモリコントローラ100を介して、「入力画像記憶部」の一例である画像記憶部101と接続される。メモリコントローラ100は、画像記憶部101に対する画像(例えば入力画像等)の書き込み/読み出しを行う。メモリコントローラ100には、撮像ユニット10から入力画像が入力される。また、メモリコントローラ100には、外部から画像処理パラメータが入力される。メモリコントローラ100は、外部から入力された画像処理パラメータを、一旦DRAM70に書き込んで、全体制御回路201の指示を受けて、インタフェース回路203を経由して全体制御回路201へ渡す。
本実施形態における画像処理パラメータは、複数の出力画像領域の各々に対応する参照画像を特定する情報(例えば参照画像の位置やサイズを示す情報等)、参照画像のうち後述の補間処理に用いる画素(以下の説明では「補間処理用参照画素」と称する場合がある)を示す情報(例えば参照画像における画素位置を示す情報等)、画像記憶部101から参照画像を読み出すか否かを制御するための連続制御フラグ(出力画像領域ごとに設定可能)、後述の合成対象の出力画像領域であるか否かを示すエリア合成フラグ(出力画像領域ごとに設定可能)、後述の合成対象の画素であるか否かを示す画素合成フラグ、合成の割合などの情報を含む。また、この例における画像処理パラメータは、撮像装置1(全天球カメラ)の傾きや回転により全天球画像の視覚に影響しないよう、天頂補正処理後の入力画像を処理(例えば後述の補間処理などの補正)するためのパラメータである。
全体制御回路201は、画像処理装置20の全体の動作を制御する。図3は、全体制御回路201が有する機能の一例を示す図である。説明の便宜上、図3では、本発明に関する機能を主に例示しているが、全体制御回路201が有する機能はこれらに限られるものではない。
図3に示すように、全体制御回路201は、取得部211、特定部212、読み出し制御部213、処理制御部214を有する。本実施形態では、これらの機能は、ハードウェア回路で実現されるが、これに限らず、例えばCPU(Central Processing Unit)がプログラムを実行することにより実現される形態であってもよい。
取得部211は、前述の画像処理パラメータを外部から取得する。この例では、取得部211は、前述の画像処理パラメータを、インタフェース回路203を経由してメモリコントローラ100から受け取ることができる。
特定部212は、取得部211により取得された画像処理パラメータに基づいて、各出力画像領域に対応する参照画像を特定する。
読み出し制御部213は、出力画像を分割して得られる複数の出力画像領域ごとに、入力画像のうち当該出力画像領域の画像を形成するのに用いられる領域を示す参照画像を画像記憶部101から読み出す。つまり、読み出し制御部213は、複数の出力画像領域ごとに、特定部212により特定された参照画像を画像記憶部101から読み出す制御を行う。この例では、画像記憶部101からの参照画像の読み出しに関しては、読み出し制御部213がメモリコントローラ100に対して参照画像の読み出しを依頼し、この依頼を受けたメモリコントローラ100が参照画像の読み出しを行い、その読み出した参照画像を読み出し制御部213へ渡すといった具合である。
読み出し制御部213は、画像記憶部101から読み出した参照画像を、高速に読み書き可能なSRAMで構成される参照画像メモリ204Aまたは参照画像メモリ204B(図2参照)に書き込む。参照画像メモリ204Aは、前述の第1の画像のうちの一部である第1の参照画像を記憶し、参照画像メモリ204Bは、前述の第2の画像のうちの一部である第2の参照画像を記憶する。この例では、参照画像メモリ204Aおよび204Bの各々は、それぞれが、複数の出力画像領域の何れかに対応する参照画像(第1の参照画像または第2の参照画像)を記憶するための複数の参照画像記憶部21を含む。ここでは、第1の参照画像を記憶する参照画像記憶部21を「参照画像記憶部21A」と表記し、第2の参照画像を記憶する参照画像記憶部21を「参照画像記憶部21B」と表記する。以下では、両者を区別しない場合は、単に「参照画像記憶部21」と称する。同様に、参照画像メモリ204Aと参照画像メモリ204Bを区別しない場合は、単に「参照画像メモリ204」と称する。
また、本実施形態の読み出し制御部213は、複数の出力画像領域の各々に対応する参照画像が同じである場合は、該同じ参照画像を1回だけ画像記憶部101から読み出す。これにより、画像記憶部101へのアクセスを減らしてメモリ帯域の不足を改善することができる。また、本実施形態の読み出し制御部213は、前述の画像処理パラメータに含まれる連続制御フラグに基づいて、画像記憶部101からの参照画像の読み出しを制御する。この例では、読み出し制御部213は、連続制御フラグが有効に設定された出力画像領域に対応する参照画像については画像記憶部101からの読み出しを行わず、連続制御フラグが無効に設定された出力画像領域に対応する参照画像については画像記憶部101からの読み出しを行うことになる。参照画像が共通する複数の出力画像領域に対しては、補間処理が完了するまで連続制御フラグが有効に維持されるという具合である。
処理制御部214は、後述の補間処理回路205および合成処理回路206の動作を制御する。
図2の説明を続ける。レジスタ制御回路202は、CPU40からの制御信号に基づいて、画像処理装置20の各部(全体制御回路201、補間処理回路205等)の設定を記憶するレジスタに対する読み書きを制御する。
インタフェース回路203は、メモリコントローラ100に接続され、メモリコントローラ100と情報のやり取りを行う。インタフェース回路203は、メモリコントローラ100から受け取った情報を全体制御回路201へ渡す。
補間処理回路205は、全体制御回路201(処理制御部214)の制御の下、複数の出力画像領域ごとに、該出力画像領域に対応する参照画像を補正して該出力画像領域の画像を生成する。補間処理回路205は、前述の画像処理パラメータに基づいて、複数の出力画像領域ごとに、該出力画像領域に対応する参照画像を補正して該出力画像領域の画像を生成する。ここでは、上記補正は、出力画像領域の画像を得るために画素を補間する補間処理である。例えば画像処理パラメータは、複数の出力画像領域の各々について、該出力画像領域に含まれる複数の単位領域(所定数の画素の集合)ごとに、補間処理用参照画素を1つずつ指定する形態であってもよい。画像処理回路205は、各出力画像領域について、該出力画像領域に含まれる複数の単位領域ごとに、画像処理パラメータで指定された補間処理用参照画素(該単位領域に対応する1つの補間処理用参照画素)を用いて、該単位領域に含まれる複数の画素を線形補間等により復元することができる。
この例では、補間処理回路205は、複数の出力画像領域と1対1に対応し、それぞれに対応する参照画像の補間処理を行う複数の補間部25(「補正部」の一例)を含む。本実施形態では、参照画像記憶部21および補間部25を複数個(出力画像領域の数と同数)ずつ設けることで、複数の出力画像領域ごとの前述の補間処理を並列に実行することができる。これにより、複数の出力画像領域ごとの補間処理をシリアルに実行する形態に比べて、処理速度を高めることができる。
また、補間処理回路205は、処理対象の出力画像領域が合成対象である場合(処理対象の出力画像領域が、合成対象であることを示すエリア合成フラグが設定された出力画像領域である場合)、該出力画像領域に対応する第1の参照画像および第2の参照画像の各々に含まれる画素のうち、合成対象の画素についてのみ補間処理を行う。この例では、前述の画像処理パラメータは、エリア合成フラグにより合成対象であることが示された出力画像領域に含まれる複数の画素ごとに、合成対象であるか否かを示す画素合成フラグを指定した情報を含んでいる。そして、補間処理回路205は、合成対象であることを示す画素合成フラグが指定された画素に対応する補間処理用参照画素(前述の画像処理パラメータにより特定可能)のみを用いて、前述の補間処理を行うことができる。
ここでは、補間処理回路205が「処理部」に対応すると考えてもよいし、補間処理回路205と全体制御部201(処理制御部214)の組み合わせが「処理部」に対応すると考えてもよい。なお、これに限らず、全体制御部201(処理制御部214)が「処理部」に対応すると考えてもよい。要するに、画像処理装置20が、複数の出力画像領域ごとに、該出力画像領域に対応する参照画像を補正して該出力画像領域の画像を生成する機能(「処理部」)を有する形態であればよい。
合成処理回路206は、全体制御回路201(処理制御部214)の制御の下、出力画像領域に対応する参照画像が、第1の画像のうちの一部である第1の参照画像と、第2の画像のうちの一部である第2の参照画像である場合(つまり、該出力画像領域が合成対象である場合)、該第1の参照画像を補正して得られる第1の補正後画像と、該第2の参照画像を補正して得られる第2の補正後画像とを合成する。ここでは、合成処理回路206は、合成対象の出力画像領域に含まれる複数の画素のうち、合成対象であることを示す画素合成フラグが指定された画素についてのみ上記合成を行う。
本実施形態では、合成処理回路206は、合成対象の出力画像領域であることを示すエリア合成フラグが設定された出力画像領域については、補間処理回路205の補間処理により得られた、該出力画像領域に対応する第1の補正後画像と第2の補正後画像とを合成し、その合成により得られた画像(補正後画像)を補正後画素メモリ207に書き込む。一方、合成対象の出力画像領域であることを示すエリア合成フラグが設定されていない出力画像領域については、補間処理回路205の補間処理により得られた該出力画像領域の画像(補正後画像)をそのまま補正後画素メモリ207に書き込む。
このようにして補正後画素メモリ207には、各出力画像領域の補正後画像が書き込まれ、これらを繋ぎ合わせた出力画像(この例では全天球画像)が生成される。この出力画像は、外部へ出力されるとともに、メモリコントローラ100を経由して画像記憶部101に書き込まれてもよい。
次に、図4を用いて、撮像装置1の2つのレンズ(第1の光学系10b、第2の光学系10c)の位置と、出力画像との関係について説明する。全天球カメラである撮像装置1の各レンズは180度以上の画像を撮像できるので、各レンズ周辺の重なる部分(180度付近の撮像部分)を合成することで、自然な360度の全天球画像を生成することができる。つまり、この例では、出力画像(全天球画像)を分割して得られる複数の出力画像領域のうち、各レンズ周辺の重なる部分に対応する1以上の出力画像領域に対しては、合成対象であることを示すエリア合成フラグが設定され、該出力画像領域に含まれる複数の画素のうち合成対象の画素に対しては、合成対象であることを示す画素合成フラグが指定されることになる。
図4の(A)は、第1の光学系10bと第2の光学系10cを上下に置いた場合に生成される出力画像の一例を示す図である。図4の(A)に示す出力画像内の領域110bは、第1の光学系10bに対応する第1の撮像素子13により撮像された第1の画像のうち、第1の光学系10bの真中部(中央部)に対応する画像から形成された画像である。また、図4の(A)に示す出力画像内の領域110cは、第2の光学系10cに対応する第2の撮像素子14により撮像された第2の画像のうち、第2の光学系10cの真中部に対応する画像から形成された画像である。また、図4の(A)に示す出力画像内の領域110pは、第1の画像のうち第1の光学系10bの周辺部に対応する画像と、第2の画像のうち第2の光学系10cの周辺部に対応する画像とを元に合成した画像である。
図4の(B)は、第1の光学系10bと第2の光学系10cを左右に置いた場合に生成される出力画像の一例を示す図である。図4の(B)に示す出力画像内の領域110bは、前述の第1の画像のうち、第1の光学系10bの真中部に対応する画像から形成された画像である。また、図4の(B)に示す出力画像内の領域110cは、前述の第2の画像のうち、第2の光学系10cの真中部に対応する画像から形成された画像である。また、図4の(A)に示す出力画像内の領域110pは、第1の画像のうち第1の光学系10bの周辺部に対応する画像と、第2の画像のうち第2の光学系10cの周辺部に対応する画像とを元に合成した画像である。なお、2つのレンズが傾いたときは、各レンズの周辺部の移動に伴って、出力画像の合成領域(領域110p)も変化する。
図4の(C)の左側は、図4の(A)の出力画像を複数の出力画像領域に分割した図であり、図4の(C)の右側は、図4の(B)の出力画像を複数の出力画像領域に分割した図である。図4の(C)に示す白色の領域は、合成処理が必要な領域であり、合成対象であることを示すエリア合成フラグが設定されることになる。
次に、図5のように、第1の光学系10bと第2の光学系10cを上下に置いた場合における出力画像の生成について説明する。図5の点線部分は、第1の光学系10bおよび第2の光学系10cの各々の周辺部を示し、合成処理が必要な部分となる。図6の(A)は、撮像ユニット10で撮像された入力画像の天頂部の一定領域(この例では第1の画像のうち天頂部に対応する一定領域)を参照画像(第1の参照画像)として、矩形の出力画像のうち最上部の複数ライン分の領域が形成される様子を示す図である。同様に、撮像ユニット10で撮像された入力画像の天底部の一定領域(この例では第2の画像のうち天底部に対応する一定領域)を参照画像(第2の参照画像)として、矩形の出力画像のうち最下部の複数ライン分の領域が形成される。
図6の(B)は、撮像ユニット10で撮像された入力画像(この例では第1の画像)の4つの領域120a〜120dを参照画像(第1の参照画像)として、矩形の出力画像のうち、4つの領域120a〜120dと1対1に対応する4つの領域(ブロック部分の領域)が形成される様子を示す図である。図6の(C)は、撮像ユニット10で撮像された入力画像(この例では第1の画像)の8つの領域130a〜130hを参照画像(第1の参照画像)として、矩形の出力画像のうち、8つの領域130a〜130hと1対1に対応する8つの領域(ブロック部分の領域)が形成される様子を示す図である。
図7は、矩形の出力画像を、生成元の参照画像ごとに区分けして示す図である。図7において区分けされた出力画像の各領域(ブロック部分)は、該領域に対応する1つの参照画像から形成される部分であり、何れかの領域に含まれる複数の出力画像領域の各々の画像を得る場合は、該領域に対応する1つの参照画像を画像記憶部101から1回読み出せば、その後は該参照画像の読み出し(画像記憶部101からの読み出し)を必要とせずに、各出力画像領域の画像を得るための補間処理を連続的に実行することができる。なお、ここでは、入力画像の天頂部または天底部から中間部に近づくほど、参照画像の数が多くなり、参照画像の重なりも少なくなる。図7に示す黒色の領域は合成処理が必要な領域である。
次に、図8のように、第1の光学系10bと第2の光学系10cを左右に置いた場合における出力画像の生成について説明する。図8の点線部分は、第1の光学系10bおよび第2の光学系10cの各々の周辺部を示し、合成処理が必要な部分となる。
図9の(A)は、撮像ユニット10で撮像された入力画像の天頂部の一定領域を参照画像として、矩形の出力画像のうち最上部の複数ライン分の領域が形成される様子を示す図である。この例では、最上部の複数ライン分の領域を構成する複数の出力画像領域の各々に対応する参照画像は共通であり、第1の画像のうち天頂部に対応する一定領域を示す第1の参照画像、および、第2の画像のうち天頂部に対応する一定領域を示す第2の参照画像であるとする。
まず画像処理装置20は、最上部の複数ライン分の領域を構成する複数の出力画像領域のうち処理対象となる出力画像領域に対応する第1の参照画像として、第1の画像のうち天頂部に対応する一定領域を画像記憶部101から読み出し、その読み出した第1の参照画像を用いて前述の補間処理を行って第1の補正後画像を得る。次に、画像処理装置20は、処理対象となる出力画像領域に対応する第2の参照画像として、第2の画像のうち天頂部に対応する一定領域を画像記憶部101から読み出し、その読み出した第2の参照画像を用いて前述の補間処理を行って第2の補正後画像を得る。そして、以上のようにして得た第1の補正後画像と第2の補正後画像を合成して、処理対象の出力画像領域の画像を生成することができる。以降は、最上部の複数ライン分の領域を構成する複数の出力画像領域の各々の画像を得るまでの間、第1の参照画像および第2の参照画像を画像記憶部101から読み出すことはせず、上述の補間処理と合成処理を連続的に行うことができる。
図9の(B)は、矩形の出力画像のうち最上部よりも下段側の複数ライン分の領域が形成される様子を示す図である。基本的な考え方は図9の(A)で説明した内容と同じであるが、図9の(B)は、矩形の出力画像のうち、入力画像の4つの領域(参照画像の領域)と1対1に対応する4つの領域(ブロック部分の領域)が形成される様子を示す図である。図9の(C)は、図7に対応する図であり、図9の(C)に示す黒色の領域以外の領域は、合成処理が必要な領域である。
図10は、入力画像のうち天頂部および天底部の各々に対応する領域を4分割した場合における出力画像の生成例を示す図である。ここでは、図10の(A)に示すように、入力画像のうち天頂部に対応する領域は、4つの参照画像で構成される。なお、入力画像のうち天底部に対応する領域についても同様に、4つの参照画像で構成される。
図10の(B)は、図5のように、第1の光学系10bと第2の光学系10cを上下に置いた場合において、矩形の出力画像のうち最上部の複数ライン分の領域、および、最下部の複数ライン分の領域が形成される様子を示す図である。この場合、合成処理は不要となる。図10の(C)は、図8のように、第1の光学系10bと第2の光学系10cを左右に置いた場合において、矩形の出力画像のうち最上部の複数ライン分の領域、および、最下部の複数ライン分の領域が形成される様子を示す図である。この場合、図10の(C)に示す黒色の領域以外の領域は合成処理が必要な領域である。
図11は、参照画像記憶部21の分割と並列処理のメリットを説明するためのイメージ図である。図11の(A)は、参照画像記憶部21を分割した場合の処理のイメージ図である。前述の補間処理を行うための演算回路としてバイキュービック回路を例に挙げて説明する。この例では、演算の際に4×4の画素データが必要となり、参照画像記憶部21が1個の場合は、1クロックで4画素を読み出せるが、参照画像記憶部21を16個に分割すると、1クロックで16画素を読み出せる。そして、図11の(B)に示すように、それぞれが16個に分割された複数の参照画像記憶部21と1対1に対応する複数の演算回路を設けることで、並列処理が可能になり、処理性能を向上させることができる。
なお、本実施形態では、参照画像記憶部21および補間部25を複数個(出力画像領域の数と同数)ずつ設けているが、これに限らず、例えば参照画像記憶部21および補間部25が1つずつ設けられ、複数の出力画像領域ごとの補間処理を1つずつ順番に(シリアルに)実行する形態であっても構わない。この形態であっても、複数の出力画像領域の各々に対応する参照画像が同じである場合は、該同じ参照画像を1回だけ画像記憶部101から読み出して参照画像記憶部21に保持しておき、該複数の出力画像領域の各々の画像を生成するまでの間、画像記憶部101へのアクセスは行わず、かつ、参照画像記憶部21に保持された参照画像の更新を行わないようにすることで、画像記憶部101へのアクセスを減らしてメモリ帯域の不足を改善することができる。要するに、画像処理装置20は、複数の出力画像領域の各々に対応する参照画像が同じである場合は、該同じ参照画像を1回だけ画像記憶部101から読み出す形態であればよく、補間処理を並列に実行する形態であってもよいし、シリアルに実行する形態であってもよい。
図12は、複数の出力画像領域の各々の画像を生成する場合の画像処理装置20の動作を説明するための図である。以下では、出力画像領域を「エリア」と称して説明する。図12の(A)は、エリア1〜エリア11の画像を生成する場合の画像処理装置20の動作を示す図である。「エリア1」に着目して説明すると、まず画像処理装置20は、エリア1に対応する参照画像を画像記憶部101から読み出す。次に、画像処理装置20は、エリア1に対応する参照画像を用いて補間処理を行う。次に、画像処理装置20は、補間処理後の画像を出力する。他のエリアについても同様の流れになる。図12の(A)においては、エリアごとに参照画像を画像記憶部101から読み出して補間処理を行い、補間処理後の画像を出力している(この例では合成処理は無い)。
図12の(B)は、エリア1〜エリア9の画像を生成する場合の画像処理装置20の動作を示す図であり、エリア5およびエリア6の画像を生成する際に合成処理を行うことを示している。図12の(B)に示す「エリア5a」は、エリア5のうち、第1の光学系10bに対応するエリアを表し、図12の(B)に示す「エリア5b」は、エリア5のうち、第2の光学系10cに対応するエリアを表す。「エリア6a」および「エリア6b」についても同様である。
図12の(B)に示す「エリア5a」の画像は、第1の光学系10bに対応する第1の画像の一部である第1の参照画像から形成され(前述の第1の補正後画像として形成され)、図12の(B)に示す「エリア5b」の画像は、第2の光学系10cに対応する第2の画像の一部である第2の参照画像から形成される(前述の第2の補正後画像として形成される)。図12の(B)に示す「エリア5」の画像は、「エリア5a」の画像と「エリア5b」の画像との合成により生成されて出力される。
同様に、図12の(B)に示す「エリア6a」の画像は、第1の光学系10bに対応する第1の画像の一部である第1の参照画像から形成され、図12の(B)に示す「エリア6b」の画像は、第2の光学系10cに対応する第2の画像の一部である第2の参照画像から形成される。図12の(B)に示す「エリア6」の画像は、「エリア6a」の画像と「エリア6b」の画像との合成により生成されて出力される。
図12の(C)は、エリア1〜エリア12の画像を生成する場合の画像処理装置20の動作を示す図であり、エリア1〜エリア11に対応する参照画像は同じ画像である。この例では合成処理は無く、画像処理装置20は、エリア1〜エリア11に対応する参照画像を画像記憶部101から1回だけ読み出して、連続で補間処理を実行する。
図12の(D)は、エリア1〜エリア9の画像を生成する場合の画像処理装置20の動作を示す図であり、エリア1〜4、5a、6aに対応する参照画像は同じ画像であり、エリア5b、6b、7〜9に対応する参照画像は同じ画像である。図12の(D)では、エリア5およびエリア6の画像を生成する際に合成処理を行うことを示している。画像処理装置20は、エリア1〜4、5a、6aに対応する参照画像を画像記憶部101から1回だけ読み出して、エリア1〜4、5a、6aの各々の画像を得るための補間処理を連続して実行する。また、画像処理装置20は、エリア5b、6b、7〜9に対応する参照画像を画像記憶部101から1回だけ読み出して、エリア5b、6b、7〜9の各々の画像を得るための補間処理を連続して実行する。ここで、合成対象のエリア5の画像を生成する際は、エリア5aに対応する参照画像の補間処理(エリア5aの画像を得るための補間処理)と、エリア5bに対応する参照画像の補間処理(エリア5aの画像を得るための補間処理)を交互に(トグルに)実行し、補間処理後の2つの画像を合成する(図12の(D)参照)。合成対象のエリア6の画像を生成する場合についても同様である。
次に、図13を参照して、出力画像領域(エリア)のサイズ変更について説明する。図13は、図4の(C)の左側の図における黒色の領域の一部分を示す図であり、同じ参照画像で補間処理可能な領域(連続処理できる領域)を示している。図13の真中に示された「可能性がある状態」において、一番下の複数のエリアの一部分は、連続処理できる領域外に出ているので、例えば画像処理装置20は、その直下のように、一番下の複数のエリアも連続処理できる範囲に収まるよう該一番下の複数のエリアのサイズを変更することもできる。
次に、図14を参照して、画素単位の合成処理を説明する。図14の左側の図は、図4の(C)の右側の図における領域110bと合成領域110pとの境界の一部分を示す図である。図14の左側の図においては、エリア(出力画像領域)2、7、8、13、18、22、23、27の一部分に関して合成処理が必要となる。ここでは、エリアのサイズが「24画素×16ライン」のエリア7を例として拡大し、図14の右側の図に示す。
従来の合成処理は、エリア合成フラグにより、エリア7に対応している第1の参照画像(第1の光学系10bに対応する参照画像)と、第2の参照画像(第2の光学系10cに対応する参照画像)をそれぞれ補間処理して得られたエリア7aの画像(第1の補正後画像)とエリア7bの画像(第2の補正後画像)の全画素の合成処理を行っていた。図14に示す黒色の領域は、第1の参照画像から形成される合成不要な領域なので、エリア合成時、エリア7aの割合は100%、エリア7bの割合は0%に設定される。黒色の領域以外の画素は適切な割合で合成処理を行う。そのため、エリア7bの黒色の領域の画像を得るための補間処理に要する時間が無駄になっていた。
上述したように、本実施形態の画像処理装置20は、エリア合成フラグ以外に、画素合成フラグも用意しており、エリア7bに対応する参照画像に含まれる画素のうち、エリア7に含まれる画素の中で合成処理が必要な画素(画素22、23、24、47、48、72)に対応する画素のみを使って補間処理を行い、合成処理についても、エリア7に含まれる画素の中で合成処理が必要な画素のみを合成する。これにより、無駄な補間処理時間を省略することができるので、処理性能を向上させることができる。
以上に説明したように、本実施形態の画像処理装置20は、複数の出力画像領域(エリア)の各々に対応する参照画像が同じである場合は、該同じ参照画像を1回だけ画像記憶部101から読み出し、その読み出した参照画像から該複数の出力画像領域の各々の画像を生成する処理(この例では補間処理)を行う。これにより、画像記憶部101へのアクセスを減らしてメモリ帯域の不足を改善することができる。
以上、本発明に係る実施形態について説明したが、本発明は、上述の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上述の各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
また、上述した実施形態の画像処理装置20で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよいし、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、各種プログラムを、ROM等に予め組み込んで提供するように構成してもよい。