(57)【要約】【課題】歪み補正の処理時間を低減することができる、画像処理装置、及び歪み補正係数算出方法を提供する。【解決手段】入力画素の位置を変換関数により出力画像における第１の画素位置に変換する書き込み画素位置計算部１２と、出力画像における第１の画素位置の近傍の出力画素の位置を変換関数の逆関数により入力画像における第２の画素位置に変換する読み出し画素位置計算部１３と、第２の画素位置の画素値を入力画像における周囲の画素からの補間により算出する画素補間部１６と、変換関数と逆関数とを生成するパラメータ算出部１５ａとを備えている。【選択図】図３
2020149473.tif 000002
【特許請求の範囲】
【請求項１】
入力画像における入力画素の位置を、第１の画素位置計算により、所定の演算精度で出力画像における第１の画素位置に変換する、第１の計算部と、
前記出力画像における第１の画素位置の近傍の出力画素の位置を、第２の画素位置計算により、前記所定の演算精度で前記入力画像における第２の画素位置に変換する、第２の計算部と、
前記第２の画素位置の画素値を、前記入力画像における周囲の画素からの補間により算出する画素補間部と、
前記第１の画素位置計算に用いる変換関数と、前記第２の画素位置計算に用いる前記変換関数の逆関数とを生成する、画素位置計算関数生成部と、を備える画像処理装置。
【請求項２】
前記画素位置計算関数生成部は、前記変換関数と前記逆関数との誤差が最小となるように、前記変換関数と前記逆関数とを生成することを特徴とする、請求項１に記載の画像処理装置。
【請求項３】
前記画素位置計算関数生成部は、前記入力画素の位置と前記第１の画素位置との対応関係が既知であるデータ群に関数をフィッティングさせることにより第１の関数を生成し、前記第１の関数を用いて前記所定の演算精度で前記入力画素の位置を前記第１の画素位置に変換し、前記第１の画素位置から前記入力画素の位置に関数をフィッティングさせることにより第２の関数を生成し、前記第２の関数を用いて前記所定の演算精度で前記第１の画素位置を前記入力画像における第３の画素位置に変換し、前記入力画素の位置と前記第３の画素位置との距離が小さくなるように前記第１の関数と前記第２の関数とを調整し、調整後の前記第１の関数を前記変換関数とし、調整後の前記第２の関数を前記逆関数とすることを特徴とする、請求項１又は請求項２に記載の画像処理装置。
【請求項４】
前記第１の関数は、第１の次数の多項式であり、前記第２の関数は、第２の次数の多項式であり、前記画素位置計算関数生成部は、前記第１の次数と前記第２の次数の少なくとも一方の次数を変動させて、前記入力画素の位置と前記第３の画素位置との距離が最も小さくなるような前記第１の次数と前記第２の次数とを算出することを特徴とする、請求項３に記載の画像処理装置。
【請求項５】
前記画素位置計算関数生成部は、前記入力画像の画素範囲に基づき、前記第１の関数の生成のためのフィッティングに用いるデータを前記データ群から抽出することを特徴とする、請求項３又は請求項４に記載の画像処理装置。
【請求項６】
前記画素位置計算関数生成部は、前記出力画像の画素範囲に基づき、前記第１の関数の生成のためのフィッティングに用いるデータを前記データ群から抽出することを特徴とする、請求項３乃至請求項５のいずれか一項に記載の画像処理装置。
【請求項７】
歪み画素の位置と理想画素の位置との対応関係が既知であるデータ群に関数をフィッティングさせることにより第１の関数を生成し、
前記第１の関数を用いて所定の演算精度で第１の画素の位置を第２の画素の位置に変換し、
前記第２の画素の位置から前記歪み画素の位置に関数をフィッティングさせることにより第２の関数を生成し、
前記第２の関数を用いて前記所定の演算精度で前記第２の画素の位置を第３の画素位置に変換し、
前記第１の画素の位置と前記第３の画素位置との距離が小さくなるように前記第１の関数と前記第２の関数の係数を決定することを特徴とする、歪み補正係数算出方法。
【請求項８】
前記第１の関数は、第１の次数の多項式であり、前記第２の関数は、第２の次数の多項式であり、前記第１の次数と前記第２の次数の少なくとも一方の次数を変動させて、前記入力画素の位置と前記第３の画素位置との距離が最も小さくなるような前記第１の次数と前記第２の次数とを算出することを特徴とする、請求項７に記載の歪み補正係数算出方法。
【請求項９】
前記第１の関数を用いて変換を行う前記第１の画素の位置の範囲に基づき、前記第１の関数の生成のためのフィッティングに用いるデータを前記データ群から抽出することを特徴とする、請求項７又は請求項８に記載の歪み補正係数算出方法。
【請求項１０】
前記第２の関数を用いて変換を行う前記第２の画素の位置の範囲に基づき、前記第１の関数の生成のためのフィッティングに用いるデータを前記データ群から抽出することを特徴とする、請求項７乃至請求項９のいずれか一項に記載の歪み補正係数算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、画像処理装置、及び、歪み補正係数算出方法に関する。
【背景技術】
【０００２】
一般的に、デジタルカメラ等の撮像装置で被写体を撮像して得られた画像は、撮像レンズ等の光学系が有する歪曲収差や倍率色収差の影響を受ける。そこで、近年では、光学系で生じる歪みを、画像に対して電気的に補正する画像処理装置が用いられている。
【０００３】
ラスタスキャン順に入力される入力画素を、この順に電気的に補正処理を行って出力画素位置を算出する画像処理装置が提案されている。このような画像処理装置においては、歪みを有する入力画像の画素位置（歪み位置）から、歪みのない出力画像の画素位置（理想位置）を、変換関数を用いて算出する。そして、当該変換関数の逆関数を用いて、算出した理想位置から歪み位置を算出する。この場合、理想位置を計算する変換関数と、歪み位置を計算する逆関数との誤差が大きいと、歪み補正に要する処理時間が増加してしまうという問題がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１６５１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、歪み補正の処理時間を低減することができる、画像処理装置、及び歪み補正係数算出方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本実施形態の画像処理装置は、入力画像における入力画素の位置を、第１の画素位置計算により、所定の演算精度で出力画像における第１の画素位置に変換する、第１の計算部を備える。また、前記出力画像における第１の画素位置の近傍の出力画素の位置を、第２の画素位置計算により、前記所定の演算精度で前記入力画像における第２の画素位置に変換する、第２の計算部も備える。更に、前記第２の画素位置の画素値を、前記入力画像における周囲の画素からの補間により算出する画素補間部と、前記第１の画素位置計算に用いる変換関数と、前記第２の画素位置計算に用いる前記変換関数の逆関数とを生成する、画素位置計算関数生成部とも備える。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態に係わる画像処理装置の構成を説明する概略ブロック図。
【図２Ａ】樽型歪曲収差を有する画像の一例を説明する図。
【図２Ｂ】歪曲収差補正後の画像の一例を説明する図。
【図３】図１中の歪補正回路の構成の一例を説明する概略ブロック図。
【図４】入力画像の画素と出力画像の画素の対応関係を説明する図。
【図５】歪み補正処理を説明するフローチャート。
【図６】第１の実施形態における歪み補正係数算出処理を説明するフローチャート。
【図７】第２の実施形態におけるフィッティングデータ範囲絞り込み処理を説明するフローチャート。
【図８】入力画像と出力画像の画素領域を説明する図。
【図９Ａ】ディストーションデータの一例を説明する図。
【図９Ｂ】図９Ａに示すディストーションデータに基づき作成されたフィッティング仮データの一例を説明する図。
【図９Ｃ】図９Ｂに示すフィッティング仮データに基づき作成されたフィッティングデータの一例を説明する図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して実施形態を説明する。
（第１の実施形態）
図１は、本発明の第１の実施形態に係わる画像処理装置の構成を説明する概略ブロック図である。カメラによって取得した画像を、自動車の衝突防止や監視装置等に利用する場合等においては、その目的から超広角レンズが採用されることがあり、歪曲収差や倍率色収差が大きくなる傾向がある。図１の画像処理装置は、歪曲収差や倍率色収差によって画像に生じた歪みを、画像処理によって電気的に補正するものである。
【０００９】
図２Ａは、樽型歪曲収差を有する画像の一例を説明する図であり、図２Ｂは、歪曲収差補正後の画像の一例を説明する図である。広角レンズを用いて撮影した場合、図２Ａに示すように、画面周辺部の直線が外側に向かって広がって曲がり、画面中央から外側に向かって膨らんだように見える。図１に示す画像処理装置を用いて図２Ａに示す画像の歪曲収差を電気的に補正することにより、図２Ｂに示すような歪みのない画像に変換することができる。
【００１０】
図１に示す画像処理装置は、ＣＰＵ２５を備えている。ＣＰＵ２５は図示しないメモリに記憶されたプログラムに従って動作し、各部を制御するようになされている。撮像部２２は、ＣＭＯＳセンサ等の図示しない撮像素子を備えている。撮像部２２は、図示しない光学系を介して入射した光学像を撮像素子によって光電変換することで、撮像信号（雪像画像）を取得する。撮像部２２の出力（撮像画像）は、画像処理装置２１に与えられ、歪み補正された後、バス２３を介してＤＲＡＭ２４に与えられて記憶される。撮像部２２から出力される撮像画像は、光学系の歪曲収差等による歪みを有しており、画像処理装置２１は、歪曲収差の補正などの各種画像処理を行う。
【００１１】
撮像部２２からのラスタスキャン順の撮像出力は、画像処理装置２１を構成する歪補正回路１に入力される。
【００１２】
歪補正回路１は、メモリ４に記憶されたパラメータを用いて、入力された撮像画像に対して歪み補正を行ってポスト処理回路２に出力する。
【００１３】
ポスト処理回路２は、入力された画像に対してガンマ補正及び色空間補正等を行った後、バッファ回路３に出力する。
【００１４】
バッファ回路３は、入力された画像を一時保持した後、バス２３を介してＤＲＡＭ２４に出力する。こうしてＤＲＡＭ２４には、歪み補正された画像が記憶される。
【００１５】
図３は、図１中の歪補正回路１の構成の一例を説明する概略ブロック図である。歪補正回路１は、ラインバッファ１１と、書き込み画素位置計算部１２と、読み出し画素位置計算部１３と、書き込み画素位置判定部１４と、パラメータ格納部１５と、画素補間部１６とから主に構成されている。
【００１６】
ラインバッファ１１は、撮像装置からラスタスキャン順に読み込まれる入力画像の画素（入力画素）を、補正処理に必要なライン数だけ保持する。例えば、バイリニア補間を用いて歪曲収差の補正を行う場合、１〜２ライン分の画素を保持する。
【００１７】
書き込み画素位置計算部１２は、ラインバッファ１１にラスタスキャン順に読み込まれた入力画素のうち、補正対象の画素（以下、読み出し画素Piと示す）を抽出する。そして、読み出し画素Piを用いて補間した画素が含まれると推定される、書き込み画素領域を算出する。具体的には、読み出し画素Piの位置（vo, ho）（以下、画素Pi（vo, ho）と示す）を含む、周辺４点の画素｛Pi0（vo, ho）、Pi1（vo, ho-1）、Pi2（vo-1, ho-1）、Pi3（vo-1, ho）｝からなる読み出し画素位置集合を定義する。なお、本説明において、画素位置座標（v, h）は、画像左上を原点(0, 0)として、vを垂直画素位置、hを水平画素位置としている。
【００１８】
図４は、入力画像の画素と出力画像の画素の対応関係を説明する図である。図４に示すように、読み出し画素Pi0、Pi1、Pi2、Pi3のそれぞれについて、画素位置計算の変換関数を用い、対応する書き込み画素Po0、Po1、Po2、Po3の位置（vo’, ho’）、（vo’, ho-1’）、（vo-1’, ho-1’）、（vo-1’, ho’）を算出する。４点の画素Po0（vo’, ho’）、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）を頂点とする矩形領域が、出力画像における書き込み画素領域となる。
【００１９】
画素位置計算には、例えば、多項式で表現される関数や、グリッドテーブル変換など、一般的な画素位置計算用の変換関数を用いることができる。ただし、変換関数は、逆関数が存在するものを用いる。
【００２０】
読み出し画素位置計算部１３は、書き込み画素領域内において、垂直位置、水平位置ともに整数となる画素の位置（書き込み画素候補Poc（v’, h’））を抽出する。そして、書き込み画素候補Poc（v’, h’）に対応する読み出し画素Pi（v”, h”）を、画素位置計算を行って算出する。なお、画素位置計算は、書き込み画素位置計算部１２の画素位置計算に用いた変換関数の逆関数を用いて行う。候補が複数ある場合は、全ての候補Poc（v’, h’）に対して読み出し画素Pi（v”, h”）を算出する。
【００２１】
書き込み画素位置判定部１４は、読み出し画素Pi（v”, h”）が読み出し画素位置集合に含まれている場合、当該画素Pi（v”, h”）に対する書き込み画素候補Poc（v’, h’）を、書き込み画素Po（v’, h’）として確定する。
【００２２】
画素位置計算関数生成部としてのパラメータ算出部１５ａは、書き込み画素位置計算部１２の画素位置計算に用いる変換関数のパラメータを算出する。また、パラメータ算出部１５ａは、読み出し画素位置計算部１３の画素位置計算関数に用いる逆関数のパラメータを算出する。更に、パラメータ算出部１５ａは、画素位置計算に用いる変換関数の次数と、逆関数の次数とを算出する。算出されたこれらのパラメータ及び次数は、パラメータ格納部１５に格納される。
【００２３】
画素補間部１６は、確定した書き込み画素Po（v’, h’）に対応する読み出し画素Pi（v”, h”）の画素値を算出する。通常、読み出し画素Pi（v”, h”）の座標は非整数であるので、例えば周辺の４画素を用いたバイリニア補間など、既存の補間手法を用いて画素値を算出する。書き込み画素Po（v’, h’）の画素値として、算出した画素値を出力する。出力された画素値は、DRAMなどのメモリ（図示せず）に格納される。なお、出力画素は補正を行った順に出力するため、出力画素の位置はランダムとなる。
【００２４】
次に、歪補正回路１における歪み補正処理の手順を説明する。図５は、第１の実施形態における歪み補正処理を説明するフローチャートである。
【００２５】
まず、ラスタスキャン順に歪補正回路１に入力された画素を、ラインバッファ１１に拡充する（Ｓ１）。ラインバッファ１１には、画素補間部１６での処理に必要なライン数分、入力画素を格納する。例えば、バイリニア補間を用いる場合、補間対象画素の周辺２×２画素（４画素）の画素値が必要となるため、少なくとも１ライン＋１画素分の画素値を格納する。
【００２６】
次に、補正対象画素である読み出し画素Pi（vo, ho）を特定し、読み出し画素Piを用いて補間した画素が含まれると推定される、書き込み画素領域を算出する（Ｓ２）。具体的には、まず、読み出し画素Pi（vo, ho）を含む周囲４点の画素｛Pi0（vo, ho）、Pi1（vo, ho-1）、Pi2（vo-1, ho-1）、Pi3（vo-1, ho）｝からなる集合を定義する。すなわち、Pi1（vo, ho-1）は、Pi（vo, ho）の左隣の画素、Pi2（vo-1, ho-1）はPi（vo, ho）の左上の画素、Pi3（vo-1, ho）はPi（vo, ho）の上の画素である。次に、画素Pi0、Pi1、Pi2、Pi3のそれぞれについて、画素位置計算を行い、対応する書き込み画素Po0（vo’, ho’）、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）を算出する。
【００２７】
画素位置計算は、例えば、多項式で表現される関数を用いる場合、次の手順で行う。
【００２８】
（ａ）像高の算出：入力画素の位置を、左上を原点とする（v, h）の座標系から、光学中心を原点とする(x, y)の座標系に変換する。なお、両座標系とも、水平方向は右側を正とし、垂直方向は下側を正とする。また、光学中心から入力画素までの距離（像高）rを算出する。以下に示す（１）〜（３）式を用いて行う。
2020149473.tif 000003
【００２９】
（１）式において、vin は、垂直方向の入力画素位置（非負数）、[SENSOR_CROP_OFS_V]は、光学中心からの垂直画素位置オフセット（光学中心と、（v, h）座標系の原点との間の、垂直方向のオフセット）とする。また、（２）式において、hinは、水平方向の入力画素位置（非負数）、[SENSOR_CROP_OFS_H]は、光学中心からの水平画素位置オフセット（光学中心と、（v, h）座標系の原点との間の、水平方向のオフセット）とする。また、（３）式において、[NORM_SCALE]は正規化係数（非負数）とする。
【００３０】
なお、画像中心と光学中心とが一致する場合、[SENSOR_CROP_OFS_V]、[SENSOR_CROP_OFS_H]は、以下の（４）（５）式となる。
【００３１】
[SENSOR_CROP_OFS_V] = −(入力画像垂直サイズ/2 − 0.5)          …（４）式
[SENSOR_CROP_OFS_ H] = −(入力画像水平サイズ/2 − 0.5)          …（５）式
（ｂ）画素位置計算の像高スケールの算出：光学中心から距離rにある点が、画素位置変換によって光学中心方向に移動する距離r_scaleを算出する。以下に示す（６）式を用いて行う。
2020149473.tif 000004
【００３２】
（６）式において、Px（x = 0〜10 ）は、それぞれの次数に応じた多項式係数（変換関数のパラメータ）とする。
【００３３】
すなわち、歪み位置である光学中心から距離rにある点を、歪みを補正した理想位置に変換する関数f（r）は、以下の（６´）式のように表すことができる。
2020149473.tif 000005
【００３４】
（ｃ）出力画素位置の算出：像高スケールを用いて入力画素位置を出力画素位置に変換し、（v, h）の座標系に戻す。以下に示す（７）（８）式を用いて行う。
【００３５】
vout = r_scale * y − [SENSOR_CROP_OFS_V]                        …（７）式
hout = r_scale*x − [SENSOR_CROP_OFS_ H]                       …（８）式
（７）式において、voutは垂直方向の出力画素位置（非負数）、（８）式において、houtは水平方向の出力画素位置（非負数）とする。
【００３６】
すなわち、（ａ）から（ｃ）の一連の手順により、読み出し画素Pi（vo, ho）、Pi1（vo, ho-1）、Pi2（vo-1, ho-1）、Pi3（vo-1, ho）が、それぞれ、書き込み画素Po0（vo’, ho’） 、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）に変換される。
【００３７】
なお、画素位置計算として、上述のような多項式で表現される関数を用いる場合、[SENSOR_CROP_OFS_V]、[SENSOR_CROP_OFS_H]、[NORM_SCALE]の各パラメータは予め設定されており、パラメータ格納部１５に格納されているものとする。また、Px（x = 0〜10 ）の各パラメータは、パラメータ算出部１５ａにより事前に算出され、パラメータ格納部１５に格納されているものとする。また、（６）式、（６´）式に示す多項式の次数は、パラメータ算出部１５ａにより事前に算出され、パラメータ格納部１５に格納されているものとする。
【００３８】
画素位置計算により算出された、４点の画素Po0（vo’, ho’） 、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）を頂点とする矩形領域が、書き込み画素領域として特定される。
【００３９】
次に、上記特定された矩形領域内において、垂直座標、及び、水平座標が共に整数となる画素位置（書き込み画素候補Poc（v’, h’））を抽出する。例えば、画素Po0（vo’, ho’） 、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）の各座標を、繰り上げ、または、繰り下げにより調整・整数化し、得られた画素位置に外接する矩形領域内のすべての画素位置を、書き込み画素候補Poc（v’, h’）とする（Ｓ３）。繰り上げ、または、繰り下げによる調整・整数化は、以下に示す（２１）（２２）式を用いて行う。なお、４点の画素の各座標うち、書き込み画素領域として特定された矩形領域の左辺となる水平座標、及び、上辺となる垂直座標については、（２１）式を用い、右辺となる水平座標、及び、下辺となる垂直座標については、（２２）式を用いる。すなわち、水平座標vo-1’、及び、垂直座標ho-1’については（２１）式を用いて繰り下げを行い、水平座標vo’、及び、垂直座標ho’については（２２）式を用いて繰り上げを行う。
【００４０】
調整後画素座標 = [書き込み画素座標 − WRITE_AREA_DELTA]      …（２１）式
調整後画素座標 = [書き込み画素座標 + WRITE_AREA_DELTA]      …（２２）式
（２１）（２２）式において、WRITE_AREA_DELTAは整数化調整値であり、予め設定された値である。また、[]はガウス記号を表す。
【００４１】
続いて、Ｓ３で求めたすべての書き込み画素候補Poc（v’, h’）に対し、書き込み画素Po（v’, h’）であるか否かの判定を行う。判定をまだ行っていない書き込み画素候補Poc（v’, h’）がある場合（Ｓ４、Ｎｏ）、画素位置計算により、対応する読み出し画素Pi（v”, h”）を算出する（Ｓ５）。画素位置計算は、Ｓ２で用いた画素位置計算の逆関数を用いて行う。なお、逆関数における多項式係数（逆関数のパラメータ）は、パラメータ算出部１５ａにより事前に算出され、パラメータ格納部１５に格納されているものとする。また、逆関数の多項式の次数も、パラメータ算出部１５ａにより事前に算出され、パラメータ格納部１５に格納されているものとする。算出されたPi（v”, h”）の垂直座標、水平座標は、非整数となる。
【００４２】
次に、Pi（v”, h”）の画素値を補間によって算出するために必要な画素を特定する。例えば、バイリニア補間によって画素値を算出する場合、Pi（v”, h”）の周囲４点の画素が補間に必要な画素となる。補間に必要なすべての画素が、集合に含まれている場合、当該読み出し画素Pi（v”, h”）に対応する書き込み画素候補Poc（v’, h’）を、書き込み画素Po（v’, h’）と確定する（Ｓ６、Ｙｅｓ）。
【００４３】
この場合、確定した書き込み画素Po（v’, h’）の画素値を、対応する読み出し画素Pi（v”, h”）の画素値を画素補間によって算出して出力する（Ｓ７）。なお、出力画素Po（v’, h’）は、ラスタスキャン順でなくランダムとなる。続いてＳ４に戻り、未判定の書き込み画素候補Poc（v’, h’）の有無を調べる。
【００４４】
一方、補間に必要な画素のうち、集合に含まれていない画素が存在する場合、当該読み出し画素Pi（v”, h”）に対応する書き込み画素候補Poc（v’, h’）は、書き込み画素Po（v’, h’）でないと確定する（Ｓ６、Ｎｏ）。この場合、画素補間は行わずに、Ｓ４に戻って、未判定の書き込み画素候補Poc（v’, h’）の有無を調べる。
【００４５】
Ｓ４において、Ｓ３で求めたすべての書き込み画素候補Poc（v’, h’）について、判定が行われている場合、画像補正処理の一連の手順を終了する。
【００４６】
次に、パラメータ算出部１５ａにおける、変換関数f（r）の多項式係数及び次数、及び、逆関数f-1（r）の多項式係数及び次数の算出手順を説明する。なお、変換関数は、歪み位置を理想位置に補正する関数（歪み補正関数）であるので、以下の説明においては、多項式係数を歪み補正係数と示す。図６は、第１の実施形態における歪み補正係数算出処理を説明するフローチャートである。本手順では、回路の演算精度を踏まえ、変換関数の最適な次数と、各次数に応じた歪み補正係数を算出し、また、変換関数の最適な次数と、各次数に応じた歪み補正係数を算出する。
【００４７】
まず、歪み補正関数f（r）の最適次数を探索する範囲を設定する（Ｓ１１）。通常、画素位置変換に用いる歪み補正関数f（r）と逆関数f-1（r）は、次数が高いほうが変換誤差は小さくなる。しかし、回路の演算精度の問題で変換関数の演算精度誤差が生じるため、最大次数が最も変換誤差が小さくなるとは限らない。従って、本実施形態では、歪み補正関数f（r）と逆関数f-1（r）のそれぞれについて、変換誤差が最も小さくなる次数を探索する。
【００４８】
一般的な多項式を用いた歪み補正関数の次数は１０次程度であるので、例えば、探索範囲の最大値（n_max）は１０とし、最小値（n_min）は０とする。この場合、以下の手順において、０次から１０次までの間で歪み補正関数f（r）の最適な次数を探索する。次に、歪み補正関数f（r）に関し、最初に探索を行う次数を設定する（Ｓ１２）。例えば、探索範囲のうち、低い次数から探索を開始し、高い次数に向かって探索を行う場合、探索を行う次数（探索次数、n_d）として探索範囲の最小値（n_min）をセットする。
【００４９】
次に、歪み補正関数の逆関数f-1（r）の最適次数を探索する範囲を設定する（Ｓ１３）。探索範囲の最大値（j_max）と最小値（j_min）は、歪み補正関数f（r）の次数の探索範囲と必ずしも同じ値に設定する必要はない。例えば、探索範囲の最大値（j_max）を１０とし、最小値（j_min）を０とした場合、以下の手順において、０次から１０次までの間で逆関数f-1（r）の最適な次数を探索する。
【００５０】
続いて、歪み補正関数の逆関数f-1（r）に関し、最初に探索を行う次数を設定する（Ｓ１４）。例えば、探索範囲のうち、低い次数から探索を開始し、高い次数に向かって探索を行う場合、探索を行う次数（探索次数、j_d）として探索範囲の最小値（j_min）をセットする。
【００５１】
次に、個々のレンズに固有なデータであり、光学系の設計から得られるレンズの歪み特性を表すデータであるディストーションデータを用い、歪み位置から理想位置へのフィッティングを行う（Ｓ１５）。具体的には、探索次数（n_d）で多項式フィッティングを行い、歪み補正関数f（r）を算出する。このとき、フィッティングは浮動小数点で実施する。なお、フィッティングには、最小二乗法などの既存のアルゴリズムを用いることができる。フィッティングが完了し、得られた多項式係数は、回路の演算精度で固定小数点化する。
【００５２】
続いて、Ｓ１５で固定小数点化した多項式係数を適用した歪み補正関数f（r）を用い、歪み位置から理想位置を算出する（Ｓ１６）。そして、固定小数点で算出された理想位置を、浮動小数点化する（Ｓ１７）。
【００５３】
次に、Ｓ１７で浮動小数点化された理想位置から元の歪み位置へのフィッティングを行う（Ｓ１８）。具体的には、探索次数（j_d）で多項式フィッティングを行い、歪み補正関数の逆関数f-1（r）を算出する。このとき、フィッティングは浮動小数点で実施する。なお、フィッティングには、最小二乗法などの既存のアルゴリズムを用いることができる。フィッティングが完了し、得られた多項式係数は、回路の演算精度で固定小数点化する。
【００５４】
続いて、Ｓ１８で固定小数点化した多項式係数を適用した歪み補正関数の逆関数f-1（r）を用い、理想位置から歪み位置を算出する（Ｓ１９）。続いて、Ｓ１９で算出された歪み位置と、Ｓ１６において歪み補正関数f（r）に入力した歪み位置との差を算出し、逆関数誤差とする（Ｓ２０）。
【００５５】
Ｓ２０で算出した逆関数誤差が、それまでに算出した逆関数誤差よりも小さい場合、（Ｓ２１、Ｙｅｓ）、Ｓ２０で算出した値で最小逆関数誤差値（min_diff）を更新する。また、探索次数（n_d）で歪み補正関数f（r）の最適次数（n_opt）を更新する。更に、探索次数（j_d）で歪み補正関数の逆関数f-1（r）の最適次数（j_ opt）を更新する（Ｓ２２）。これらの３つの値を更新した後、Ｓ２３に進む。
【００５６】
一方、Ｓ２０で算出した逆関数誤差が、それまでに算出した逆関数誤差よりも小さい場合、（Ｓ２１、Ｎｏ）、Ｓ２３に進み、歪み補正関数の逆関数f-1（r）の探索次数（j_d）が探索範囲の最大値（j_max）であるか否かを判定する（Ｓ２３）。探索次数（j_d）が、探索範囲の最大値（j_max）でない場合（Ｓ２３、Ｎｏ）、探索次数（j_d）を１増加させた後（Ｓ２４）、Ｓ１５からＳ２２の一連の手順を繰り返す。
【００５７】
歪み補正関数の逆関数f-1（r）の探索次数（j_d）が、探索範囲の最大値（j_max）である場合（Ｓ２３、Ｙｅｓ）、歪み補正関数f（r）の探索次数（n_d）が探索範囲の最大値（n_max）であるか否かを判定する（Ｓ２５）。探索次数（n_d）が探索範囲の最大値（n_max）でない場合（Ｓ２５、Ｎｏ）、探索次数（n_d）を１増加させた後（Ｓ２６）、Ｓ１４からＳ２２の一連の手順を繰り返す。
【００５８】
歪み補正関数f（r）の探索次数（n_d）が、探索範囲の最大値（n_max）である場合（Ｓ２５、Ｙｅｓ）、歪み補正係数算出処理を終了する。すなわち、図６に示す一連の手順を終了した時点において、最適次数（n_opt）に設定されていた値が、歪み補正関数f（r）の最適な次数であり、最適次数（j_opt）に設定されていた値が、歪み補正関数の逆関数f-1（r）の最適な次数である。従って、探索次数（n_opt）で多項式フィッティングを行い算出された歪み補正関数f（r）の多項式係数と、探索次数（j_opt）で多項式フィッティングを行い算出された歪み補正関数の逆関数f-1（r）の多項式係数とが、パラメータ格納部１５に格納される。
【００５９】
このように、本実施形態によれば、パラメータ算出部１５ａにおいて、回路の演算制度を考慮して、歪み位置から理想位置に変換する関数と理想位置から歪み位置に変換する関数との逆関数誤差が最小になるパラメータ（次数、及び、多項式係数）を算出する。当該パラメータを用いた歪み補正関数f（r）や歪み補正関数の逆関数f-1（r）により画素位置変換を行なうことで、歪み補正に要する処理時間を低減することができる。
（第２の実施形態）
第１の実施形態の画像処理装置では、パラメータ算出部１５ａにおいて、光学系の設計から得られるディストーションデータを用いて、歪み位置から理想位置への歪み補正関数f（r）を求めるためのフィッティングを行なっていた。これに対し、第２の実施形態においては、ディストーションデータからフィッティングに用いるデータ（以下、フィッティングデータと示す）の絞り込みを行なった後にフィッティングを行なう点が異なっている。第２の実施形態の画像処理装置は、第１の実施形態と同様の構成である。以下、歪み補正係数算出の前に行なうフィッティングデータ範囲の絞り込み方法について説明する。なお、同じ構成要素や同じ処理については、同じ符号を付して説明を省略する。
【００６０】
図７は、第２の実施形態におけるフィッティングデータ範囲絞り込み処理を説明するフローチャートである。また、図８は、入力画像（歪み画像）と出力画像（理想画像）の画素領域を説明する図である。更に、図９Ａは、ディストーションデータの一例を説明する図、図９Ｂは、図９Ａに示すディストーションデータに基づき作成されたフィッティング仮データの一例を説明する図、図９Ｃは、図９Ｂに示すフィッティング仮データに基づき作成されたフィッティングデータの一例を説明する図である。なお、以下の説明において、理想画像は矩形画像で出力するものとする。
【００６１】
まず、歪み画像の画像サイズに合わせて、ディストーションデータから不要なデータを削除して、フィッティング仮データを作成する（Ｓ３１）。図８に示す歪み画像３１において、画像中心から一番遠い画素までの距離は、画像中心から矩形の頂点までの距離（r_real）である。従って、ディストーションデータから歪み位置r_realを含まれる範囲を抽出し、これ以外のデータを削除することにより、フィッティング仮データを作成する。
【００６２】
例えば、歪み画像３１の画像サイズが、縦方向が１９２０、横方向が１０８０である場合、歪み位置r_realは、｛（１９２０／２）＾２＋（１０８０／２）＾２｝＾（１／２）＝１１０１．４５となる。また、例えば、図９Ａに示すように、ディストーションデータは２００刻みで入力されているとする。すなわち、ディストーションデータは、歪み位置が、…、２００、４００、８００、１０００、１２００、１４００、…と、これに対応する理想位置データが入力されているとする。この場合、ディストーションデータにおいて歪み位置１１０１．４５を含むデータ範囲は、〜１２００までのデータとなる。従って、歪み位置１４００以降のデータを、ディストーションデータから削除する。
【００６３】
次に、Ｓ３１でデータ範囲が絞り込まれたディストーションデータ（フィッティング仮データ）を用いてフィッティングを行い、変換関数（歪み位置から理想位置への歪み補正関数f（r））を算出する（Ｓ３２）。続いて、Ｓ３２で算出された変換関数を用い、歪み位置r_realを補正した理想位置を算出する（Ｓ３３）。すなわち、歪み位置r_realと、これに対応する理想位置（Ｓ３３で算出された理想位置）とを補間生成し、フィッティング仮データに追加する。例えば、歪み位置r_real＝１１０１．４１を補正した理想位置が１４５１．１５である場合、フィッティング仮データは、歪み位置が、…、２００、４００、８００、１０００、１１０．４１、１２００、の各点と、これに対応する理想位置となる。
【００６４】
続いて、フィッティング仮データから、歪み位置r_realより大きな位置のデータを削除する（Ｓ３４）。上述の一例の場合、歪み位置１２００のデータをフィッティング仮データから削除する。
【００６５】
次に、Ｓ３４で範囲を絞り込んだフィッティング仮データを用いてフィッティングを行い、変換関数（歪み位置から理想位置への歪み補正関数f（r））を算出する（Ｓ３５）。続いて、Ｓ３５で算出した変換関数を用いて歪み画像３１を補正した理想画像３２から、出力画像３３の範囲を特定する。そして、出力画像３３において、画像中心から一番遠い画素までの距離（r_refc）を算出する。
【００６６】
出力画像３３は、理想画像２２に内接する矩形領域であるので、画像中心から出力画像３３である矩形領域の頂点までの距離（r_refc）は、次のようにして算出することができる。まず、歪み画像３１において、画像右端（または左端）の画素の位置を算出し、Ｓ３５で算出した変換関数を用いて理想位置に変換する。次に、歪み画像３１において、画像上端（または下端）の画素の位置を算出し、Ｓ３５で算出した変換関数を用いて理想位置に変換する。二つの理想位置のそれぞれについて、中心画素からの距離を算出した後、三平方の定理を適用して、出力画像３３である矩形領域の頂点までの距離（r_refc）を算出する。
【００６７】
続いて、Ｓ３５で算出された変換関数の逆関数を求め、逆関数を用いて理想位置r_refcの元となる歪み位置を算出する（Ｓ３６）。すなわち、理想位置r_refcと、これに対応する歪み位置（Ｓ３６で算出された歪み位置）とを補間生成し、フィッティング仮データに追加する。例えば、出力画像３３において、画像中心から一番遠い理想位置（r_refc）が１２３６．５４であり、これの元となる歪み位置が９１５．１２である場合、フィッティング仮データは、歪み位置が、…、２００、４００、８００、９１５．１２、１０００、１１０．４１、の各点と、これに対応する理想位置となる。
【００６８】
最後に、フィッティング仮データから、理想位置r_refcより大きな位置のデータを削除してフィッティングデータとし（Ｓ３７）、フィッティングデータ範囲の絞り込み処理を終了する。上述の一例の場合、歪み位置１０００と１１０．４１のデータをフィッティング仮データから削除し、フィッティングデータとする。
【００６９】
このように、本実施形態によれば、歪み位置から理想位置への歪み補正関数f（r）を求めるためのフィッティングを行う前に、画素位置変換に用いるデータ範囲外のフィッティングデータを削除することで、フィッティングの精度を向上させることができる。故に、歪み位置から理想位置に変換する関数と理想位置から歪み位置に変換する関数との逆関数誤差をより小さくすることができるので、歪み補正に要する処理時間を低減することができる。
【００７０】
なお、上述の説明では、理想画像に内接する矩形領域が出力画像であるものとして説明したが、出力画像の範囲や形状はこれに限定されない。従って、出力画像において画像中心から一番遠い画素までの距離（r_refc）を算出する方法も、出力画像の範囲や形状に応じた方法を用いる。
【００７１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、一例として示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７２】
１…歪み補正回路、１１…ラインバッファ、１２…書き込み画素位置計算部、１３…読み出し画素位置計算部、１４…書き込み画素位置判定部、１５…パラメータ格納部、パラメータ算出部、２１…画像処理装置、２２…撮像部、２３…バス、２４…ＤＲＡＭ、２５…ＣＰＵ、１６…画素補間部、３１…歪み画像、３２…理想画像、３３…出力画像、Pi…入力画素、Po…出力画素、Poc…出力画素候補
【図１】
2020149473.tif 000006
【図２Ａ】
2020149473.tif 000007
【図２Ｂ】
2020149473.tif 000008
【図３】
2020149473.tif 000009
【図４】
2020149473.tif 000010
【図５】
2020149473.tif 000011
【図６】
2020149473.tif 000012
【図７】
2020149473.tif 000013
【図８】
2020149473.tif 000014
【図９Ａ】
2020149473.tif 000015
【図９Ｂ】
2020149473.tif 000016
【図９Ｃ】
2020149473.tif 000017