[光学歪み補正処理]
まず,図1,図2に基づき,光学歪み補正処理について説明する。
光学歪みとしては,画像フレームの4隅に表示される画像が外側に伸びるいわゆる糸巻き型歪みや,画像フレームの4隅に表示される画像が内側に縮むいわゆる樽型歪みが知られている。デジタル型の撮像装置においては,通常,凸レンズを使用するため,樽型歪みが生じる。
図1(A)は,画像フレームPFを示し,図1(B)は,画像フレームPFの画素Pの拡大図である。
図1(A)において,符号LNで示す1点鎖線は,画像が樽型に歪んでいる状態を模式的に示している。符号XはX軸を示し,符号YはY軸を示す。符号CNは,光学レンズの中心に対応する位置(X軸とY軸の交点)を示している。図1(A)において,画像フレームPF内の四角形により複数の画素を模式的に示している。符号dは,画素Pと中心CNとの距離を示す。
図1(B)において,縦線と横線(画素ライン)との交点部分を画素として示す。画素は,画素データ例えばRGBや,色差および輝度を有する。
図2の光学ディストーションカーブから明らかなように,画像フレームPFの中心CN付近では,光学歪みはあまり発生しないが,中心CNから画像フレーム辺部に向かうに従って,光学歪みが大きくなる。樽型歪みの場合には,画像フレームPFの中心CNから画像フレーム辺部に向かうに従って,光学歪み量が負の方向に大きくなる。なお,糸巻き型歪みの場合には,画像フレームPFの中心CNから画像フレーム辺部に向かうに従って,光学歪み量が正の方向に大きくなる。
この光学ディストーションカーブは,画像フレームPFの中心CNからの距離の多次元関数で近似的に算出できることが知られている。
この多次元関数の一例を(式1)に示す。
f(d)=α×d4+β×d2+γ…(式1)
(式1)において,dは図1に示した画像フレームPFの中心CNからの距離である。α,β,γは係数であり,例えば光学レンズの光学機器で定まる値である。
図1に示した画像フレームPFにおいて,光学歪み補正対象の画素(以下,補正対象画素と記す)の座標をP(X,Y)とする。なお,ここでX,Yは整数値である。図1(B)において,補正対象画素Pを,黒色丸で示している。
そして,この補正対象画素の画素データを補正するために必要となる光学歪み補正用画素の座標をp(x,y)とする。以下,光学歪み補正用画素の座標を補正用画素座標と記す。
一般に,補正用画素座標p(x,y)は,(式2)を用いることにより算出できることが知られている。
p(x,y)=(X×f(d),Y×f(d)); d=(X2+Y2)1/2…(式2)
画像フレームPFの光学歪みを補正する装置(以下,歪み補正装置と記す)は,補正対象画素Pの補正用画素座標p(x,y)を(式1),(式2)に基づき算出する。図1(B)において,補正用画素座標pを黒色4角で示す。
歪み補正装置は,この補正用画素座標p(x,y)の近傍画素の画素データにより補間(算出)した画素データを補正対象画素Pの画素データとすることで光学歪みを補正する。
補間方法の一例として,補正用画素座標p(x,y)における近傍4画素Pa,Pb,Pc,Pdの画素データにより内挿補間する方法がある。この補間において,補正用画素座標p(x,y)とこの近傍4画素との距離に応じて重み係数を決定する。
具体的には,補正用画素座標p(x,y)の整数部を(intx,inty)とし,小数部を(decx,decy)とすると,この補正用画素座標pの周囲にある近傍4画素の座標は,
Pa(intx,inty),Pb(intx,inty+1), Pc(intx+1,inty), Pd(intx+1,inty+1)である。
ここで,補正対象画素Pの歪み補正画素データをPDD,近傍4画素Pa,Pb,Pc,Pdの画素データをそれぞれPad,Pbd,Pcd,Pddとする。
この場合,補正対象画素Pの歪み補正画素データPDDは, (式3)に基づき,算出することができる。
PDD=Pad×(1−decx)×(1−decy)+Pbd×(1−decx)×decy +Pcd×decx×(1−decy)+Pdd×decx×decy …(式3)
この歪み補正画素データPDDを補正対象画素Pの画素データとすることにより光学歪みを補正する。すなわち,補正前の補正対象画素Pの画素データを,この歪み補正画素データPDDに置き換える。
歪み補正装置は,画像フレームPFの全画素に対して以上説明した光学歪み補正処理を実行することにより,画像フレームPFの光学歪みを補正する。
[立体画像生成装置]
図3は,本実施の形態の歪み補正装置を有する立体画像生成装置のブロック図の一例である。
立体画像生成装置1のCPU10は,撮像装置11,画像プロセッサ12,操作部13,表示部14,第1のメモリ15,ROM16,記録部17,歪み補正装置18を制御,すなわち,立体画像生成装置1の全体を制御する。なお,上記各ブロックは,バスBを介して相互に接続されている。第1のメモリは,例えばフレームメモリであり,以下,第1のメモリ15をフレームメモリと記す。
撮像装置11は,第1の撮像部111と,第2の撮像部112とを有する。第1の撮像部111は,例えば,図示しない光学ユニットと,光学ユニットの光軸後方側に設けられた撮像素子,例えばCCD(Charge Coupled Device),CMOS(Complementary Metal Oxide Semiconductor)を有する。この光学ユニットは,例えば,被写体像を結像させる光学レンズと,この光学レンズを光軸方向に移動させて被写体像を示す入射光を撮像素子の受光面上に結像させる自動焦点調整機構(図示しない)と,A/Dコンバータ(図示しない)とを有する。A/Dコンバータは,撮像素子が出力するアナログの画像信号をデジタルの画像信号に変換する。画像プロセッサ12は,各種画像処理,例えばデジタルの画像信号にガンマ補正処理や,RGBデータを輝度データおよび色差データに変換するYC変換処理を実行して画像フレームを生成する。第1の撮像部111は,この構成により第1の画像フレームを生成する。
第2の撮像部112も第1の撮像部111と同様に,光学ユニット,撮像素子,A/Dコンバータを有する。そして,画像プロセッサ12は,前記したように,このA/Dコンバータが変換したデジタルの画像信号に各種画像処理を実行して画像フレームを生成する。第2の撮像部112は,この構成により第2の画像フレームを生成する。
なお,画像プロセッサ12を撮像装置11と一体にしても良い。また,第1の画像フレームを左眼画像フレームとも言い,第2の画像フレームを右眼画像フレームとも言う。
第1の撮像部111の光軸と第2の撮像部112の光軸とのなす角度が輻輳角となるように,第1の撮像部111と第2の撮像部112とが配置されている。その結果,撮像装置11は,同一被写体について視差を有する第1,第2の画像フレームを生成することができる。
操作部13は,立体画像生成装置1を操作する機能を有し,例えば,電源ボタン,シャッター,操作ボタンを有する。
表示部14は,例えば,第1,第2の画像フレームや操作メニュー画面を表示する液晶パネル(図示しない)と,液晶パネルにおける表示処理を制御する制御部(図示しない)を有する。表示部14は,第1,第2の画像フレームにより立体視可能な画像を表示する。
フレームメモリ15は,第1の撮像部111,第2の撮像部112が生成した第1,第2の画像フレームや,後述する歪み補正処理が施された画像フレームを格納する。フレームメモリ15としては,例えば,SRAM(Static Random Access Memory),SDRAM(Synchronous Dynamic Random Access Memory)を利用できる。
ROM16は,例えば,各種パラメータや各種プログラムを格納する。
記録部17は,例えば着脱自在の記録媒体でも良く,例えば,第1の撮像部111,第2の撮像部112が生成した画像フレームを格納する。
[歪み補正装置の概略]
歪み補正装置18は,第1,第2の画像フレームの光学歪み補正処理を実行する。
DMAコントローラ181は,歪み補正部183の制御に基づき,フレームメモリ15に格納された,同一被写体について視差を有する第1,第2の画像フレームの画素ラインの画素データをフレームメモリ15から読み出して第2のメモリ182に格納する読出部である。第2のメモリは,例えばラインメモリであり,以下,第2のメモリ182をラインメモリ182と記す。
ラインメモリ182は,この画素ラインの画素データを格納する4ライン分のラインメモリP,Q,R,Sを有する。
ここで,4ライン分のラインメモリを設ける理由について説明する。(式3)で説明した光学歪み補正処理を実行する場合には,図2(B)の説明から明らかなように,2画素ラインの画素データを格納する2つのラインメモリが少なくとも必要である。
しかし,2ライン分のラインメモリでは,この2つのラインメモリに格納された画素データにより光学歪み補正処理を実行している間に,新たな画素データをフレームメモリ15から読み出して,ラインメモリ182に格納することができない。その結果,光学歪み補正処理が遅延してしまう。そこで,2ライン分×2,すなわち4ライン分のラインメモリP,Q,R,Sを設けている。そのため,2つのラインメモリP,Qに格納された画素データにより光学歪み補正処理を実行している間に,新たな画素データをフレームメモリ15から読み出して,他のラインメモリR,Sに格納することができる。なお,4ライン以上のラインメモリを設けても良いが,ラインメモリの面積が大きくなる。そこで,本実施の形態では,4ライン分のラインメモリを設けた。
歪み補正部183は,ラインメモリ182に格納された画素データにより第1,第2の画像フレームの光学歪み補正処理を行う。このとき,歪み補正部183は,第1,第2の画像フレームの光学歪み補正処理を第1の画像フレーム,次いで,第2の画像フレームの順に実行する。
歪み補正部183の算出部183aは,画像フレームにおける補正対象画素Pの補正用画素座標pを算出する座標算出部として動作する。この算出の際,算出部183aは,例えば,(式1),(式2)で示した所定の演算式に基づき,補正用画素座標pを算出する。さらに,算出部183aは,例えば,(式3)に基づき,ラインメモリ182に格納された画素データにより,補正対象画素Pの歪み補正画素データを算出する。
歪み補正部183は,算出部183aが算出した補正対象画素Pの歪み補正画素データをラインメモリ184に格納する。
ラインメモリ184は,歪み補正部183により光学歪みが補正された補正対象画素の画素データを格納する2ライン分のラインメモリV,Wを有する。ここで,2ライン分のラインメモリを設ける理由について説明する。光学歪みが補正された補正対象画素の画素データを格納する場合には,1ライン分のラインメモリを設ければ良い。しかし,1ライン分のラインメモリでは,光学歪みが補正された補正対象画素の画素データがこのラインメモリに格納されると,この画素データが読み出されるまで,新たな補正対象画素の画素データをラインメモリに格納することができなくなる。その結果,光学歪み補正処理が遅延してしまう。そこで,2ライン分のラインメモリを設けている。
DMAコントローラ185は,ラインメモリ184のラインメモリV,Wに格納された光学歪みが補正された画素データをフレームメモリ15に書き込む。
なお,座標格納メモリ186,アドレス算出部187については後述する。
[第1の画像フレームの光学歪み補正処理]
まず,図4〜図9に基づき,第1の画像フレームの光学歪み補正処理を説明する。
図4に示した画像フレームPFは,第1の撮像部111が生成した第1の画像フレームであり,フレームメモリ15に既に格納されている。
また,図1(A)で説明したように,図4において,点線で示す四角形により,画像フレームPF内の複数の画素を模式的に示している。画像フレームPFの画素の座標と,この画像フレームPFがフレームメモリ15に格納されている場合における前記画素のフレームメモリ15におけるメモリアドレスとは対応している。
歪み補正部183は,例えば,画像フレームPFにおいて区分けされた4つの大ブロックI〜IVについて順次,光学歪み補正処理を実行する。図5に大ブロックIにおいて,最初に光学歪み補正処理を実行する画素ライン付近の拡大図を示す。この画素ラインは,図4に示した大ブロックIにおける上辺部近傍の画素ライン(図4の符号B0参照)である。なお,図4,図5において,説明のため画素や画素ラインを誇張して記載している。
図6,図7のフロー図,図8のタイミングチャートにより第1の画像フレームの光学歪み補正処理の流れについて説明する。
以下の説明において,歪み補正装置18は,例えば,6画素単位で光学歪み補正処理を実行する。以下,画素ラインにおいて,この6画素単位の画素から構成される画素ラインを単位画素ラインと記す。図5の例では,画素P0〜P5,画素P10〜P15,画素P20〜P25が単位画素ラインである。
図6のステップS1:歪み補正部183は,DMAコントローラ181の初期設定を実行する。具体的には,歪み補正部183は,大ブロックにおいて最初の歪み補正対象画素ラインにおける単位画素ラインを補正するために用いる補正用画素データが格納されたフレームメモリ15におけるメモリアドレスをDMAコントローラ181に設定する。さらに,歪み補正部183は,このメモリアドレスに基づき読み出す画素データ量(以下,読み出し画素データ量と記す)と,読み出した画素データの転送後に移動する,フレームメモリ15におけるアドレス移動幅をDMAコントローラ181に設定する。読み出される画素データが格納されたフレームメモリ15の先頭アドレスとこのアドレス移動幅とを加算したメモリアドレス(オフセットアドレス)が,次回読み出される画素データが格納されているフレームメモリ15の先頭アドレスとなる。
図4に示した歪み補正対象の大ブロックIにおいて最初の歪み補正対象となる単位画素ラインは,図5に示した画素P0〜P5から構成される画素ラインである。
この単位画素ラインの補正対象画素を補正するために必要な補正用画素データは,画素ラインL1の部分画素ラインR1の画素データ,画素ラインL2の部分画素ラインR2の画素データである。以下の説明では,図5の点線四角形で示す画素を部分画素ラインとして示す。
補正対象画素P0〜P5はY軸近傍部分にあり,画像フレームの中心CNから余り離れておらず,光学歪みは相対的に大きくない。そのため,補正対象画素P0〜P5を有する画素ラインL0の近傍画素ラインである画素ラインL1の部分画素ラインR1,および,画素ラインL2の部分画素ラインR2の画素データが,補正対象画素P0〜P5を補正するために必要な補正用画素データとなる。
図6のステップS2: DMAコントローラ181は,前記設定されたフレームメモリ15のメモリアドレスにアクセスして,前記メモリアドレスに格納された画素データ(補正用画素データ)を読み出し,ラインメモリ182に転送,格納する。
図5の例では,DMAコントローラ181は,フレームメモリ15において,部分画素ラインR1の画素データが格納されているメモリアドレスにアクセスして,この画素データをフレームメモリ15から読み出し,ラインメモリ182のラインメモリPに格納する(図8の時間T0〜T1における符号DW1)。そして,DMAコントローラ181は,フレームメモリ15において,部分画素ラインR2の画素データが格納されているメモリアドレスにアクセスして,この画素データをフレームメモリ15から読み出し,ラインメモリ182のラインメモリQに格納する(図8の時間T1〜T2における符号DW2)。
図6のステップS3:算出部183aは,ステップS2で説明したDMAコントローラ181による補正用画素データのラインメモリ182への格納にあわせて,(式1),(式2)に基づき,補正対象画素の補正用画素座標を算出する。図5の例では,算出部183aは,(式1),(式2)に基づき,補正対象画素P0〜P5の補正用画素座標p0〜p5を算出する。
図6のステップS4:歪み補正部183は,ラインメモリ182に格納された画素データだけで補正対象画素の歪み補正が可能か判定する。図5の例では,補正用画素座標p0〜p5の近傍4画素(部分画素ラインR1,R2)の画素データがラインメモリ182のラインメモリP,Qに格納されている。そのため,歪み補正部183は,ラインメモリ182に格納された画素データだけで補正対象画素の歪み補正が可能と判定する(ステップS4/YES)。
図6のステップS5:歪み補正部183は,補正対象画素Pの座標(X,Y)と,(式1),(式2)に基づき算出された補正対象画素Pの補正用画素座標p(x,y)とが近似しているか判定する。ここで,補正対象画素Pの座標(X,Y)と,(式1),(式2)に基づき算出された補正対象画素Pの補正用画素座標p(x,y)とが近似しているとは,例えば,この補正対象画素Pの補正用画素の座標値の小数第1位を四捨五入した値が,補正対象画素Pの座標値と同値の場合である。ここでは,図5に示したように補正対象画素P0〜P5は画素ラインL0にあり,補正対象画素P0〜P5の補正用画素座標p0〜p5は,画素ラインL1,L2との間にある。すなわち,補正用画素座標p0〜p5の座標値の小数第1位を四捨五入した値が,補正対象画素P0〜P5の座標値と同値でなく,補正対象画素P0〜P5の座標と補正用画素座標p0〜p5とが近似しない。そのため,図7のステップS6に進む。
図7のステップS6:算出部183aは,(式3)に基づき,ラインメモリ182に格納された画素データにより補正対象画素の歪み補正画素データを算出する。そして,歪み補正部183は,この歪み補正画素データをラインメモリ184に格納する。
図5の例では,歪み補正部183は,ラインメモリPに格納された画素ラインL1の画素データを読み出す(図8の時間T2〜T4の符号DR1)。同じく,歪み補正部183は,ラインメモリQに格納された画素ラインL2の画素データを読み出す(図8の時間T2〜T4の符号DR2)。
そして,算出部183aは,(式3)に基づき,補正対象画素P0〜P5の補正用画素座標p0〜p5の近傍4画素の画素データを有する前記読み出された画素データにより,補正対象画素P0〜P5の歪み補正画素データを算出し(図8の時間T2〜T4の符号AM1),算出した歪み補正画素データをラインメモリ184のラインメモリVに格納する(図8の時間T2〜T4の符号DW3)。
なお,DMAコントローラ185は,図8の時間T10〜T12における符号DR13に示すように,ラインメモリVに格納された補正対象画素P0〜P5の歪み補正画素データをラインメモリ184のラインメモリVから読み出す。そして,DMAコントローラ185は,フレームメモリ15において光学歪み補正後の第1の画像フレームが格納される領域に,補正対象画素P0〜P5の座標と対応させて補正対象画素P0〜P5の歪み補正画素データを格納する。
このように,DMAコントローラ185は,随時,歪み補正部183により算出された補正対象画素の歪み補正画素データをラインメモリ184から読み出す。そして,DMAコントローラ185は,フレームメモリ15において光学歪み補正後の第1の画像フレームが格納される領域に,補正対象画素の座標と対応させて,補正対象画素の歪み補正画素データを格納する。以下,この処理の内容については説明を省略する。
ステップS3〜S6の処理に並行して,現在の補正対象である単位画素ラインの次の単位画素ラインにおける画素P10〜P15(図5参照)の歪み補正処理を行うため,図8の時間T2〜T4の間に,下記の画素データ転送処理が実行される。
すなわち,DMAコントローラ181は,ステップS2で設定されたメモリアドレス,読み出し画素データ量,アドレス移動幅に基づき,フレームメモリ15から補正対象画素P10〜P15の補正用画素データを新たに読み出し,ラインメモリ182の空き領域に格納する。
図5の例では,DMAコントローラ181は,フレームメモリ15において,画素ラインL1の部分画素ラインR3の画素データが格納されているメモリアドレスにアクセスして,この画素データを読み出しラインメモリRに格納する(図8の時間T2〜T3における符号DW4)。さらに,DMAコントローラ181は,フレームメモリ15において,図5に示した画素ラインL2の部分画素ラインR4の画素データが格納されているメモリアドレスにアクセスして,この画素データを読み出しラインメモリSに格納する(図8の時間T3〜T4における符号DW5)。この画素データの読み出し格納処理は,ステップS2で実行される処理である。
歪み補正部183は,フレームメモリ15から読み出された画素データにより,補正対象画素の歪み補正を実行すると共に,図7のステップS7を実行する。
図7のステップS7:歪み補正部183は,大ブロックにおける1画素ラインの全画素の歪み補正処理が終了したか判定する。ここではまだ,終了していないので(ステップS7/NO),図6のステップS2に移る。DMAコントローラ181は,前記したように,次の補正対象画素の補正用画素データを同一画素ラインにおいて順次読み出す(図8の時間T2〜T4の符号DW4,DW5参照)。
次に,算出部183aは,(式1),(式2)に基づき,補正対象画素P10〜P15の補正用画素座標p10〜p15を算出する(図6のステップS3)。
さて,図5に示したように,補正対象画素P10〜P12については,補正用画素座標p10〜p12が画素ラインL1と画素ラインL2との間にある。そして,補正対象画素P10〜P12の補正用画素データを有する補正用画素データ(図5の部分画素ラインR3,R4の画素データ)は,既にラインメモリR,Sに格納されている。そのため,歪み補正部183は,補正対象画素P10〜P12については,この補正用画素データにより歪み補正処理が可能である(図6のステップS4/YES)。
そこで,歪み補正部183は,ラインメモリRに格納された部分画素ラインR3の画素データを読み出す(図8の時間T10〜T12の符号DR11)。さらに,歪み補正部183は,ラインメモリSに格納された部分画素ラインR4の画素データを読み出す(図8の時間T10〜T12の符号DR12)。
そして,算出部183aは,(式3)に基づき,この読み出された画素データにより補正対象画素P10〜P12の歪み補正画素データを算出する(図8の時間T10〜T12の符号AM12)。そして,歪み補正部183は,この歪み補正画素データをラインメモリWに書き込む(図8の時間T10〜T12の符号DW11)。
しかし,補正対象画素P13〜P15については,補正対象画素P13〜P15の補正用画素データはラインメモリR,Sに格納されていないので,補正対象画素P10〜P12のように歪み補正処理を実行することができない(図6のステップS4/NO)。換言すれば,図5に示したように,補正対象画素P13〜P15の補正用画素座標p13〜p15が画素ラインL2と画素ラインL3との間にある。
そのため,補正対象画素P13〜P15の歪み補正処理を実行するためには,画素ラインL3における補正用画素座標p13〜p15の近傍画素(図5の部分画素ラインR11)の画素データが必要になる。なお,画素ラインL2における補正用画素座標p13〜p15の近傍画素(図5の部分画素ラインR12)の画素データは,既に,ラインメモリSに格納されている。
以上説明したように,補正対象画素P13〜P15の歪み補正を実行する場合には,図6のステップS4でNOとなり,図6のステップS8に移る。
図6のステップS8:歪み補正装置18は,メモリチェンジ処理を実行し補正用画素データをフレームメモリ15から新たに読み出す。
図5の例では,まず,歪み補正部183は,補正用画素座標p13〜p15に基づき,補正対象画素P13〜P15の補正用画素データが格納されたフレームメモリ15におけるメモリアドレスを算出する。具体的には,フレームメモリ15において,画素ラインL3における補正用画素座標p13〜p15の近傍画素(図5の部分画素ラインR11)の画素データが格納されているメモリアドレスである。
そして,歪み補正部183は,このメモリアドレスをDMAコントローラ181に出力する。DMAコントローラ181は,このメモリアドレス入力に応答して,フレームメモリ15からこのメモリアドレスに対応する補正対象画素P13〜P15の補正用画素データを読み出し,ラインメモリ182のラインメモリRに格納する(図8の時間T12〜T13の符号DW12)。
このように,ラインメモリ182に格納された画素データにより,画像フレームにおける補正対象画素の光学歪み補正処理を実行できない場合,フレームメモリ15から新たに補正用画素データを読み出す処理をメモリチェンジと呼ぶ。このメモリチェンジ処理により,画像フレームの光学歪み補正時間が長くなる。このメモリチェンジの時間を図8の符号MCで示す。
特に,第1の画像フレームに続いて,第2の画像フレームの光学歪み補正処理を実行する場合,メモリチェンジ処理にかかる時間を削減する必要がある。そこで,第1の画像フレームの光学歪み補正処理において,図6のステップS9の処理を行う。
図6のステップS9:歪み補正部183は,メモリチェンジが発生する際に歪み補正処理を実行していた補正対象画素の補正用画素座標をメモリチェンジ座標として第3のメモリ186に格納する。第3のメモリは,座標格納メモリであり,以下,第3のメモリ186を座標格納メモリ186と記す。
図5の例では,歪み補正部183は,補正用画素座標p13をメモリチェンジ座標p13として座標格納メモリ186に格納する。なお,メモリチェンジ座標として,座標p13〜p15を格納してもよい。
すなわち,歪み補正部183は,第1の画像フレームの光学歪み補正処理を実行する過程において,ラインメモリ182に格納された画素データにより,第1の画像フレームにおける補正対象画素の光学歪み補正処理を実行できない場合,光学歪み補正処理を実行できない補正対象画素に係る第1の座標情報として,例えば,光学歪み補正処理を実行できない補正対象画素の補正用画素座標(メモリチェンジ座標)を座標格納メモリ186に格納する。
このメモリチェンジ座標を格納する理由について説明する。図1,図2で説明した(式1)における係数α,β,γは,(式1)で説明したように,光学機器固有の値である。そして,第1の画像フレームを生成する第1の撮像部111と,第2の画像フレームを生成する第2の撮像部112は同一の光学機器を使用しているため,第1の画像フレームの光学歪み補正処理を実行する場合の(式1)における係数α,β,γと,第2の画像フレームの光学歪み補正処理を実行する場合の(式1)における係数α,β,γとは実質的に同値である。
第1,第2の画像フレームの縦横画素数が同一,中心座標が同一の場合を想定する。この場合,第1の画像フレームにおける補正対象画素座標P(X,Y)と第2の画像フレームにおける補正対象画素座標P'(X',Y')が同値であれば,第1の画像フレームにおける補正対象画素Pの補正用画素座標p(x,y)と,第2の画像フレームにおける補正対象画素P'の補正用画素座標p'(x',y')とは同値である。そして,第1,第2の画像フレームの縦横画素数は同一,中心座標は同一である。
とすれば,第1の画像フレームにおいて,ラインメモリ182に格納された画素データにより光学歪み補正処理を実行できない補正対象画素の補正用画素座標,すなわちメモリチェンジが発生する補正対象画素の補正用画素座標と,第2の画像フレームにおいて,ラインメモリ182に格納された画素データにより光学歪み補正処理を実行できない補正対象画素の補正用画素座標とは同値になる。
そのため,第1の画像フレームにおいて光学歪み補正処理を実行できない補正対象画素,または,この補正対象画素の補正用画素座標を利用すれば,第2の画像フレームの光学歪み補正処理において,メモリチェンジが発生するタイミングを予測することできる。このタイミングを予測できれば,第2の画像フレームの光学歪み補正処理において,メモリチェンジが発生する補正対象画素の補正用画素データを予めラインメモリ182に格納(プリフェッチとも言う)することができる。その結果,第2の画像フレームの光学歪み補正処理において,メモリチェンジに必要な時間を削減することができる。
そこで,歪み補正部183は,第1の画像フレームの歪み補正処理を実行する過程において,ラインメモリ182に格納された画素データにより,第1の画像フレームにおける補正対象画素の光学歪み補正処理を実行できない場合,すなわちメモリチェンジが発生する場合,図6のステップS9で説明した処理を実行する。歪み補正部183は,ステップS9において,この光学歪み補正処理を実行できない補正対象画素に係る座標情報を座標格納メモリ186に格納する。
ステップS9の終了後,図7のステップS6で説明したように,歪み補正部183は,補正対象画素P13〜P15の歪み補正処理を実行するため,ラインメモリR,Sに格納された画素データを読み出す(図8の時間T13〜T14の符号DR14,DR15)。
そして,算出部183aは,(式3)に基づき,この読み出された画素データにより補正対象画素P13〜P15の歪み補正画素データを算出する(図8の時間T13〜T14の符号AM13)。そして,歪み補正部183は,この歪み補正画素データをラインメモリ184のラインメモリVに格納する(図8の時間T13〜T14の符号DW13)。
すなわち,図6のステップS8において,歪み補正部183は,光学歪み補正処理を実行できない補正対象画素の補正用画素データをラインメモリ182に格納するようにDMAコントローラ181を制御する。そして,図7のステップS6において,算出部183aは,(式3)に基づき,ラインメモリ182に格納された画素データにより,前記補正対象画素の歪み補正画素データを算出する。
さて,現在の補正対象である単位画素ラインの次の単位画素ラインにおける画素P20〜P25(図5参照)の歪み補正処理を行うため,図8の時間T10〜T12の間に,下記の画素データ転送処理が実行される。すなわち,図6のステップS2で説明したように,DMAコントローラ181は,図5の例では,フレームメモリ15において,部分画素ラインR21の画素データが格納されているメモリアドレスにアクセスして,この画素データをフレームメモリ15から読み出しラインメモリPに格納する(図8の時間T10〜T11における符号DW14)。さらに,DMAコントローラ181は,フレームメモリ15において,部分画素ラインR22の画素データが格納されているメモリアドレスにアクセスして,この画素データをフレームメモリ15から読み出しラインメモリQに格納する(図8の時間T11〜T12における符号DW15)。
なお,歪み補正部183は,上記メモリチェンジを実行した場合には,以後,読み出し先のラインをメモリチェンジ後の画素ラインに切り替えてもよい。例えば,図5の例では,歪み補正部183は,読み出し先のラインを画素ラインL1から画素ラインL3に切り換えるようにDMAコントローラ181に指示する。以後,DMAコントローラ181は,画素ラインL2と画素ラインL3から画素データを読み出すことになる。その結果,メモリチェンジの発生頻度が低下する。
次に,図6のステップS3で説明したように,歪み補正部183は,補正対象画素P20〜P25の補正用画素座標p20〜p25の算出を実行する。
しかし,補正対象画素P20〜P25の補正用画素データはラインメモリP,Qに格納されていないので,歪み補正処理を実行することができない(図6のステップS4/NO)。これは,前記したように,光学歪みが大きくなり,前回読み出した画素ラインL1,L2の画素データでは光学歪み補正ができないからである。
そこで,図6のステップS8で説明したように,歪み補正部183は,DMAコントローラ181により,図5に示した画素ラインL3における補正用画素座標p20〜p22の近傍画素(図5の部分画素ラインR31)の画素データをフレームメモリ15から読み出しラインメモリPに格納する(図8の時間T20〜T21の符号DW21)。さらに,歪み補正部183は,DMAコントローラ181により,画素ラインL4における補正用画素座標p20〜p22の近傍画素(図5の部分画素ラインR32)の画素データをフレームメモリ15から読み出しラインメモリQに格納する(図8の時間T21〜T22の符号DW22)。
歪み補正部183は,図6のステップS9で説明したように,ラインメモリ182に格納された画素データにより,第1の画像フレームにおける補正対象画素の光学歪み補正処理を実行できない場合,この補正対象画素の補正用画素座標をメモリチェンジ座標として座標格納メモリ186に格納する。図5の例では,歪み補正部183は,補正用画素座標p20をメモリチェンジ座標p20として座標格納メモリ186に格納する。なお,メモリチェンジ座標として,座標p20〜p22を格納してもよい。
そして,歪み補正部183は,図7のステップS6で説明したように,ラインメモリ182のラインメモリP,Qに格納された画素データを読み出す(図8の時間T22〜T23の符号DR21,DR22)。また,算出部183aは,(式3)に基づき,この読み出された画素データにより補正対象画素P20〜P22の歪み補正画素データを算出する(図8の時間T22〜T23の符号AM21)。そして,歪み補正部183は,算出した歪み補正画素データをラインメモリ184のラインメモリVに格納する(図8の時間T22〜T23の符号DW23)。
さらに,補正対象画素P23〜P25の歪み補正処理を実行するために,歪み補正部183は,DMAコントローラ181により,画素ラインL5における補正用画素座標p23〜p25の近傍画素(図5の部分画素ラインR33)の画素データをフレームメモリ15から読み出しラインメモリPに格納する(図8の時間T23〜T24の符号DW24)。さらに,歪み補正部183は,DMAコントローラ181により,画素ラインL6における補正用画素座標p23〜p25の近傍画素(図5の部分画素ラインR34)の画素データをフレームメモリ15から読み出しラインメモリQに格納する(図8の時間T24〜T25の符号DW25)。
歪み補正部183は,図6のステップS9で説明したように,ラインメモリ182に格納された画素データにより,第1の画像フレームにおける補正対象画素の光学歪み補正処理を実行できない場合,この補正対象画素の補正用画素座標をメモリチェンジ座標として座標格納メモリ186に格納する。図5の例では,歪み補正部183は,補正用画素座標p23をメモリチェンジ座標p23として座標格納メモリ186に格納する。なお,メモリチェンジ座標として,座標p23〜p25を格納してもよい。
そして,歪み補正部183は,図7のステップS6で説明したように,ラインメモリ182のラインメモリP,Qに格納された画素データを読み出す(図8の時間T25〜T26の符号DR23,DR24)。また,算出部183aは,(式3)に基づき,この読み出された画素データにより補正対象画素P23〜P25の歪み補正画素データを算出する(図8の時間T25〜T26の符号AM22)。そして,歪み補正部183は,算出した歪み補正画素データをラインメモリ184のラインメモリVに格納する(図8の時間T25〜T26の符号DW26)。
補正対象画素P20〜P25の歪み補正処理が終了すると,図7のステップS7に移る。
以上説明したように,図6のステップS2〜ステップS9の処理を繰り返し行い,画素ラインL0の全画素の歪み補正処理が終了したとする。すると,図7のステップS7において,大ブロックにおける1画素ラインの全画素の歪み補正処理が終了したと判定(ステップS7/YES)されるので,図7のステップS10に移る。
図7のステップS10: 歪み補正部183は,図4に示した1つの大ブロックの光学歪み補正処理が終了したか判定する。ここでは,まだ,1つの大ブロックの光学歪み補正処理が終了していないので(ステップS10/NO),図6のステップS2に戻る。図6のステップS2において,歪み補正部183は,歪み補正対象の大ブロックにおいて,現在の補正対象の画素ラインL0の次の画素ラインL1における単位画素ラインを補正するために必要な画素データが格納されたフレームメモリ15におけるメモリアドレスなどをDMAコントローラ181に設定する。
そして,歪み補正装置18は,図6のステップS2〜図7のステップS10の処理を繰り返し行い,図4の符号A12に示すように,画素ラインL1,L2…と補正対象画素ラインを順次移動させて画素ラインの光学歪み補正処理を実行する。すると,図9に示すように,図4の大ブロックIにおける中心CN近傍の画素ラインにおける画素の歪み補正処理を実行することになる。
図9は,図4の大ブロックIにおける中心CN近傍の画素配列(図4の符号Bn0参照)を模式的に示した図である。
ここで,画素P100〜P105が補正対象画素であるとする。そして,図6のステップS2の処理により,既に,この補正対象画素P100〜P105の補正用画素データがラインメモリ182に格納されているとする。この状態で,歪み補正部183は,補正対象画素P100〜P105の補正用画素座標p100〜p105を算出する(図6のステップS3)。そして,図6のステップS4に移る。ここで,ラインメモリ182に格納された補正用画素データだけで補正対象画素P100〜P105の歪み補正処理が可能なので(ステップS4/YES),ステップS5に移る。
歪み補正部183は,補正対象画素Pの座標(X,Y)と,補正対象画素Pの補正用画素座標p(x,y)とが近似しているか判定する(ステップS5)。
さて,図9に示したように,大ブロックIにおける中心CN近傍の画素ラインの画素の歪み補正処理を行う場合,補正対象画素の座標と,この補正対象画素の補正用画素座標とが近似する。ここで,補正対象画素の座標と,この補正対象画素の補正用画素座標とが近似する第1の例としては,前記したように,この補正対象画素の補正用画素の座標値の小数第1位を四捨五入した値が,この補正対象画素の座標値と同値の場合がある。補正対象画素の座標と,この補正対象画素の補正用画素座標とが近似する第2の例としては,例えば,補正対象画素の座標値と,この補正対象画素の補正用画素の座標値との差が,所定の値(例えば,0.3)未満である場合がある。
なお,座標値とは,X座標値およびY座標値であってもよいし,X座標値またはY座標値の何れか1つであってもよい。
このように,補正対象画素の座標と,補正用画素座標とが近似するのは,画像フレームの中心CN付近では光学歪みが殆ど発生しないからである。
補正対象画素の座標と,補正用画素座標とが近似する場合(図6のステップS5/YES),図7のステップS11に移る。
図7のステップS11:歪み補正部183は,この補正用画素座標をスルー座標として座標格納メモリ186に格納する。
すなわち,歪み補正部183は,第1の画像フレームの光学歪み補正処理を実行する過程において,第1の画像フレームにおける補正対象画素の座標とこの補正対象画素の補正用画素座標とが近似する場合,この補正対象画素に係る座標情報を座標格納メモリ186に格納する。この座標情報は,例えば,この近似する補正対象画素の補正用画素座標(スルー座標)である。
そして,歪み補正部183は,図10〜図12で説明する第2の画像フレームの光学歪み補正処理を実行する過程において,座標格納メモリ186に格納された近似する補正対象画素に係る座標情報に基づき,この近似する補正対象画素に対応する,第2の画像フレームにおける補正対象画素の光学歪み補正処理を実行するか否かを決定する。
図9の例では,歪み補正部183は,補正用画素座標p100〜p105をスルー座標p100〜p105として座標格納メモリ186に格納する。なお,スルー座標が同値の場合,その中の1つの目の座標のみをスルー座標として座標格納メモリ186に格納しても良い。例えば,補正用画素座標p100〜p105が同値の場合,座標p100のみをスルー座標として座標格納メモリ186に格納する。
以後,歪み補正部183が,上記説明した光学歪み補正処理を実行し,図4に示した大ブロックIの光学歪み補正処理が終了すると(図7のステップS10/YES),図7のステップS12に移る。
図7のステップS12:歪み補正部183は,全大ブロックの光学歪み補正処理が終了したか判定する。ここでは,大ブロックIの光学歪み補正処理が終了しただけなので(ステップS12/NO),ステップS1に戻る。図6のステップS1において,歪み補正部183は,現在の歪み補正対象の大ブロックIの次の歪み補正対象ブロックIIにおいて,最初の単位画素ラインを補正するために必要な画素データが格納されたフレームメモリ15におけるメモリアドレスなどをDMAコントローラ181に設定する。
以後,歪み補正部183は,図6ステップS1〜図7のステップS12の処理を繰り返し行い,図4の画像フレームPFにおける大ブロックII,III,IVの光学歪み補正処理を順次実行する。なお,歪み補正部183は,大ブロックII,III,IVの歪み補正処理においては,1画素ラインの歪み補正処理を図4の矢印A21,A31,A41方向に実行する。そして,歪み補正部183は,この1画素ラインの歪み補正処理が終了すると矢印A22,A32,A42方向に向けて補正対象の画素ラインを移動させて歪み補正処理を実行する。
図4〜図9で説明した歪み補正処理により第1の画像フレームPFの歪み補正処理が終了すると(図7のステップS12/YES),歪み補正装置18は,第1の画像フレームにおける同一被写体について視差を有する第2の画像フレームの歪み補正処理を実行することになる。
[第2の画像フレームの光学歪み補正処理]
第1の画像フレームの光学歪み補正処理終了後,歪み補正部183は,第2の画像フレームの光学歪み補正処理を実行する。歪み補正部183は,第2の画像フレームの光学歪み補正処理を実行する過程において,座標格納メモリ186に格納された光学歪み補正処理を実行できない補正対象画素に係る座標情報(メモリチェンジ座標)に基づき,この光学歪み補正処理を実行できない補正対象画素に対応する,第2の画像フレームにおける補正対象画素の補正用画素データをラインメモリ182に格納するようにDMAコントローラ181を制御する。すなわち,補正用画素データをプリフェッチする。このプリフェッチにより,光学歪み補正処理を高速化できる。
そして,算出部183aは,(式3)に基づき,ラインメモリ182に格納された画素データにより,第2の画像フレームにおける補正対象画素の歪み補正画素データを算出する。
さらに,歪み補正部183は,第2の画像フレームの光学歪み補正処理を実行する過程において,座標格納メモリ186に格納された近似する補正対象画素に係る座標情報(スルー座標)に基づき,この近似する補正対象画素に対応する,第2の画像フレームにおける補正対象画素の光学歪み補正処理を実行するか否かを決定する。この決定処理により,不要な光学歪み補正処理を実行しないので,光学歪み補正処理を高速化できる。
第2の画像フレームの歪み補正処理の詳細について,図10〜図12に基づき説明する。
第2の画像フレームの歪み補正処理を実行する場合においても,歪み補正装置18は,6画素単位で光学歪み補正処理を実行する。また,歪み補正装置18は,最初に大ブロックIに対して歪み補正を実行する。なお,第2の画像フレームは,既に,フレームメモリ15に格納されているとする。
また,第2の画像フレームは,図4,図5で説明した第1の画像フレームに対応する。具体的に説明すると,第1,第2の画像フレームの縦横画素数が同一であり,中心座標が同一である。そのため,第1の画像フレームにおける補正対象画素座標P(X,Y)と第2の画像フレームにおける補正対象画素座標P'(X',Y')が同値の場合,第1の画像フレームにおける補正対象画素Pの補正用画素座標p(x,y)と,第2の画像フレームにおける補正対象画素P'の補正用画素座標p'(x',y')とは同値になる。
図10のステップS21:図6のステップS1と同様に,歪み補正部183は,DMAコントローラ181の初期設定を実行する。第2の画像フレームの光学歪み補正処理においても,第1の画像フレームと同様に,図4に示した歪み補正対象の大ブロックIにおいて最初の歪み補正対象となる単位画素ラインは,図5に示した画素P0〜P5である。
図10のステップS22:歪み補正部183は,座標格納メモリ186に格納された座標を順次読み出す(図12の時間T30〜T31における符号MR31)。座標格納メモリ186には,図6で説明したようにメモリチェンジ座標p13,p20,p23が格納され,スルー座標p100が格納されている。なお,座標格納メモリ186に格納された全メモリチェンジ座標を一度に読み出してもよい。同じく,座標格納メモリ186に格納された全スルー座標を一度に読み出してもよい。
図10のステップS23:算出部183aは,(式1),(式2)に基づき,補正対象画素の補正用画素座標を算出する。図5の場合,補正対象画素P0〜P5の補正用画素座標p0〜p5を算出する。
図10のステップS24:歪み補正部183は,補正対象画素の歪み補正処理をするために,メモリチェンジする必要があるか判定する。具体的には,歪み補正部183は,算出した補正用画素座標と,座標格納メモリ186から読み出したメモリチェンジ座標とが一致する場合には,メモリチェンジする必要があると判定する。補正用画素座標p0〜p5の場合,補正用画素座標p0〜p5と同じメモリチェンジ座標は,座標格納メモリ186に格納されていない(座標格納メモリ186から読み出されていない)ので,ステップS24では不一致(ステップS24/NO)となり,図10のステップS25に移る。
図10のステップS25:歪み補正部183は,補正対象画素の歪み補正処理をスルー,すなわち,補正対象画素の歪み補正処理を実行しないか判定する。具体的には,歪み補正部183は,補正対象画素の補正用画素座標とスルー座標とが一致するか判定する。補正用画素座標p0〜p5の場合,補正用画素座標p0〜p5と同じスルー座標は,座標格納メモリ186に格納されていない(座標格納メモリ186から読み出されていない)ので,ステップS25では不一致(ステップS25/NO)となり,図10のステップS26に移る。
図10のステップS26:歪み補正部183は,算出した補正用画素座標p0〜p5に基づき,補正対象画素P0〜P5の歪み補正画素データが格納された非メモリチェンジ用のアドレスを算出する。
具体的には,歪み補正部183は,フレームメモリ15において,図5の画素ラインL1,L2における補正用画素座標p0〜p5の近傍画素(図5の部分画素ラインR1,R2)の画素データが格納されているメモリアドレスを算出する(図12の時間T30〜T31の符号AC31)。
そして,歪み補正部183は,このアドレスをDMAコントローラ181に出力する。
図10のステップS27: DMAコントローラ181は,このアドレス入力に応答して,この入力アドレスに対応する補正用画素データをフレームメモリ15から読み出し,ラインメモリ182に格納する。
具体的には,DMAコントローラ181は,フレームメモリ15において,図5の部分画素ラインR1の画素データが格納されているメモリアドレスにアクセスして,この画素データをフレームメモリ15から読み出し,ラインメモリ182のラインメモリPに格納する(図12の時間T30〜T31の符号DW31)。さらに,DMAコントローラ181は,フレームメモリ15において,図5の部分画素ラインR2の画素データが格納されているメモリアドレスにアクセスして,この画素データをフレームメモリ15から読み出し,ラインメモリQに格納する(図12の時間T31〜T32の符号DW32)。
図10のステップS28:算出部183aは,(式3)に基づき,ラインメモリ182に格納された画素データにより補正対象画素の歪み補正画素データを算出する。そして,歪み補正部183は,歪み補正画素データをラインメモリ184に格納する。
具体的には,歪み補正部183は,図10のステップS28で説明したように,ラインメモリPに格納された画素データを読み出す(図12の時間T32〜T34の符号DR31)。さらに,歪み補正部183は,ラインメモリQに格納された画素データを読み出す(図12の時間T32〜T34の符号DR32)。
そして,算出部183aは,(式3)に基づき,この読み出された画素データにより補正対象画素P0〜P5の歪み補正画素データを算出する(図12の時間T32〜T34の符号AM31)。そして,歪み補正部183は,算出部183aが算出した歪み補正画素データをラインメモリ184のラインメモリVに格納する(図12の時間T32〜T34の符号DW33)。
なお,図6のステップS6で説明したように,DMAコントローラ185は,図12の時間T40〜T43における符号DR43に示すように,ラインメモリ184に格納された補正対象画素P0〜P5の歪み補正画素データをラインメモリ184から読み出す。そして,DMAコントローラ185は,フレームメモリ15において光学歪み補正後の第2の画像フレームが格納される領域に,補正対象画素P0〜P5の座標と対応させて補正対象画素P0〜P5の歪み補正画素データを格納する。
このように,DMAコントローラ185は,随時,歪み補正部183により算出された補正対象画素の歪み補正画素データをラインメモリ184から読み出す。そして,DMAコントローラ185は,フレームメモリ15において光学歪み補正後の第2の画像フレームが格納される領域に,補正対象画素の座標と対応させて,補正対象画素の歪み補正画素データを格納する。以下,この処理の内容については説明を省略する。
図11のステップS29:歪み補正部183は,大ブロックにおける1画素ラインの全画素の歪み補正処理が終了したか判定する。ここではまだ,終了していないので(ステップS29/NO),図10のステップS22に移る。
さて,現在の補正対象である単位画素ラインの次の単位画素ラインにおける画素P10〜P15(図5参照)の歪み補正処理を行うため,歪み補正部183は,以下の処理を実行する。すなわち,図12の時間T31〜T34において実行される処理と並行して,歪み補正部183は,図10のステップS22で説明したように,座標格納メモリ186からメモリチェンジ座標を読み出す(図12の時間T31〜T32の符号MR32)。ここで,メモリチェンジ座標として補正用画素座標p13が読み出されるとする。
そして,算出部183aは,図10のステップS23で説明したように,(式1),(式2)に基づき,補正対象画素P10〜P15の補正用画素座標p10〜p15を算出する(図12の時間T31〜T32の符号AC32)。そして,歪み補正部183は,算出した補正用画素座標p10〜p15と,座標格納メモリ186から読み出したメモリチェンジ座標とが一致するか判定する(図10のステップS24)。すなわち,メモリチェンジする必要があるか判定する。
この判定において,算出した補正用画素座標p13とステップS22において読み出されたメモリチェンジ座標p13とが一致するので,メモリチェンジする必要があると判定する(図10のステップS24/YES)。そして,図10ステップS30に移る。
ステップS30:アドレス算出部187は,メモリチェンジ用のアドレスを算出する。
アドレス算出部187は,算出部183aにより算出された補正対象画素の補正画素座標に基づきこの補正対象画素の補正用画素データが格納されたフレームメモリ15のメモリアドレスを算出するものである。
アドレス算出部187は,第2の画像フレームの光学歪み補正処理を実行する過程において,座標格納メモリ186に格納された光学歪み補正処理を実行できない補正対象画素の補正用画素座標(メモリチェンジ座標p13)と,第2の画像フレームにおける補正対象画素P13の補正用画素座標p13とが一致する場合(図10のステップS24/YES),第2の画像フレームにおける補正対象画素P13の補正用画素座標p13に基づき第2の画像フレームにおける補正対象画素P13の補正用画素データが格納されたフレームメモリ15のメモリアドレスを算出する。
さらに,図10のステップS27において,歪み補正部183は,算出されたメモリアドレスに基づき,第2の画像フレームにおける補正対象画素の補正用画素データをラインメモリ182に格納するようにDMAコントローラ181を制御する。
具体的には,アドレス算出部187は,フレームメモリ15において,補正用画素座標p10〜p15の近傍画素の画素データが格納されているメモリアドレスを算出する。図5の例では,アドレス算出部187は,フレームメモリ15において,部分画素ラインR4,R41,R11の画素データが格納されているメモリアドレスである。ここで,部分画素ラインR4は,画素ラインL2における補正用画素座標p10〜p15の近傍画素の画素ラインである。部分画素ラインR41は,画素ラインL1における補正用画素座標p10〜p12の近傍画素の画素ラインである。部分画素ラインR11は,画素ラインL3における補正用画素座標p13〜p15の近傍画素の画素ラインである。
そして,アドレス算出部187は,DMAコントローラ181に前記メモリアドレスを出力する。
DMAコントローラ181は,図10のステップS27で説明したように,このメモリアドレス入力に応答して,フレームメモリ15における図5の部分画素ラインR41のメモリアドレス,図5の部分画素ラインR11のメモリアドレスから画素データを読み出し,ラインメモリRに格納する(図12の時間T32〜T33における符号DW34,DW35)。
さらに,DMAコントローラ181は,このメモリアドレス入力に応答して,フレームメモリ15における図5の部分画素ラインR4のメモリアドレスから画素データを読み出し,ラインメモリSに格納する(図12の時間T32〜T33における符号DW36)。
この画素データの格納により補正対象画素P10〜P15の補正用画素データがラインメモリ182にプリフェッチされる。
そして,歪み補正部183は,図10のステップS28で説明したように,ラインメモリR,Sに格納された画素データを読み出す(図12の時間T40〜T43の符号DR41,DR42)。また,算出部183aは,(式3)に基づき,この読み出された画素データにより補正対象画素P10〜P15の歪み補正画素データを算出する(図12の時間T40〜T43の符号AM41)。そして,歪み補正部183は,算出した歪み補正画素データをラインメモリ184のラインメモリWに格納する(図12の時間T40〜T43の符号DW41)。
そして,再び,図10のステップS22に戻る。
さて,現在の補正対象である単位画素ラインの次の単位画素ラインにおける画素P20〜P25(図5参照)の歪み補正処理を行うため,歪み補正部183は,以下の処理を実行する。すなわち,図12の時間T32〜T33において実行される処理と並行して,歪み補正部183は,図10のステップS22で説明したように,座標格納メモリ186からメモリチェンジ座標を読み出す(図12の時間T32〜T33の符号MR33)。ここで,メモリチェンジ座標として座標p20,p23が読み出されるとする。
そして,算出部183aは,図10のステップS23で説明したように,(式1),(式2)に基づき,補正対象画素P20〜P25の補正用画素座標p20〜p25を算出する(図12の時間T32〜T33の符号AC33)。そして,歪み補正部183は,算出した補正用画素座標p20〜p25と,座標格納メモリ186から読み出したメモリチェンジ座標とが一致するか判定する(図7のステップS24)。すなわち,メモリチェンジする必要があるか判定する。
この判定において,算出した補正用画素座標p20,p23とステップS22において読み出されたメモリチェンジ座標p20,p23とが一致するので,メモリチェンジする必要があると判定する。
アドレス算出部187は,図10のステップS30で説明したように,フレームメモリ15において補正用画素座標p20〜p25の近傍画素の画素データが格納されたメモリアドレスを算出する。図5の例では,アドレス算出部187は,フレームメモリ15において,補正用画素座標p20〜p22の近傍画素の画素データが格納されたメモリアドレスとして,部分画素ラインR31,R32のメモリアドレスを算出する。さらに,アドレス算出部187は,フレームメモリ15において,補正用画素座標p23〜p25の近傍画素の画素データが格納されたメモリアドレスとして,部分画素ラインR33,R34のメモリアドレスを算出する。
そして,アドレス算出部187は,DMAコントローラ181に前記メモリアドレスを出力する。
DMAコントローラ181は,図10のステップS27で説明したように,このメモリアドレス入力に応答して,フレームメモリ15における部分画素ラインR31,R33のメモリアドレスから画素データを読み出し,ラインメモリPに格納する(図12の時間T40〜T41における符号DW41,DW42)。さらに,DMAコントローラ181は,フレームメモリ15における部分画素ラインR32,R34のメモリアドレスから画素データを読み出し,ラインメモリQに格納する(図12の時間T41〜T43における符号DW43,DW44)。
この画素データの格納により補正対象画素P20〜P25の補正用画素データがラインメモリにプリフェッチされる。
そして,歪み補正部183は,図10のステップS28で説明したように,ラインメモリP,Qに格納された画素データを読み出し,この画素データにより補正対象画素P20〜P25の歪み補正画素データを算出する。そして,歪み補正部183は,算出した歪み補正画素データをラインメモリ184のラインメモリVに格納する。
補正対象画素P20〜P25の歪み補正処理が終了すると,図11のステップS29に移る。ここで,前記歪み補正処理により,画素ラインL0の全画素の歪み補正処理が終了したとする。歪み補正部183は,大ブロックにおける1画素ラインの全画素の歪み補正処理が終了した判定し(ステップS29/YES),図11のステップS31に移る。
図11のステップS31: 歪み補正部183は,図4に示した1つの大ブロックの光学歪み補正処理が終了したか判定する。ここでは,まだ,1つの大ブロックの光学歪み補正処理が終了していないので(ステップS31/NO),図10のステップS22に戻る。ステップS22以降では,歪み補正対象の大ブロックにおいて,現在の補正対象の画素ラインL0の次の画素ラインL1に対して光学歪み補正処理を実行することになる。
そして,歪み補正装置18は,図10のステップS21〜図10のステップS27の処理を繰り返し行い,図4の符号A12に示すように,画素ラインL1,L2…と補正対象画素ラインを順次移動させて画素ラインの光学歪み補正処理を実行する。すると,図9に示すように,図4の大ブロックIにおける中心CN近傍の画素ラインにおける画素の歪み補正処理を実行することになる。
ここで,補正対象画素は,図9の画素P100〜P105であるとする。
歪み補正部183は,座標格納メモリ186に格納された座標を順次読み出す(図10のステップS22)。ここで,スルー座標p100が読み出される。
算出部183aは,(式1),(式2)に基づき,補正対象画素P100〜P105の補正用画素座標p100〜p105を算出する(図10のステップS23)。そして,歪み補正部183は,算出した補正用画素座標と,座標格納メモリ186から読み出したスルー座標とが一致するか判定する(図10のステップS25)。
歪み補正部183は,ステップS23において算出された補正用画素座標p100〜p105とステップS22で読み出されたスルー座標p100とが一致するので,図10のステップS26〜S28の処理,すなわち補正対象画素P100〜P105の光学歪み補正処理をスルーして,ステップS29に移る。
すなわち,歪み補正部183は,第2の画像フレームの光学歪み補正処理を実行する過程において,第2の画像フレームにおける補正対象画素の補正用画素座標と座標格納メモリ186に格納された近似する補正対象画素の補正用画素座標(スルー座標)とが一致する場合(図10のステップS25/YES),第2の画像フレームにおける補正対象画素の光学歪み補正処理を実行しない(図10のステップS26〜ステップS28の省略)。
補正用画素座標とスルー座標とが一致する場合とは,補正対象画素の光学歪み量が小さく,この補正対象画素の光学歪みを補正する必要がないことを意味する。そこで,この補正対象画素の光学歪み補正処理をスルー処理することで,第2の画像フレームの光学歪み補正処理時間を削減する。
以後,図10ステップS22〜図11のステップS29の処理を繰り返し実行し,図4に示した大ブロックIの光学歪み補正処理が終了すると(図11のステップS31/YES),図11のステップS32に移る。
図11のステップS32:歪み補正部183は,全大ブロックの光学歪み補正処理が終了したか判定する。終了しない場合には(ステップS32/NO),図10のステップS21に戻る。ステップS32は,図7のステップS12と同様なので,詳細な説明は省略する。
全大ブロックの光学歪み補正処理が終了した場合には,第2の画像フレームの光学歪み補正処理が終了する。
以上説明した処理により,第1,第2の画像フレームの光学歪み補正処理が終了し,光学歪み補正処理が施された第1,第2の画像フレームがフレームメモリ15に格納される。
光学歪み補正処理が施された第1,第2の画像フレームにより,この画像フレームの被写体を立体視可能な画像表示が可能になる。
歪み補正部183は,以上に説明した処理を実行することにより,第1,第2の画像フレームの光学歪み補正処理を実行している。
その結果,第2の画像フレームの光学歪み補正処理において,メモリチェンジが発生するタイミングを予測し,第2の画像フレームにおける補正対象画素を補正するために必要な補正用画素データをラインメモリ182に予め格納することができる。そのため,メモリチェンジの時間を削減することができる。また,光学歪み量が小さい画素の光学歪み補正処理を省略することができる。
したがって,本実施の形態の歪み補正装置18によれば,装置規模を抑制しつつ,光学歪み補正処理の高速化を図ることができる。
なお,座標格納メモリ186に格納する座標情報としては,補正対象画素の座標であってもよい。より詳細に説明すると,歪み補正部183は,第1の画像フレームの光学歪み補正処理を実行する過程において,ラインメモリ182に格納された画素データにより,第1の画像フレームにおける補正対象画素の光学歪み補正処理を実行できない場合,第1の画像フレームにおける光学歪み補正処理を実行できない補正対象画素の座標(メモリチェンジ座標)を座標格納メモリ186に格納する。
また,光学歪み補正部183は,第1の画像フレームの光学歪み補正処理を実行する過程において,第1の画像フレームにおける補正対象画素の座標とこの補正対象画素の補正用画素座標とが近似する場合,この近似する補正対象画素の座標(スルー座標)を座標格納メモリ186に格納する。
図5の例では,歪み補正部183は,図6のステップS9において,メモリチェンジ座標として補正対象画素の座標P10,P20,P23を座標格納メモリ186に格納する。さらに,歪み補正部183は,図7のステップS11において,スルー座標として補正対象画素の座標P00〜P05を座標格納メモリ186に格納する。
そして,第2の画像フレームの光学歪み補正処理を実行する過程において,アドレス算出部187は,座標格納メモリ186に格納された光学歪み補正処理を実行できない補正対象画素の座標,すなわちメモリチェンジ座標と,第2の画像フレームにおける補正対象画素の座標とが一致する場合(図10のステップS24/YES),第2の画像フレームにおける補正対象画素の補正用画素座標に基づき第2の画像フレームにおける補正対象画素の補正用画素データが格納されたフレームメモリ15のメモリアドレスを算出する(図10のステップS30)。
その後,歪み補正部183は,算出されたメモリアドレスに基づき,第2の画像フレームにおける補正対象画素の補正用画素データをラインメモリ182に格納するようにDMAコントローラ181を制御する(図10のステップS27)。
また,歪み補正部183は,第2の画像フレームの光学歪み補正処理を実行する過程において,座標格納メモリ186に格納された前記近似する補正対象画素の座標,すなわちスルー座標と,第2の画像フレームにおける補正対象画素の座標とが一致するか判定する(図10のステップS25)。そして,第2の画像フレームにおける補正対象画素の座標と座標格納メモリ186に格納された前記近似する補正対象画素の座標とが一致する場合(図10のステップS25/YES),歪み補正部183は,第2の画像フレームにおける補正対象画素の光学歪み補正処理を実行しない(図10のステップS26〜ステップS28の省略)。