(57)【要約】【課題】レンズの設計値としてのディストーションや製造誤差、個体差による光学的な歪みや、レンズと撮像素子との位置関係に起因する歪みを補正する、或いは、上記に加えてカメラ間の相対位置による位置ズレを補正する２つ以上のカメラを有したステレオカメラ装置において、少ないラインバッファのライン数で高精度に歪み補正を行う。【解決手段】画像データを取得するイメージセンサにと、入射光をイメージセンサに結像するレンズ１１と、取得された画像データをライン毎に格納するラインバッファ２２と、画像データの歪み量を画素毎に演算するコントローラ２４と、歪み量に応じてラインバッファ２２から読み出された画像データの歪みを補正する画素位置変換部４１と、を備え、画像データ内の副走査方向の位置に応じてラインバッファ２２に格納するラインを決定するラインバッファコントローラ４２を更に備える。【選択図】図７
2013201753.tif 000002
【特許請求の範囲】
【請求項１】
画像データを取得する撮像部と、
入射光を前記撮像部に結像する光学系と、
前記撮像部により取得された前記画像データをライン毎に格納するバッファメモリと、
前記画像データの歪み量を画素毎に演算する歪み量演算部と、
前記歪み量に応じて前記バッファメモリから読み出された前記画像データの歪みを補正する画素位置変換部と、を備える撮像装置において、
前記画像データ内の副走査方向の位置に応じて前記バッファメモリに格納するラインを決定するバッファメモリ制御部を更に備えることを特徴とする撮像装置。
【請求項２】
前記バッファメモリ制御部は、ライン毎の副走査方向の歪みの方向と、該歪み量の最大値に基づいて、前記バッファメモリに格納するラインを決定することを特徴とする請求項１に記載の撮像装置。
【請求項３】
前記撮像部と前記光学系とをそれぞれ２つ以上備えることを特徴とする請求項１または２に記載の撮像装置。
【請求項４】
光学系により入射光を撮像部に結像して画像データを取得する撮像ステップと、
前記画像データを、ライン毎にバッファメモリに格納する格納ステップと、
前記画像データの歪み量を画素毎に演算する演算ステップと、
前記歪み量に応じて前記バッファメモリから読み出された画像データの歪みを補正する補正ステップと、を含み、
前記格納ステップは、前記画像データ内の副走査方向の位置に応じて前記バッファメモリに格納するラインを決定することを特徴とする撮像方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光学系による光学歪みを補正することが可能な撮像装置及び撮像方法に関する。
【背景技術】
【０００２】
カメラ装置等の撮像装置においては、レンズなどの光学系による光学歪みが生じる。これはレンズの設計値としてのディストーションや製造誤差、個体差などによって生じる。これらの歪みを補正するのに、従来、予め歪み量を測定しておきＬＵＴ（Look Up Table）を参照することによって補正する方式や、高次多項式によって近似して補正する方式などが知られている。
これらの歪み補正方式では、副走査方向の歪みを補正するために、フレームバッファや数ライン分のラインバッファが必要である。
ラインバッファを使用する場合には、少なくとも、副走査方向についてのプラス方向の歪み量と、マイナス方向の歪み量との合計値のうち、最大値＋１のライン数のバッファメモリが必要である。例えば、副走査方向についてプラス方向の歪み量の最大値が２０画素、マイナス方向の歪み量の最大値が２０画素である場合には、歪み量が０であるときの場合も含めて合計４１ライン分のバッファメモリが必要となる。
【０００３】
これらのメモリリソースは製品のコストに関わってくるため、できるだけ少なく構成するのが望ましい。このような課題を解決する方法として、画像を４象限に分割する方式が既に知られている。これは、次のように説明できる。
図１５に示すように、レンズの光学中心に対応する位置を基準に、画像を主走査方向（ｘ）の直線と副走査方向（ｙ）の直線で４つの象限に分割する。この場合、同一象限内では歪みの正／負の方向が主走査方向及び副走査方向についてそれぞれ一定であり、或る１つの象限内では主走査方向と副走査方向のそれぞれについて正／負どちらか一方向のみの歪みしか発生しない（或いは歪み無し）。
例えば、同図における第１象限内の全ての点では、ｘ方向、ｙ方向のいずれについても負の方向にのみ歪みが発生している。そのため、副走査方向については、その象限ごとに正／負どちらかの一方向について歪み補正をするためのラインバッファがあればよく、ラインバッファの容量を約半分に減らすことができる。
【０００４】
しかし、今までの歪み補正方式は、４つの象限内のそれぞれにおいて、主走査方向及び副走査方向についての歪みの方向が、それぞれ正／負どちらか一方向のみであるという前提があるときに適応できる方式であった。
しかしながら、実際にはそうならないこともある。例えば、複数のカメラを有したステレオカメラ装置においては、２つのカメラ間の相関をとるため高精度な補正が必要となる。
この場合、レンズの設計値としてのディストーションや製造誤差、個体差などの他、レンズと撮像素子との位置関係による歪み、２つのカメラ間の相対位置ズレなどによって、補正する方向や補正量が変わってくる。この場合、４象限の境界において歪みの正／負の方向が逆転したり、同一ライン上の同一象限内であっても正／負の方向が一定にならないといった状況が生じうる。このような状況が生じるカメラ装置においては、レンズの光学中心に対応する点を基準とした４象限に分割することによって決まるラインバッファのライン数では、正確に歪み補正ができないといった問題があった。
【０００５】
それに対し、特許文献１には、垂直方向（副走査方向）の光学歪み補正を行うにあたって、ラインバッファの必要なライン数を低減する目的で、レンズの光学中心に対応する位置を基点とした水平方向（主走査方向）の軸と垂直方向の軸とで第１象限から第４象限に分割し、どの象限であるかに基づいてラインバッファの制御を切り替えることにより、処理に必要なラインバッファのライン数を削減（半減）する技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の技術では、同一象限内であっても副走査方向についての歪み方向が、正／負のどちらか一方向にならないようなラインについて、高精度な歪み補正ができないといった問題は解消できていない。
本発明は、レンズの設計値としてのディストーションや製造誤差、個体差による光学的な歪みや、レンズと撮像素子との位置関係に起因する歪みを補正するカメラ装置、或いは、上記に加えてカメラ間の相対位置による位置ズレを補正する２つ以上のカメラを有したステレオカメラ装置において、少ないラインバッファのライン数で高精度に歪み補正を行うことができるカメラ装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、請求項１は、画像データを取得する撮像部と、入射光を前記撮像部に結像する光学系と、前記撮像部により取得された前記画像データをライン毎に格納するバッファメモリと、前記画像データの歪み量を画素毎に演算する歪み量演算部と、前記歪み量に応じて前記バッファメモリから読み出された前記画像データの歪みを補正する画素位置変換部と、を備える撮像装置において、前記画像データ内の副走査方向の位置に応じて前記バッファメモリに格納するラインを決定するバッファメモリ制御部を更に備えるカメラ装置を特徴とする。
【発明の効果】
【０００８】
上記のように構成したので、本発明によれば、副走査方向の位置に応じてバッファメモリに格納するラインを決定するバッファメモリ制御部を備えているので、各象限内で歪みの正負の方向が異なる場合や、或る１つのライン上において副走査方向について歪みの正／負の方向が異なる場合においても、少ないラインバッファのライン数によって高精度な歪み補正が実現できる。
この結果、レンズの設計値としてのディストーションや製造誤差、個体差による光学的な歪みや、レンズと撮像素子との位置関係に起因する歪みを補正するカメラ装置、或いは、上記に加えてカメラ間の相対位置によるズレを補正する２つ以上のカメラを有したステレオカメラ装置において、少ないラインバッファのライン数で高精度に歪み補正を行うことができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１実施形態に係わるカメラ装置に適用可能な画像処理装置のハードウェア構成について説明するためのブロック図。
【図２】図１に示すイメージセンサで取得される画像の歪みについて説明するための図。
【図３】画素位置の移動について説明するための図。
【図４】従来の画素位置変換部の機能ブロックについて説明するための図。
【図５】インターポレータによる補間処理について説明するための図。
【図６】画素位置変換部のラインバッファと一次バッファについて説明するための図。
【図７】第１の実施形態に係わる画素位置変換部の機能ブロックについて説明するための図。
【図８】画素位置変換部のラインバッファと一次バッファについて説明するための図。
【図９】画素位置変換部のラインバッファと一次バッファについて説明するための図。
【図１０】イメージセンサからの画像入力において、入力ラインに対してどのラインの画像を格納するかを明示した図。
【図１１】イメージセンサからの画像入力において、入力ラインに対してどのラインの画像を格納するかを明示した図。
【図１２】ラインバッファコントローラの処理動作の流れを示すフローチャート。
【図１３】第２実施形態に係わるカメラ装置に適用可能な画素位置変換部のハードウェア構成について説明するための図。
【図１４】画素位置変換部のラインバッファと一次バッファについて説明するための図。
【図１５】従来技術であって、レンズの光学中心に対応する位置を基準に、画像を主走査方向（ｘ）の直線と、副走査方向（ｙ）の直線とで４つの象限に分割したことを示す図。
【発明を実施するための形態】
【００１０】
本発明の実施形態に係わる撮像装置としてのカメラ装置について説明する。具体的には、カメラ装置におけるレンズの設計値としてのディストーションや製造誤差、個体差による光学的な歪み、または撮像素子とレンズとの相対位置に起因する歪み、或いは複数のカメラを有したステレオカメラ装置などにおいては、２つのカメラ間の相対位置ズレを補正するに際して、以下の特徴を有する。
すなわち、このカメラ装置は、上記の補正をする際に、入力画像の副走査方向についての位置に応じて、ラインバッファに格納するラインを決定するため、必要最低限のライン数を格納するためのラインバッファを用意しておけばよい。従って、結果的にラインバッファのライン数を削減することができる。
【００１１】
以下に、上記記載の本発明の特徴について、図面を参照して詳細に説明する。
＜第１実施形態＞
図１は、本発明の第１実施形態に係わるカメラ装置に適用可能な画像処理装置１のハードウェア構成について説明するためのブロック図である。
被写体からの入射光は、レンズ１１などの光学系を通してイメージセンサ１２に集光され、ディジタル画像信号に変換される。イメージセンサ１２は、画像データを取得する撮像部を構成し、ＣＣＤ（Charge Coupled Device）イメージセンサや、ＣＭＯＳ（Complementary Metal Oxide Semiconductor）イメージセンサ等である。
イメージセンサ１２によって取り込まれたディジタル画像データは、ＦＰＧＡ（Field Programmable Gate Array）１３等のハードウェアに入力され、各種画像処理を施される。画像処理には、レンズ１１の設計値によるディストーションや製造誤差、個体差による光学的な歪み、イメージセンサ１２とレンズ１１などの光学系との相対的な位置ズレや回転ズレ、カメラを複数有するステレオカメラ装置においては、カメラ間の相対位置によるズレなどを補正する歪み補正処理（または画素位置変換処理とも称する）が含まれる。
【００１２】
ＦＰＧＡ１３は、通常ＲＯＭ（Read Only Memory）１４等の不揮発性メモリにコンフィギュレーションデータを格納しており、ＦＰＧＡ１３に電力を供給し始めてすぐにコンフィギュレーションと呼ばれる動作が行われることによって、上記のような画像処理を実行するための内部回路を構成する。
ＲＯＭ１４には、上記コンフィグレーションデータ以外に、上記補正を実行するための画像補正パラメータや、後述するＭＰＵの処理プログラムなどが格納されている。ＲＯＭ１４に格納されている画像補正パラメータは、上記のような画像の歪みや位置ズレがカメラ装置毎に異なるため、そのカメラ装置独自のパラメータである。なお、ここでは画像処理ブロックとしてＦＰＧＡ１３を例としているが、ＡＳＩＣ（Application Specific Integrated Circuit）やＤＳＰ（Digital Signal Processor）等によって実現される構成でも構わない。
【００１３】
上記画像処理を施された画像データは、ＭＰＵ（Micro Processing Unit）１５に入力され、画像認識処理などの各種処理が施される。また、ＭＰＵ１５はカメラ装置全体の制御などを実行する。ＲＡＭ（Random Access Memory）１６は、ＭＰＵ１５での各種処理、或いはＦＰＧＡでの画像処理を実行する際のワークメモリや画像を一時的に格納するフレームメモリとして使用される。
ＭＰＵ１５による各種処理が施された画像は、出力Ｉ／Ｆ１７を介して出力される。例えば、ＤＡＣ（Digital to Analog Converter）によってアナログ映像信号に変換してディスプレイ装置に出力したり、或いはディジタル信号として後段の装置などに出力したりされる。
なお、本発明は、図１の構成においてレンズ１１及びイメージセンサ１２の組を複数組設けたステレオカメラに適用することが出来る。ＦＰＧＡ（Field Programmable Gate Array）１３等のハードウェアも、レンズ１１及びイメージセンサ１２と同数設けることで、下記に説明する方法で各光学系について歪み補正を行うが出来る。
もちろん、ＦＰＧＡ（Field Programmable Gate Array）１３等のハードウェアは一つのみ設け、各光学系で共有するようにしても良い。
【００１４】
図２は、図１に示すイメージセンサで取得される画像の歪みについて説明するための図である。
図２（ａ）は取得が期待される理想画像、同図（ｂ）は実際に取得される実画像、同図（ｃ）は歪みによる画素位置の変化について、模式的に示した図である。ここでは説明を簡単にするために格子模様を例として挙げた。また、ここではたる歪みについて記載するが、本発明においては糸巻き歪みについても適用可能である。
図２に示すように、実際に取得される画像には歪みが生じる。これらの歪みは、光学系が持っている特性やバラツキ、或いはレンズなどの光学系とイメージセンサとの位置ズレや回転ズレなどによって生じる。そして、この歪みによって、画像を構成する各画素の位置が移動する。
図２（ｃ）に示すように、歪みによる各画素の移動方向や移動量は、画像中の画素位置によって異なる。例えば、画像内の左上端近傍の点Ａにある画素は、歪みによって右下方向に大きく移動し、同様に画像内の左下端近傍にある点Ｂは、右上方向に大きく移動する。一方、比較的画像中心に近い画像中心左上の点Ｅは、右下方向に移動するものの、点Ａに比べてその移動量が小さい。また、画像の中心近傍の点Ｏはほとんど移動しない。
【００１５】
また、点Ｏを通り垂直方向（Ｙ方向）の直線上の点Ｆは、Ｘ方向の移動はほぼゼロ、Ｙ方向の移動は、Ｘ方向についての同一ライン上の点Ａや点Ｃに比べて移動量が小さくなる。同様に点Ｏを通り水平方向（Ｘ方向）の直線上の点Ｇは、Ｘ方向の移動は、Ｙ方向についての同一ライン上の点Ａや点Ｂより移動量が小さく、Ｙ方向の移動はほぼゼロとなる。つまり、画像中心に近いほど、Ｘ方向、Ｙ方向共に歪みによる画素の移動量は小さく、中心から離れるにつれて大きくなる。
【００１６】
図３は、画素位置の移動について説明するための図であり、画素位置が最大でどの程度移動するかの例を示している。
移動前の画素位置を原点（０，０）、図中左右方向をＸ軸、図中上下方向をＹ軸とした場合、画像内の左上端の点（図２（ｃ）における点Ａ）は凡そ（３０，−２０）の位置に移動する。つまり、Ｘ方向に関して＋３０画素、Ｙ方向に関して−２０画素だけ移動する。
同様に、画像内の右上端の点（図２（ｃ）における点Ｃ）は凡そ（−３０，−２０）の位置に、左下端の点（図２（ｃ）における点Ｂ）は凡そ（３０，２０）の位置に、右下端の点（図２（ｃ）における点Ｄ）は凡そ（−３０，２０）の位置に移動する。つまり、画像内の全ての画素の最大移動量は、Ｘ方向に関して−３０〜＋３０、Ｙ方向に関して−２０〜＋２０の範囲内である。すなわち、画素位置変換処理を行う際には、画素位置変換処理の対象画素の画素位置に対して、この範囲内の周辺画素があれば画素位置変換処理を行うことが可能である。なお、図３に示した数値については例を示したものであって、実際にはこの限りではない。
【００１７】
Ｙ方向についてのみ注目すると、図２（ｃ）における画像中心Ｏを通る水平方向（Ｘ方向）の直線上においては、Ｙ方向への歪みは全ての点においてゼロである。
しかしながら、１画素よりも小さなサブピクセル単位での補正を行うなど高精度な補正が必要なカメラ装置の場合、これは必ずしもゼロとはならない。
また、図２（ｃ）では光学中心Ｏを通る水平方向（Ｘ方向）の直線に対し上下方向で線対称に、同様に光学中心Ｏを通る垂直方向（Ｙ方向）の直線に対し左右方向で線対称に、それぞれ歪み発生しているように図示している。しかしながら、レンズの個体差や、レンズと撮像素子との位置関係によって微妙にズレが生じる。
すなわち、高精度な歪み補正が必要なカメラ装置においては上記説明したような理想的な歪み量や歪み方向にならず、従来技術の説明で述べたような４象限に単純に区切って歪みを補正するということはできない。そのため、カメラ装置毎に画素毎の歪み量と歪み方向を求め、補正をするということが必要となる。
【００１８】
まず、図４乃至図６に示す従来知られる画像位置変換部の機能構成とともに、本実施形態のカメラ装置における歪み補正の概念を説明する。
図４は、従来のカメラ装置に適用可能な画素位置変換部２１の機能ブロックについて説明するための図である。
なお、図４に示される画素位置変換部２１は、図１に示したＦＰＧＡ１３やＡＳＩＣなどのハードウェア内部に構成される機能ブロックである。
入力される画像データはまずラインバッファ２２にライン毎に格納される。このラインバッファのライン数は、図３を用いて説明したＹ方向の最大移動量で決定される。図３の例では、Ｙ方向に関してプラス方向に２０画素、マイナス方向に２０画素であるため、対象画素のラインも含めて４１ラインのラインバッファが必要である。
ラインバッファ２２は、取得された画像データをライン毎に格納するバッファメモリを構成し、画素位置変換部２１がＦＰＧＡで構成されている場合には、ハードウェアマクロのメモリリソース（ＢＲＡＭ：Block RAM）などによって構成される。なお、複数のカメラを使用したステレオカメラなどでは、カメラ毎にラインバッファが必要となる。
【００１９】
また、歪みの最大値は、レンズの設計値、レンズの製造誤差、カメラ組み付け時の組み付け誤差、レンズとイメージセンサとの相対位置、また、複数のカメラを移用するステレオカメラにおいては２つのカメラ間の相対位置、などによって決まる。これらによっては、画像内の各画素に発生するＸ方向（主走査方向）の歪み両とＹ方向（副走査方向）の歪み量は、カメラ組み付け時に行われるキャリブレーションによって求められる。
キャリブレーションによって求められた各画素におけるＸ方向及びＹ方向の歪みは、ＬＵＴ（Lookup Table）によって表現されたり、高次多項式によって表現されたりする。また、後述するコントローラ２４によって入力画像の各画素における補正量（画素移動量）が計算される。
ＬＵＴ方式の場合は、ＬＵＴによって参照元の画素が決まる。また、高次多項式方式の場合は、例えば多項式の係数をキャリブレーションによって求め、その係数のみをカメラ装置は保持しており、その係数を基にリアルタイムに各画素の補正量（画素移動量）を計算する。
【００２０】
一次バッファ（Input Patch Buffer）２３は、ラインバッファに格納された画像データのうち、図３に示した領域の画像データをラインバッファから読み出して保持する。すなわち、図３に示す例においては、Ｘ方向に関してプラス方向に３０画素、マイナス方向に３０画素、対象の画素を含めて横方向で計６１画素、Ｙ方向に関してプラス方向に２０画素、マイナス方向に２０画素、対象の画素を含めて縦方向で計４１画素、つまり６１画素×４１ラインの画像データを保持する。一次バッファは、実際にはフリップフロップ群や、ＦＰＧＡなどの場合にはハードウェアマクロのメモリリソース（ＢＲＡＭ：Block RAM）などで構成される。
前者、すなわちフリップフロップ群で構成される場合には、例えば画素のビット深度が１２ビットの場合、１２ビット幅のフリップフロップが６１×４１個、つまり２，５０１個のフリップフロップが必要となる。
後者、すなわちＢＲＡＭで実現する場合には、後述するインターポレータの補間処理の方法にもよるが、１ライン上で必要となる画素数×ラインバッファ数のＢＲＡＭが必要となる。例えば、インターポレータの補間処理が２×２画素を必要とするバイリニア方式の場合、２×４１、すなわち８２個のＢＲＡＭが必要である。
【００２１】
コントローラ２４は、一次バッファに保持された６１画素×４１ラインの画像データのうち、どの画素を出力するかを決定する信号を出力する。より具体的には、Ｘ方向についての画素移動量、Ｙ方向に関しての画素移動量を出力し、それぞれには整数部と小数部が含まれている。画素移動量の整数部はスイッチネットワーク２５に送られ、小数部はインターポレータ２６に送られる。
スイッチネットワーク２５では、コントローラ２４から出力される画素移動量の情報に基づき、一次バッファに保持された６１画素×４１ラインの画像データのうち、どの画素を出力するかを選択して出力する。ここでは例として、後段のインターポレータで２×２の補間処理をするとして、画素移動量の整数部分で決定する画素と、その隣接する画素の合計４画素の画像データを出力する。ここでは、画素移動量の整数部分によって決定される画素をａ００、その隣接する画素をそれぞれａ０１、ａ１０、ａ１１とし、それらの位置関係の例を図５（ａ）に示す。
【００２２】
インターポレータ２６では、スイッチネットワークで選択されて出力された４画素の、画素間の割合を考慮して１つの画像データを出力する。より具体的には、画素移動量で示される値が４画素のそれぞれの中心で構成される領域内のどこを示しているかによって、４画素の画素値の影響度を演算し、１画素分のデータとして出力する。インターポレータによる補間処理の詳細については後述する。
タイミング信号生成部２７では、垂直同期信号Ｖｓｙｎｃ、水平同期信号Ｈｓｙｎｃ、有効ライン信号Ｈｒｅｆなどの同期信号を、画素位置変換部での処理クロック数を考慮して、出力画像の同期信号を生成する。
【００２３】
図５は、インターポレータによる補間処理について説明するための図である。
以下にインターポレータによる補間処理について説明する。前述の通り、インターポレータでは画素移動量で示される値が４画素のそれぞれの中心で構成される領域内のどこを示しているかによって、４画素の画素値の影響度を演算し、１画素分のデータとして出力する。補間処理の演算式は以下のようになる。
2013201753.tif 000003
ここで、ｄｏｕｔは出力画素値、ｃｘはＸ方向の小数値、ｃｙはＹ方向の小数値、ａ００、ａ０１、ａ１０、ａ１１はそれぞれの画素の画素値である。画素移動量で示される値が図５（ｂ）に示す位置である場合、すなわち、Ｘ方向についてａ００とａ０１との割合が７対３（ｃｘ＝０．７）であり、Ｙ方向についてａ００とａ１０との割合が５対５（ｃｙ＝０．５）である場合、出力画素値は以下の通りとなる。
2013201753.tif 000004
また同様に、画素移動量で示される値が図５（ｃ）に示す位置、すなわち、ａ００の中心（ｃｘ＝０、ｃｙ＝０）である場合、出力画素値は以下の通りとなる。
2013201753.tif 000005
つまり、この場合にはａ００がそのまま出力される。
以上のような補間処理がインターポレータ２６で実行される。
【００２４】
図６は、従来のカメラ装置に適用可能な画素位置変換部３１のラインバッファと一次バッファについて説明するための図である。
図６は、図２（ｃ）の画像における左上端を拡大した図である。説明を簡単にするために、点Ａ及び点Ａ’の位置を若干画像の中心よりに図示している。
点Ａは歪みによって点Ａ’に移動している。前述した通り、画像内での最大の画素移動量はＸ方向に±３０画素、Ｙ方向に±２０ラインとなっており、画像中の左上端近傍に位置する点Ａは、Ｘ方向に＋３０画素、Ｙ方向に−２０ラインの移動量となっている。
また、図示しないが、画像内の左下端の点Ｂでは、Ｘ方向に＋３０画素、Ｙ方向に＋２０ラインの移動量となる。これを補正するのに、画素位置変換部では、Ｙ方向に関する最大の移動量である±２０ラインに、移動量ゼロの場合を含めた合計４１ラインをラインバッファ２２に格納する。図６の例では、Ｌ１〜Ｌ４１がこのラインバッファに相当する。
【００２５】
さて、歪みによって点Ａ’に移動した画素を、歪みの無い理想的な位置である点Ａに補正することを考えた場合、まず図６に示すようにＬ１〜Ｌ４１をラインバッファに格納する。次に、Ｌ１〜Ｌ４１のラインバッファに格納されたラインの中から、Ｘ方向の最大の移動量である±３０画素に、移動量がゼロの場合を含めた合計６１画素分のデータを読み出し、一次バッファに格納する。
図６に示す例では、斜線のハッチングで示した６１画素×４１ラインの領域である。Ｘ方向とＹ方向のそれぞれの補正量は図４で示したコントローラで計算され、その補正量に基きスイッチネットワークで対象画素を選択し出力する。この例の場合、点Ａの位置での出力画素は、Ｘ方向に＋３０画素、Ｙ方向に−２０ラインずれた位置にある点Ａ’の画素値を出力することになる。
【００２６】
次に、本発明の実施の形態に係わる画像位置変換部の構成を説明する。
図７は、第１の実施形態に係わる画素位置変換部の機能ブロック４１の機能ブロックの一例を示す図である。
なお、図７の画素位置変換部２１は、図１に示したＦＰＧＡ１３やＡＳＩＣなどのハードウェア内部に構成される機能ブロックである。
また、図８及び図９は、画素位置変換部４１のラインバッファ２２と一次バッファについて説明するための図である。
【００２７】
図７に示すように、画素位置変換部４１は、図４に示す画素位置変換部２１に比べ、更にラインバッファコントローラ（ラインバッファ制御部の一例）４２を備えている。ラインバッファコントローラ４２は、画像データ内の副走査方向の位置に応じてラインバッファ２２に格納するラインを決定するバッファメモリ制御部を構成する。画素位置変換部４１はまた、Vsync_in, Hsync_in, Href_inなどの同期信号を基準にライン数をカウントする機能を有しており、画像内のどのラインのときにどのラインの画素をラインバッファ２２に格納するかを決定する。
例えば、図２に示す点Ａは、前述したように画像歪みによってＸ方向に＋３０画素、Ｙ方向に−２０ラインの位置にある点Ａ’に画素が移動する。同様に、Ｘ方向について点Ａと同じラインにある右上端の点Ｃは、Ｘ方向に−３０画素、Ｙ方向に−２０ラインの位置にある点Ｃ’に画素が移動する。また、同じライン上にあるＹ軸上の点Ｆでは、Ｘ方向にほぼゼロ画素、Ｙ方向にマイナス方向で絶対値が２０ラインよりも少ない点Ｆ’にそれぞれ移動する。
つまり、Ｙ方向に関しては、同じライン上のいずれの点においても同じマイナス方向の移動となり、且つその絶対値は２０以内となる。すなわち、Ｙ方向について、最大で２１ラインがラインバッファに格納されていれば補正可能となる。図２に示す点Ａ周辺を拡大したものを図９に示す。図９に示すように、画像の上端においては、対象の画素のあるラインとそこからマイナス方向に２０ライン分の合計２１ラインがラインバッファに格納される。図８においては、Ｌ１〜Ｌ２１がそれに相当する。
【００２８】
一方、図２に示す光学中心に対応する点Ｏを通るＸ方向の直線（Ｘ軸）上の点Ｇは、ほぼ同一ライン上の点Ｇ’に画素が移動する。その様子を図９に示した（実際には点Ｇは、Ｘ軸より半画素上、または下の画素となる。図９ではＸ軸より半画素上であるとした）。このとき、理想的な歪みが発生している場合には、Ｘ方向についてプラス方向で絶対値が３０画素以内、Ｙ向について移動がほぼゼロとなる。
しかしながら、実際のレンズは製造誤差や個体差、あるいはレンズと撮像素子の相対位置によって、図９に示すように、Ｙ方向の移動は必ずしもゼロとならない。撮像素子と光学系とをそれぞれ２つ以上備えるカメラ装置からの画像の相関演算を行うようなステレオカメラ装置など、高精度な歪み補正が必要なカメラ装置においては、この差は無視できない。そのため、画素位置変換部４１では、対象画素を含むラインを中心に、上方向に１０ライン、下方向に１０ラインの合計２１ラインの画素をラインバッファに格納している。このようにすることで、同一ライン上においてＹ方向の移動方向が正／負で異なる場合であっても、正確に歪み補正を行うことが可能である。
【００２９】
上記動作を、図１０乃至図１２を用いて更に詳細に説明する。
図１０、図１１は、イメージセンサからの画像入力において、入力ラインに対してどのラインの画像を格納するかを明示した図である。
ここでは画像全体の画素数を１２８０画素×９６０ラインとして説明する。
また、図１０では入力ラインを２０個のブロックに分割し、図１１では入力ラインを２１個のブロックに分割している。
上記説明したように、画像上端（１ライン目付近）においては、副走査方向に関して最大で−２０ライン分の歪みが発生する。すなわち、１ライン目を出力するには、１ライン目〜２１ライン目の、計２１ラインの画像があれば歪みを補正して出力することができる。一方、画像下端（９６０ライン目付近）においては、副走査方向に関して最大で＋２０ライン分の歪みが発生する。
すなわち、９６０ライン目を出力するには、９４０ライン目〜９６０ライン目の、計２１ラインの画像が必要となる。また、画像中央（４８０ライン目付近）においては、副走査方向の歪みは画像端に比較して小さいが上下方向の歪みが発生する可能性があり、例えば、４７１ライン目〜４９１ライン目程度の画像があれば十分に歪みを補正することが可能である。つまり、９６０ラインの中から２１ラインを選択するに際して、９６０ラインを凡そ２０等分したブロックに分け、そのブロックの変わり目において、ラインバッファに格納するラインを切り替える。
【００３０】
図１０の例では、４８ライン毎に格納するラインを切り替えるようにしている。
１ライン目〜４８ライン目では、対象ライン番号をＬｎｏとした場合、Ｌｎｏ〜Ｌｎｏ＋２０ライン目をラインバッファに格納する。具体的には、１ライン目では１〜２１ライン目までの２１ラインを格納し、２ライン目では、２〜２２ライン目までの２１ラインを格納する。同様に４８ライン目では、４８〜６８ライン目までの２１ラインを格納する。
一方、４９ライン目からは次のブロックとなり、Ｌｎｏ−１〜Ｌｎｏ＋１９ライン目をラインバッファに格納する。すなわち、４９ライン目では、４８〜６８ライン目までを格納する。これは、４８ライン目を出力する際に必要となる画像データと同様であり、つまりブロックの切り替わりのタイミングではラインバッファに格納された画像は変化しないことになる。５０ライン目では、４９〜６９ライン目の計２１ラインの画像を格納し、以後、最初のブロックと同様に１ラインずつずらしてラインバッファに格納していく。
【００３１】
上記説明の通り、図１０に示すラインにおいて、それぞれ対応したラインを格納するように制御することによって、ラインバッファを従来よりも少ない構成で歪みを補正することができる。なお、図１０の例では９６０ラインを２０分割しているため、画像中央に対応するブロック１０とブロック１１の間で、格納ラインが２ラインずれるようになっている。前述の通り、画像中央付近では副走査方向の歪み量が小さいので、このようなブロック分割でも十分に歪みを補正することができる。これに対し図１１では、ブロックを２１個に分割した例を示している。この場合、ブロック間で２ラインずれるような動作にはならない。しかしながら、各ブロックに対応する入力ライン数が割り切れないため、少数部分を四捨五入／切り捨て／切り上げなどして、対象入力ラインを設定するようにする必要がある。また、各ブロックに対応する入力ラインの数が異なるため、ブロック間の切り替えタイミングは多少煩雑になる。
【００３２】
図１２は、ラインバッファコントローラ４２の処理動作の流れを示すフローチャートである。
ここでは、図１０に示したブロックによって格納ラインを決定する例を示す。なお、ラインバッファコントローラ４２は入力ライン数をカウントするカウンターを有している。
ラインバッファコントローラ４２は、画像の１フレームの先頭を示すＶｓｙｎｃ＿ｉｎ入力を検知すると（ステップＳ１０１）、カウンターのカウント値ｃｎｔを初期値（ここでは０）にリセットする（ステップＳ１０２）。
その後、ラインバッファコントローラ４２は、各ラインの先頭を示すＨｓｙｎｃ＿ｉｎ入力を検知（ステップＳ１０３）する毎に、カウンターのカウント値ｃｎｔを１ずつカウントアップする（ステップＳ１０４）。
【００３３】
次に、ラインバッファコントローラ４２は、（カウント値−１）／４８の商を評価する（ステップＳ１０５）。
図１０に示したように各ブロックは４８の入力ライン毎に格納ラインを切り替えるため、（カウント値−１）／４８の商を評価することにより現在どのブロックかを判定することができるのである。実際には、上記の商＋１がブロック番号となる。
具体的には、１ライン目では上記商が０となるためブロック１と判定することができる。その場合、ラインバッファコントローラ４２はＬｎｏ〜Ｌｎｏ＋２０の２１ラインをラインバッファに格納する（ステップＳ１１０）。
同様に４８ライン目では、上記商が０となるため、同様にブロック１と判定することができる。
一方、４９ライン目では、上記商が１となるため、ブロック２と判定することができる。その場合、ラインバッファコントローラ４２はＬｎｏ−１〜Ｌｎｏ＋１９の２１ラインをラインバッファに格納する（ステップＳ１１１）。
このような動作をすることで、ラインバッファコントローラ４２は、各ラインに対応した２１ラインを選定してラインバッファに格納する。
なお、上記商２〜１９の場合（ブロックが３〜２０と判定する）の場合、ラインバッファコントローラ４２は、図１０に示すように“Ｌｎｏ−２〜Ｌｎｏ＋１８”〜“Ｌｎｏ−２０〜Ｌｎｏ（ステップＳ１１９）”の２１ラインをラインバッファに格納する。
【００３４】
入力ラインをラインバッファに格納した後、ラインバッファコントローラ４２はそれが最終ライン（ここでは９６０ライン目）かどうかの判断をする（ステップＳ１２０）。
１〜９５９ライン目（ステップＳ１２０でＮｏ）では最終ラインではないと判断され、次のラインの入力するために、ラインバッファコントローラ４２はステップＳ１０３におけるＨｓｙｎｃ＿ｉｎの入力待ちとなる。
一方、９６０ライン目（ステップＳ１２０でＹｅｓ）では１フレーム内の全ラインをラインバッファに格納したことになるので次のフレームを入力するために、ラインバッファコントローラ４２はステップＳ１０１におけるＶｓｙｎｃ＿ｉｎの入力待ちとなる。
以降、カメラ装置を停止するなど画像入力が終わるまで、上記動作が繰り返される。
その後の処理は、基本的に画素位置変換部２１の動作と同様となる。ただし、一次バッファはラインバッファに格納されるライン数が画素位置変換部２１と比べて少なくなるので、必然的にその容量は小さくて済む。
【００３５】
一次バッファでは、ラインバッファに格納された画像データのうち、Ｘ方向に関してプラス方向に３０画素、マイナス方向に３０画素、対象の画素を含めて横方向で計６１画素保持する。また、Ｙ方向に関してマイナス方向に２０画素、対象の画素を含めて縦方向で計２１画素保持し、つまり６１画素×２１ラインの画像データを保持する。
一次バッファは、画素位置変換部２１と同様に、実際にはフリップフロップ群や、ＦＰＧＡなどの場合にはハードウェアマクロのメモリリソース（ＢＲＡＭ）などで構成される。前者で構成される場合には、例えば画素のビット深度が１２ビットの場合、１２ビット幅のフリップフロップが６１×２１個、つまり１，２８１個のフリップフロップが必要となり、従来技術に比べてほぼ半減することができる。後者で実現する場合には、後段のインターポレータの補間処理が２×２画素を必要とするバイリニア方式の場合、２×２１、すなわち４２個のＢＲＡＭが必要となり、こちらも同様に画素位置変換部２１と比べて半減することができる。
【００３６】
以上、説明したように、画素位置変換部４１の動作により、ラインバッファ数を半減することができ、更に一次バッファの容量を半減することができる。また、同じライン上でもＹ方向の正／負の方向が異なってしまうような場合であっても、高精度に歪みを補正することができる。
この結果、レンズの設計値としてのディストーションや製造誤差、個体差による光学的な歪みや、レンズと撮像素子との位置関係に起因する歪みを補正するカメラ装置、或いは、上記に加えてカメラ間の相対位置によるズレを補正する２つ以上のカメラを有したステレオカメラ装置において、少ないラインバッファのライン数で高精度に歪み補正を行うことができる。
【００３７】
＜第２実施形態＞
図１３は、本発明の第２実施形態に係わるカメラ装置に適用可能な画素位置変換部５１のハードウェア構成について説明するための図である。
図１４は、画素位置変換部５１のラインバッファ２２と一次バッファについて説明するための図である。
【００３８】
図１３では、コントローラ２４は、画像データの歪み量を画素毎に演算する歪み量演算部を構成し、コントローラ２４で計算されたＹ方向の歪み量をラインバッファコントローラ５２に入力している。ラインバッファコントローラ５２では、コントローラ２４で計算されたＹ方向の歪み方向と歪み量に応じて、図７に示した第１実施形態に比べて更に詳細に、ラインバッファ２２に格納するラインをコントロールする。
具体的には、図２及び図８を用いて説明したように、図１４においては画像上の左上端の点ＡではＸ方向に＋３０画素、Ｙ方向に−２０ラインの歪みが発生する。同様に右上端の点ＣではＸ方向に−３０画素、Ｙ方向に−２０ラインの歪みが、中央上端の点ＦではＸ方向の移動はほぼゼロ、Ｙ方向にはマイナス方向で絶対値が２０よりも小さくなるような歪みがそれぞれ発生する。
このとき、点ＦのＹ方向の移動量が−５ラインであった場合、点Ａ、点Ｃ、点Ｆを含むライン上では、Ｙ方向への移動量は−５〜−２０ラインの移動量となる。すなわち、合計１６ラインがラインバッファ２２に格納されていれば歪みが補正できることになる。
同様に、画像上の下端でのＹ方向の移動量が＋５〜＋２０ラインである場合には、１６ラインのライン数がラインバッファ２２に格納されていることで、歪みを補正することができる。光学中心に対応する点Ｏを通るＸ軸上のライン（正確には上下に半画素ずれている）においては、同一ライン上で正／負の方向が異なることがあっても、その移動量は小さいため、１６ラインのラインバッファ２２で十分に補正することができる。
【００３９】
以上のように、コントローラ２４で計算されたＹ方向についての歪み方向（正／負の方向含む）と歪み量を用いて、ラインバッファコントローラ５２がより詳細にラインバッファ２２に格納するラインを決定することで、第１実施形態よりも更にラインバッファ２２、及び一次バッファのメモリリソースを削減することができる。
【符号の説明】
【００４０】
１  画像処理装置、１１  レンズ、１２  イメージセンサ、１３  ＦＰＧＡ、１４  ＲＯＭ、１５  ＭＰＵ、１６  ＲＡＭ、１７  出力Ｉ／Ｆ、２１  画素位置変換部、２２  ラインバッファ、２３  一次バッファ、２４  コントローラ、２５  スイッチネットワーク、２６  インターポレータ、２７  タイミング信号生成部、３１  画素位置変換部、４１  画素位置変換部、４２  ラインバッファコントローラ、５１  画素位置変換部、５２  ラインバッファコントローラ
【先行技術文献】
【特許文献】
【００４１】
【特許文献１】特開２００８−２３６５４４号公報
【図１】
2013201753.tif 000006
【図２】
2013201753.tif 000007
【図３】
2013201753.tif 000008
【図４】
2013201753.tif 000009
【図５】
2013201753.tif 000010
【図６】
2013201753.tif 000011
【図７】
2013201753.tif 000012
【図８】
2013201753.tif 000013
【図９】
2013201753.tif 000014
【図１０】
2013201753.tif 000015
【図１１】
2013201753.tif 000016
【図１２】
2013201753.tif 000017
【図１３】
2013201753.tif 000018
【図１４】
2013201753.tif 000019
【図１５】
2013201753.tif 000020