(57)【要約】  画像の歪みを高効率で精度よく補正する。  補正後画像（Ｐ２）の座標系の各画素に対応する補正前画像（Ｐ１）の座標系の座標（補正前座標）を記憶する記憶部（１）と、補正後画像（Ｐ２）の各画素を選択するための座標値が入力されたとき、その座標値に対応する補正前座標を記憶部（１）から読み込んで出力する座標出力部（２）と、座標出力部（２）から出力された補正前座標に対応する補正前画像（Ｐ１）のデータを、その補正前座標に対応する補正後画像（Ｐ２）の画素のデータとして出力する画素データ出力部（３）と、座標出力部（２）から出力された補正前座標が小数点以下の数値を含む場合には、補正前画像（Ｐ１）におけるその補正前座標の近傍複数画素のデータを基に加重平均を算出することで、その補正前座標に対応する補正後画像（Ｐ２）の画素のデータを出力する画素データ演算部（４）とを有する。
2008139577.tif 000002
【特許請求の範囲】
【請求項１】
画像の歪みを補正する画像処理装置において、
補正後画像の座標系の各画素に対応する補正前画像の座標系の座標である補正前座標を記憶する記憶部と、
前記補正後画像の各画素を選択するための座標値が入力されたとき、入力された座標値に対応する前記補正前座標を前記記憶部から読み込んで出力する座標出力部と、
前記座標出力部から出力された前記補正前座標に対応する前記補正前画像のデータを、当該補正前座標に対応する前記補正後画像の画素のデータとして出力する画素データ出力部と、
前記座標出力部から出力された前記補正前座標が小数点以下の数値を含む場合には、前記補正前画像における当該補正前座標の近傍複数画素のデータを基に加重平均を算出することで、当該補正前座標に対応する前記補正後画像の画素のデータを出力する画素データ演算部と、
を有することを特徴とする画像処理装置。
【請求項２】
前記記憶部は、前記補正前画像における前記補正前座標を、前記補正後画像における対応する座標を基準としたベクトルとして記憶することを特徴とする請求の範囲第１項記載の画像処理装置。
【請求項３】
前記記憶部は、前記補正後画像の座標系を均等に分割した矩形ブロックごとに、前記矩形ブロックの頂点に対応する前記補正前座標のみを記憶し、
前記座標出力部は、
前記補正後画像における前記矩形ブロックの選択指示を受け、選択指示された前記矩形ブロックに対応する前記補正前座標を前記記憶部から読み込む座標読み込み部と、
前記座標読み込み部が読み込んだ、前記矩形ブロックに対応する前記補正前座標と、前記補正後画像における当該矩形ブロック内の各画素の、当該矩形ブロックの各頂点に対する相対位置とを基に、当該矩形ブロック内の各画素に対応する前記補正前座標を算出して、前記画素データ出力部および前記画素データ演算部に出力する座標演算部と、
を備えることを特徴とする請求の範囲第１項または第２項に記載の画像処理装置。
【請求項４】
前記座標演算部は、前記矩形ブロック内の各画素の前記補正前座標を、前記補正後画像における当該矩形ブロック内の対応する画素の、当該矩形ブロックの各頂点に対する相対位置に基づき、当該矩形ブロックに対応する前記記憶部内の前記補正前座標を線形補間することで算出することを特徴とする請求の範囲第３項記載の画像処理装置。
【請求項５】
前記矩形ブロックの垂直方向の長さが、前記補正後画像の各画素の座標と、それらに対応する前記補正前画像における前記補正前座標との間の垂直方向の最大移動量となるように設定され、前記座標読み込み部が、前記補正後画像内の前記矩形ブロックを水平方向に順次選択するように選択指示を受ける場合に、
前記画素データ演算部は、前記座標読み込み部が、水平方向に隣接するすべての前記矩形ブロックからなる１ブロックラインの先頭に位置する前記矩形ブロックの選択指示を受けたときに、前記補正前画像のデータから、前記座標読み込み部が選択指示された前記矩形ブロックの領域を含む最大２つの前記ブロックラインの領域のデータを読み込み、データの演算を実行することを特徴とする請求の範囲第３項または第４項に記載の画像処理装置。
【請求項６】
撮像した画像の歪みを補正する機能を備えた撮像装置において、
補正後画像の座標系の各画素に対応する補正前画像の座標系の座標である補正前座標を記憶する記憶部と、
前記補正後画像の各画素を選択するための座標値が入力されたとき、入力された座標値に対応する前記補正前座標を前記記憶部から読み込んで出力する座標出力部と、
前記座標出力部から出力された前記補正前座標に対応する前記補正前画像のデータを、当該補正前座標に対応する前記補正後画像の画素のデータとして出力する画素データ出力部と、
前記座標出力部から出力された前記補正前座標が小数点以下の数値を含む場合には、前記補正前画像における当該補正前座標の近傍複数画素のデータを基に加重平均を算出することで、当該補正前座標に対応する前記補正後画像の画素のデータを出力する画素データ演算部と、
を有することを特徴とする撮像装置。
【請求項７】
撮像レンズの歪曲収差によって生じた画像の歪みを補正するための画像歪み補正方法において、
座標出力部が、補正後画像の各画素を選択するための座標値が入力されたとき、前記補正後画像の座標系の各画素に対応する補正前画像の座標系の座標である補正前座標を記憶した記憶部から、入力された座標値に対応する前記補正前座標を読み込んで出力し、
画素データ出力部が、前記座標出力部から出力された前記補正前座標に対応する前記補正前画像のデータを、当該補正前座標に対応する前記補正後画像の画素のデータとして出力し、
画素データ演算部が、前記座標出力部から出力された前記補正前座標が小数点以下の数値を含む場合には、前記補正前画像における当該補正前座標の近傍複数画素のデータを基に加重平均を算出することで、当該補正前座標に対応する前記補正後画像の画素のデータを出力する、
ことを特徴とする画像歪み補正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の歪みを補正する画像処理装置、この画像処理装置の歪み補正機能を備えた撮像装置、および画像歪み補正方法に関する。
【背景技術】
【０００２】
近年、撮像した画像をデジタルデータとして記録可能なデジタルスチルカメラ、デジタルビデオカメラといった撮像装置が広く普及している。このようなデジタル式の撮像装置では、本体の小型化、低価格化、ズーム機能の高倍率化などに対する要求が強くなっている。一方、撮像装置の搭載するレンズにおいては、特に広角側において、いわゆる歪曲収差に起因する光学的な画像の歪みが生じることが知られている。このような歪みは、光学系の短縮やズーム機能の高倍率化によって大きくなる傾向にある。また、歪みの少ないレンズを製造しようとすると、コストが増大してしまうという問題もある。【０００３】
これに対して、撮像により得られた画像信号を基に、このような画像の歪みを画像処理によって補正することが考えられていた。歪曲収差の量は、撮像素子の受光面の中心からの距離の３乗に比例することが知られている。そこで、補正前画像の座標系を、画像中心とそこからの距離との座標系に変換した後、上記特性に基づいて収差量分だけ元の画素の位置を移動させ、さらにそれらの画素データを基に補正後画像の座標系に変換することで、補正後画像を得るという手法が一般的に用いられていた。【０００４】
しかし、このような原理的な演算手法では、浮動小数点演算や三角関数などを多用する必要があり、膨大な演算時間と高い演算能力が必要となる。さらに、最近では非球面レンズが使用される機会が増えており、その収差特性を演算では簡単に求めることができなくなっている。これに対して、画像内の画素ごとに、収差量に応じた変換後の座標値をあらかじめＲＯＭ（Read Only Memory）に記憶しておき、その記憶情報を基に座標変換後の画像データを画像メモリに書き込むことで歪み補正を行う手法が考えられていた（例えば、特許文献１参照。）。【０００５】
また、画像の歪み補正に関連する従来の技術として、プロジェクタで画像をスクリーンに投影したときの投射方向などによる画像の歪みを補正する際に、スクリーンの形状を表す多角形メッシュに対して、観察者側の条件パラメータを使用して原画像をテクスチャとして貼り付け、その多角形メッシュをプロジェクタ側の投影条件パラメータを使用して描画し、描画された画像を投影するようにした歪み補正方法があった（例えば、特許文献２参照。）。【０００６】
さらに、他の関連技術として、開いた状態の本を複写する際に、読み込んだ画像に対して、歪みが生じた背表紙の位置する領域を副走査方向に沿って拡大するように補正を行うデジタル複写機もあった（例えば、特許文献３参照。）。
【特許文献１】実開平５−４８０５１号公報（段落番号〔００１２〕〜〔００１３〕、図１）
【特許文献２】特開２００４−７２５５３号公報（段落番号〔０００５〕、図１）
【特許文献３】特開２００１−１６４２８号公報（段落番号〔００７４〕〜〔００７７〕、図６）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述したように、歪曲収差による画像の歪みを原理的な演算により補正するには、膨大な演算量が必要となる。このため、このような演算をハードウェアにより行おうとすると、回路規模が増大してしまう。特に、非球面レンズを使用した場合には、ハードウェアによる演算はほぼ不可能となる。また、このような演算をソフトウェアにより行う場合には、非常に高い演算能力が必要となってしまう。従って、特に、このような歪み補正の演算を撮像装置内で実現することは困難であった。【０００８】
また、上記の特許文献１に開示された技術のように、補正前の画像の座標系を基準として、各画素の変換後の座標値をＲＯＭから読み出してマッピングする手法を用いた場合、補正前の画像の走査順に座標変換処理を行った後、さらに補正後の画像の走査順に各画素のデータ演算処理を実行しなければならないため、処理効率が低く、高速な処理が難しかった。さらに、マッピング後に補正後画像の画素を演算する際に丸め演算を行うと、画像上にデータの存在しない隙間が空いてしまうために、画像補正の精度が低くなるという問題もあり、この隙間を埋めるためには、さらに余計な演算が必要であった。【０００９】
また、特許文献１の技術のように、収差量に応じた変換後の座標値を画素ごとにあらかじめＲＯＭに記憶しておいた場合、ＲＯＭの容量が大きくなり、回路規模や製造コストが増大してしまうという問題もあった。【００１０】
本発明はこのような点に鑑みてなされたものであり、画像の歪みを高効率で精度よく補正できるようにした画像処理装置、撮像装置、および画像歪み補正方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明では上記課題を解決するために、図１に示すような画像処理装置が提供される。この画像処理装置は、画像の歪みを補正するものであり、補正後画像Ｐ２の座標系の各画素に対応する補正前画像Ｐ１の座標系の座標である補正前座標を記憶する記憶部１と、前記補正後画像Ｐ２の各画素を選択するための座標値が入力されたとき、入力された座標値に対応する前記補正前座標を前記記憶部１から読み込んで出力する座標出力部２と、前記座標出力部２から出力された前記補正前座標に対応する前記補正前画像Ｐ１のデータを、当該補正前座標に対応する前記補正後画像Ｐ２の画素のデータとして出力する画素データ出力部３と、前記座標出力部２から出力された前記補正前座標が小数点以下の数値を含む場合には、前記補正前画像Ｐ１における当該補正前座標の近傍複数画素のデータを基に加重平均を算出することで、当該補正前座標に対応する前記補正後画像Ｐ２の画素のデータを出力する画素データ演算部４とを有することを特徴とする。【００１２】
このような画像処理装置では、補正後画像Ｐ２の座標系の各画素に対応する補正前画像Ｐ１の座標系の座標が、補正前座標として記憶部１に記憶される。従って、入力された補正前画像Ｐ１の歪みを補正する際には、座標出力部２に対して、補正後画像Ｐ２の各画素を選択するための座標値を順次入力すると、その画素ごとに画素データ出力部３および画素データ演算部４によって補正後画像Ｐ２の各画素のデータが出力されていく。すなわち、座標出力部２は、入力された補正後画像Ｐ２の座標系における座標値に対応する補正前座標を、記憶部１から読み込んで出力する。画素データ出力部３は、座標出力部２から出力された補正前座標に対応する補正前画像Ｐ１のデータを、その補正前座標に対応する補正後画像Ｐ２の画素のデータとして出力する。ここで、座標出力部２から出力された補正前座標が小数点以下の数値を含む場合には、画素データ演算部４が、補正前画像Ｐ１における補正前座標の近傍複数画素のデータを基に加重平均を算出することで、その補正前座標に対応する補正後画像Ｐ２の画素のデータを出力する。
【発明の効果】
【００１３】
本発明の画像処理装置によれば、補正後画像の座標系の各画素に対応する補正前画像の座標系の座標が記憶部に記憶されることで、歪み補正のための座標変換の処理を簡易化でき、さらに、補正後画像の走査順にその画像の各画素のデータを出力していくことができるので、高効率の処理により画像の歪みを精度よく補正することができる。【００１４】
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１５】
【図１】実施の形態に係る画像処理装置の主な構成を示す機能ブロック図である。
【図２】実施の形態に係る撮像装置の構成を示すブロック図である。
【図３】変換データベースの記憶情報の基準となる矩形ブロックについて説明するための図である。
【図４】矩形ブロック内の各画素に対応する補正前画像での座標値の演算について説明するための図である。
【図５】小数点以下の数値を持つ座標のデータの補間演算の例について説明するための図である。
【図６】１画面分の歪み補正処理の流れの例を示すフローチャートである。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図１は、実施の形態に係る画像処理装置の主な構成を示す機能ブロック図である。
図１に示す画像処理装置は、補正前画像Ｐ１のデータの入力を受けて、この補正前画像Ｐ１の歪みを画像処理によって補正した補正後画像Ｐ２を出力する。なお、補正可能な歪みとしては特に限定されないが、例えば、撮像レンズの歪曲収差による歪みの補正に好適である。この画像処理装置は、記憶部１、座標出力部２、画素データ出力部３、および画素データ演算部４を備えている。【００１７】
記憶部１は、補正後画像Ｐ２の各画素に対応する補正前座標を記憶している。補正前座標とは、補正後画像Ｐ２の座標系における各画素が、歪み補正により移動される前に補正前画像Ｐ１のどの座標にあったかを、補正後画像Ｐ２の座標系による座標値として示したものである。従って、補正前座標は、歪み補正による移動量によっては必ずしも整数値にならず、小数点以下の数値を持つ場合もあり得る。【００１８】
なお、この記憶部１には、歪みの特性に応じて任意の補正前座標を記憶しておくことができる。これらの補正前座標は、演算によってあらかじめ算出されたものでもよいし、あるいは、実際の撮像により得られた画像のデータを基に求められたものでもよい。また、補正前座標としては、座標値の代わりに、補正後画像Ｐ２の各画素の座標を基準とした移動量をベクトルとして示したものであってもよい。【００１９】
座標出力部２は、補正後画像Ｐ２の各画素を選択するための座標値が入力されたとき、入力された座標値に対応する補正前座標を記憶部１から読み込み、画素データ出力部３および画素データ演算部４に出力する。【００２０】
画素データ出力部３は、座標出力部２から出力された補正前座標に対応する補正前画像Ｐ１のデータを、その補正前座標に対応する補正後画像Ｐ２の画素のデータとして出力する。ここで、座標出力部２からの補正前座標が整数値であり、補正前画像Ｐ１の中の座標として存在している場合には、その座標の画素のデータを補正前画像Ｐ１から抽出することで、補正後画像Ｐ２の対応する画素のデータを出力することができる。一方、座標出力部２からの補正前座標が小数点以下の数値を含む場合には、画素データ出力部３は、画素データ演算部４によって演算されたデータを、補正後画像Ｐ２における対応する画素のデータとして出力する。【００２１】
画素データ演算部４は、補正前画像Ｐ１のデータから、その画像の座標系において、座標出力部２からの補正前座標の近傍に位置する複数画素のデータを抽出する。そして、抽出した近傍複数画素の各データを基に加重平均を算出することで、その補正前座標に対応する補正後画像Ｐ２の画素のデータを出力する。なお、この加重平均で用いる係数は、抽出した近傍複数画素の補正前画像Ｐ１における座標と、座標出力部２からの補正前座標との相対位置を基に設定されればよい。【００２２】
以上の処理によれば、補正後画像Ｐ２の座標系の各画素に対応する補正前画像Ｐ１の座標系の座標（補正前座標）を、記憶部１にあらかじめ記憶しておき、補正後画像Ｐ２の座標値に対応する補正前座標を順次読み出す構成としたことで、歪み補正のための座標変換の処理が簡易化される。すなわち、この手法により、補正前と補正後の各座標の対応を、画像の歪みの特性を示す演算式を用いて算出する手法と比較して、歪み補正時の演算量を大幅に減少でき、高速に処理できるようになる。【００２３】
また、補正後画像Ｐ２の座標系を基準として、補正前画像Ｐ１のデータをマッピングしていく手法としたことで、画素データ演算部４での補正後画像Ｐ２の画素データの演算時に丸め演算を行っても、出力画像上にデータの存在しない隙間が空いてしまうことがなくなる。従って、画素データ出力部３から得られる画像の品質が向上され、さらに、隙間を埋めるといった余計な演算を実行する必要もなくなるので、処理効率を向上させることができる。【００２４】
さらに、上記処理では、座標出力部２に対して、出力される補正後画像Ｐ２の画素の走査順で順次座標値を入力していくことで、補正後画像Ｐ２の各画素のデータが、画素データ出力部３から順次出力されていく。このため、補正前画像Ｐ１を一端ＲＡＭ（Random Access Memory）などに格納した後は、最終的に出力される画像（すなわち補正後画像Ｐ２）の走査順に順次処理を実行していけばよくなり、画像処理の制御を簡易化することができる。【００２５】
例えば、従来の一般的なテクスチャマッピングの手法に倣って、補正前画像Ｐ１の座標系の各画素に対応する補正後画像Ｐ２の座標を記憶部１に記憶しておいた場合、まず、補正前画像Ｐ１の走査順に座標変換の演算を行った後、さらに、補正後画像Ｐ２の走査順に各画素のデータを補間演算しなければならない。従って、本実施の形態での処理により、画像処理の処理効率を高め、より高速に処理できるようになる。【００２６】
ところで、上記の説明では、補正後画像Ｐ２のすべての画素に対応する補正前座標を記憶部１に記憶していた。これに対して、補正後画像Ｐ２の座標系を矩形ブロックＢＬにより均等に分割しておき、矩形ブロックＢＬごとにその頂点に対応する補正前画像Ｐ１における座標（補正前座標）のみを記憶部１に記憶しておくようにして、記憶部１に記憶しておくデータ量を削減してもよい。【００２７】
この場合、座標出力部２は、例えば、補正後画像Ｐ２の矩形ブロックＢＬの位置を選択する選択指示を受けると、その矩形ブロックＢＬに対応する補正前座標を記憶部１から読み込む。そして、読み込んだ各頂点に対応する補正前座標と、補正後画像Ｐ２におけるその矩形ブロックＢＬ内の各画素の、矩形ブロックＢＬ内の各頂点に対する相対位置とを基に、その矩形ブロックＢＬ内の各画素に対応する補正前画像Ｐ１上の座標を算出する。これにより、画素データ演算部４および画素データ出力部３は、補正後画像Ｐ２内の各画素のデータを出力できるようになる。【００２８】
以下、このように補正後画像Ｐ２の座標系を矩形ブロックに分割する手法を用いた場合の実施の形態について説明する。ここでは、このような歪み補正手法が適用された撮像装置（例えばデジタルスチルカメラ）を例に挙げて説明する。【００２９】
図２は、実施の形態に係る撮像装置の構成を示すブロック図である。
図２に示す撮像装置は、撮像素子１１、Ａ／Ｄ変換部１２、信号処理部１３，１４、歪み補正部１５、画像エンコーダ１６、記録装置１７、制御部１８、ＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）１９、およびＳＤＲＡＭ（Synchronous Dynamic RAM）２０を備えている。【００３０】
撮像素子１１は、ＣＣＤ（Charge Coupled Devices）あるいはＣＭＯＳ（Complementary Metal Oxide Semiconductor）型などの固体撮像素子であり、図示しない光学ブロックを通じて入射した光を、電気信号に変換する。撮像素子１１からの画像信号は、Ａ／Ｄ変換部１２によってサンプルホールドされてデジタルデータに変換され、信号処理部１３に供給される。【００３１】
信号処理部１３は、いわゆるプリプロセス処理を実行するブロックであり、Ａ／Ｄ変換部１２からの画像データから各種の検波処理を行って、検波結果を制御部１８に供給する。また、信号処理部１３では、制御部１８からの制御の下で、Ａ／Ｄ変換部１２からの画像データに対してノイズ除去処理やホワイトバランス調整処理などを施す。信号処理部１４は、前段の信号処理部１３からの画像データを基に色補間処理を行い、所定画素数を持つＲＧＢ（Red,Green,Blue）画像データを生成し、さらにノイズ除去処理などの各種信号処理を施す。【００３２】
歪み補正部１５は、信号処理部１４からの画像データを基に歪み補正処理を行う。このとき、補正後画像Ｐ２上の矩形ブロックの各頂点に対応する補正前画像Ｐ１の座標を記憶した変換データベース１９ａを参照する。【００３３】
歪み補正処理が施された画像データは、画像エンコーダ１６に供給されて、ＪＰＥＧ（Joint Photographic Coding Experts Group）方式などの所定の静止画像データフォーマットにより圧縮符号化処理が施される。符号化により生成された画像ファイルは、記録装置１７により記録媒体に記録される。なお、記録装置１７が備える記録媒体としては、例えば、フラッシュメモリによるメモリカードや光ディスクなどの着脱可能な記録媒体、あるいはＨＤＤ（Hard Disk Drive）などの固定型の記録媒体などが適用される。【００３４】
制御部１８は、ＣＰＵ（Central Processing Unit）などから構成されるマイクロコントローラであり、ＥＥＰＲＯＭ１９などに記憶されたプログラムを実行することにより、撮像装置の各部を統括的に制御する。ＥＥＰＲＯＭ１９には、制御部１８で実行されるプログラムの他、歪み補正部１５で参照される変換データベース１９ａなど、撮像装置内の各部の処理に必要なデータがあらかじめ記憶される。なお、このような機能のためには、ＥＥＰＲＯＭ１９の他に、フラッシュメモリなどの各種の不揮発性メモリが用いられてもよい。【００３５】
ＳＤＲＡＭ２０は、撮像装置内の各部の処理のための作業領域として利用されるメモリであり、主に、信号処理の途中の画像データが一時的に記憶される。例えば、信号処理部１４から出力された補正前画像Ｐ１のデータはＳＤＲＡＭ２０に一旦記憶された後、歪み補正部１５から必要な分だけ順次読み込まれ、歪み補正後の画像（補正後画像Ｐ２）もＳＤＲＡＭ２０に書き込まれる。【００３６】
図３は、変換データベースの記憶情報の基準となる矩形ブロックについて説明するための図である。
変換データベース１９ａは、補正後画像Ｐ２の座標系を均等分割した矩形ブロックごとに、その矩形ブロックの各頂点に対応する補正前画像Ｐ１における座標値を記憶する。図３では、例として糸巻き型歪曲収差による歪みを補正する例を示しているが、ここでは、補正後画像Ｐ２の座標系を水平方向、垂直方向ともに８分割し、水平方向５画素、垂直方向４画素からなる矩形ブロックを定義している。【００３７】
ここで、例えば補正後画像Ｐ２の矩形ブロックＢＬ１の各頂点Ｄ１〜Ｄ４が、歪み補正の前には補正前画像Ｐ１における頂点Ｄ１’〜Ｄ４’の位置にそれぞれあるものとすると、変換データベース１９ａには、矩形ブロックＢＬ１に対応する座標値として、これらの頂点Ｄ１’〜Ｄ４’の補正前画像Ｐ１の座標系における座標値が記憶される。【００３８】
なお、このような補正後画像Ｐ２内の座標と補正前画像Ｐ１内の座標との対応関係は、実際に撮像した画像を基にあらかじめ測定することで、求めることができる。また、変換データベース１９ａにおいては、実際には、補正後画像Ｐ２における走査順が最初の矩形ブロック（すなわち最も左上のブロック）のみ４つの頂点にそれぞれ対応する座標値が記憶され、それ以外の矩形ブロックについては、左上を除く残りの３つの頂点に対応する座標値のみが記憶されてもよい。あるいは、最も左上以外の矩形ブロックについては、左上の頂点を基準とした水平方向および垂直方向の２つの頂点の座標のみを記憶してもよい。【００３９】
さらに、変換データベース１９ａには、各頂点の座標値の代わりに、補正後画像Ｐ２上の座標から補正前画像Ｐ１上の座標への移動量を示すベクトルが記憶されてもよい。これにより、記憶される２値データのけた数が減少され、必要な記憶容量をさらに削減することができる。【００４０】
次に、歪み補正部１５における処理について詳しく説明する。まず、図４は、矩形ブロック内の各画素に対応する補正前画像での座標値の演算について説明するための図である。【００４１】
歪み補正部１５は、補正後画像Ｐ２上の各矩形ブロックを選択する選択指示を制御部１８から受けると、指示された矩形ブロックに対応する座標値を変換データベース１９ａから読み込む。そして、読み込んだ座標値に対応する補正前画像Ｐ１のデータを、補正後画像Ｐ２の矩形ブロック内の各画素にマッピングする。このとき、指示された矩形ブロックにおける頂点以外の画素に対応する補正前画像Ｐ１での座標値を、それらの画素の矩形ブロック内での各頂点に対する相対位置を基に演算によって求める。【００４２】
例えば、図４において、補正後画像Ｐ２における矩形ブロックの頂点Ｄ１１〜Ｄ１４に対して、それぞれ補正前画像Ｐ１における頂点Ｄ１１’〜Ｄ１４’の座標値が変換データベース１９ａに記憶されていたとする。そして、頂点Ｄ１１およびＤ１２の間の長さｘ、頂点Ｄ１１およびＤ１３の間の長さｙに対して、この矩形ブロックにおいて、頂点Ｄ１１に対して水平方向、垂直方向にそれぞれ長さｄｘ、ｄｙの位置にある画素Ｄ２１を考える（ただし、０＜ｄｘ＜ｘ、０＜ｄｙ＜ｙ）。【００４３】
この場合に、画素Ｄ２１に対応する補正前画像Ｐ１での点Ｄ２１’の座標は、頂点Ｄ１１’〜Ｄ１３’の各座標値を用いて、ｄｘ／ｘ＝ｄｘ１／ｘ１、ｄｙ／ｙ＝ｄｙ１／ｄｙ１（ただし、０＜ｄｘ１＜ｘ１、０＜ｄｙ１＜ｙ１）の条件を満たす座標を演算することで求められる。あるいは、より正確に演算するには、頂点Ｄ１’〜Ｄ４’の各座標値を用いて、ｄｘ／ｘ＝ｄｘ１／ｘ１＝ｄｘ２／ｘ２、ｄｙ／ｙ＝ｄｙ１／ｄｙ１＝ｄｙ２／ｙ２（ただし、０＜ｄｘ２＜ｘ２、０＜ｄｙ２＜ｙ２）の条件を満たす座標を演算することで求められる。【００４４】
ここで、算出された座標値が小数点以下の数値を持つ場合には、次に説明するように、補正前画像Ｐ１において、算出された座標の近傍に位置する画素のデータを用いてバイリニア補間を行うことにより、その座標に対応するデータを算出する。【００４５】
図５は、小数点以下の数値を持つ座標のデータの補間演算の例について説明するための図である。
図５において、補正前画像Ｐ１の座標系において隣接した４つの点（画素）Ｄａ，Ｄｂ，Ｄｃ，Ｄｄが存在し、これらの画素データがそれぞれＡ，Ｂ，Ｃ，Ｄであるとする。そして、上述した補正前画像Ｐ１での座標（補正前座標）の演算により、これらの４点の内側に存在する点Ｄｐの位置に対応する座標が算出されたものとし、この点Ｐｐのデータを算出することを考える。【００４６】
算出された点Ｄｐの座標値のうちの小数点以下の数値をｐｘ、ｐｙとし、点Ｄａ、点Ｄｃをそれぞれ水平方向にｐｘだけ移動した点を点Ｄｑ、点Ｄｒとする。このとき、点ＤｑおよびＤｒのデータをそれぞれＱ，Ｒとすると、Ｑ，Ｒは以下の式（１），（２）により求められる。
Ｑ＝（１−ｐｘ）×Ａ＋ｐｘ×Ｂ                                      ……（１）
Ｒ＝（１−ｐｘ）×Ｃ＋ｐｘ×Ｄ                                      ……（２）
これらの式を用いて、点Ｐｐのデータ（Ｐとする）は以下の式（３）により求められる。
Ｐ＝（１−ｐｙ）×Ｑ＋ｐｙ×Ｒ
＝ｐｘ×ｐｙ×（Ａ−Ｂ−Ｃ＋Ｄ）＋ｐｘ×（Ｂ−Ａ）＋ｐｙ×（Ｃ−Ａ）＋Ａ
……（３）
なお、この図５の例では、補正前座標の位置に隣接する補正前画像Ｐ１中の４つの画素のデータを基に補間演算を行ったが、さらに多くの隣接複数画素のデータを用いて補間演算を行ってもよい。【００４７】
図６は、１画面分の歪み補正処理の流れの例を示すフローチャートである。
この図６の処理では、補正後画像Ｐ２の座標系において、矩形ブロックを左上から水平方向に順次選択して処理していく。ここで、水平方向に隣接する複数の矩形ブロックの単位を、“ブロックライン”と呼ぶ。例えば、図３におけるＬ１〜Ｌ８は、それぞれブロックラインの番号を示している。【００４８】
〔ステップＳ１１〕歪み補正部１５は、補正前画像Ｐ１のデータのうち、処理に必要な画素のデータをＳＤＲＡＭ２０から読み込む。ここで、１ブロックラインについて、補正前画像Ｐ１と補正後画像Ｐ２との間での座標の最大移動量が事前にわかれば、その垂直方向の最大移動量に対応するだけのライン数分のデータをＳＤＲＡＭ２０から読み込むことで、１ブロックラインの処理を実行できる。【００４９】
ここでは例として、１つの矩形ブロックの垂直方向のそれぞれの長さを、補正前と補正後の対応座標の垂直方向に対する最大移動量となるように設定しておく。従って、ステップＳ１１の処理は１ブロックラインの処理を実行するたびに呼び出され、このステップＳ１１では、補正前画像Ｐ１における最大２ブロックライン分の画素のデータがＳＤＲＡＭ２０から読み込まれる。また、例えば、初回のみ２ブロックライン分の画素のデータが読み込まれ、２回目以降は次の１ブロックライン分の画素のデータが読み込まれるようにしてもよい。【００５０】
なお、ＳＤＲＡＭ２０から読み込んだデータは、歪み補正部１５内に設けられたラインメモリに格納される。また、このラインメモリの領域は、ＳＤＲＡＭ２０の中に設けられてもよい。【００５１】
〔ステップＳ１２〕歪み補正部１５は、制御部１８から１つの矩形ブロックの選択指示を受ける。
〔ステップＳ１３〕歪み補正部１５は、選択指示された矩形ブロックの頂点に対応する座標値を、変換データベース１９ａから読み込む。【００５２】
〔ステップＳ１４〕歪み補正部１５は、制御部１８から、補正後画像Ｐ２の座標系における矩形ブロック内の１つの画素の選択指示を受ける。
〔ステップＳ１５〕歪み補正部１５は、ステップＳ１３で読み込んだ座標値を基に、ステップＳ１４で選択指示された画素に対応する補正前画像Ｐ１の座標系における座標（補正前座標）を、線形補間により演算する。この演算の例については、図４で説明した通りである。【００５３】
〔ステップＳ１６〕歪み補正部１５は、ステップＳ１５で算出した補正前座標に対応する補正前画像Ｐ１の画素のデータ（すなわち、補正前座標の位置に隣接する補正前画像Ｐ１の複数画素のデータ）を、ステップＳ１１で読み込んでいたデータの中から取得する。【００５４】
〔ステップＳ１７〕歪み補正部１５は、ステップＳ１６で取得したデータを基にバイリニア補間の演算を行う。そして、算出したデータを、ステップＳ１４で選択指示された補正後画像Ｐ２における画素のデータとして、ＳＤＲＡＭ２０に書き込む。【００５５】
〔ステップＳ１８〕歪み補正部１５（または制御部１８）は、１つの矩形ブロック内の全画素のデータ出力が終了したか否かを判定する。出力されていない画素がある場合は、ステップＳ１４に戻って、その矩形ブロック内の次の画素が選択される。また、ブロック内全画素のデータが出力済みである場合には、ステップＳ１９の処理が実行される。【００５６】
〔ステップＳ１９〕歪み補正部１５（または制御部１８）は、１ブロックラインについての処理が終了したか否かを判定する。終了していない場合は、ステップＳ１２に戻って、そのブロックラインにおける次の矩形ブロックが選択される。また、１ブロックラインの処理済みの場合は、ステップＳ２０の処理が実行される。【００５７】
〔ステップＳ２０〕歪み補正部１５（または制御部１８）は、補正後画像Ｐ２の座標系におけるすべての矩形ブロックの処理が終了したか否かを判定する。終了していない場合は、ステップＳ１１に戻って、次のブロックラインの処理に必要なデータがＳＤＲＡＭ２０から読み込まれる。また、すべての矩形ブロックの処理が終了すると、１画面分の処理が終了する。【００５８】
以上の処理によれば、補正後画像Ｐ２におけるブロックラインを単位として処理を進めるようにし、さらに、１つの矩形ブロックの垂直方向の長さを、補正前と補正後の対応座標の垂直方向に対する最大移動量となるように設定しておいたことで、ＳＤＲＡＭ２０からの補正前画像Ｐ１のデータの読み出し処理が効率化されるので、システム全体の処理負荷を軽減し、処理速度を高速化できる。特に、樽型あるいは糸巻き型の歪曲収差による歪みなど、画像内の所定位置を基準として歪み量が変化する場合の歪み補正において、その処理効率を高めるために好適である。【００５９】
なお、上記の歪み補正処理機能は、コンピュータによって実現することができる。その場合には、上記画像処理装置や撮像装置が有すべき機能の処理内容を記述したプログラムが提供される。そして、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。【００６０】
プログラムを流通させる場合には、例えば、そのプログラムが記録された光ディスクなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、そのプログラムを、サーバコンピュータからネットワークを介して他のコンピュータに転送することもできる。【００６１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。【００６２】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【００６３】
１  記憶部
２  座標出力部
３  画素データ出力部
４  画素データ演算部
ＢＬ  矩形ブロック
Ｐ１  補正前画像
Ｐ２  補正後画像
【図１】
2008139577.tif 000003
【図２】
2008139577.tif 000004
【図３】
2008139577.tif 000005
【図４】
2008139577.tif 000006
【図５】
2008139577.tif 000007
【図６】
2008139577.tif 000008
【国際調査報告】
2008139577.tif 000009
2008139577.tif 000010