(57)【要約】【課題】ラインバッファの搭載量を低減することができる、画像処理装置、及び画像処理方法を提供する。【解決手段】入力画像を構成する複数の入力画素がラスタスキャン順に入力される画像処理装置であって、入力画素の位置を出力画像における第１の画素位置に変換する、書き込み画素位置計算部１２と、出力画像における第１の画素位置の近傍の出力画素の位置を、入力画像における第２の画素位置に変換する、読み出し画素位置計算部１３と、第２の画素位置の画素値を、入力画像における周囲の画素からの補間により算出する画素補間部１６とを備えている。【選択図】図１
2018124968.tif 000002
【特許請求の範囲】
【請求項１】
入力画像を構成する複数の入力画素がラスタスキャン順に入力される画像処理装置であって、
前記入力画像における前記入力画素の位置を、第１の画素位置計算により、出力画像における第１の画素位置に変換する、第１の計算部と、
前記出力画像における第１の画素位置の近傍の出力画素の位置を、第２の画素位置計算により、前記入力画像における第２の画素位置に変換する、第２の計算部と、
前記第２の画素位置の画素値を、前記入力画像における周囲の画素からの補間により算出する画素補間部と、
を備える画像処理装置。
【請求項２】
前記入力画素を格納するラインバッファを更に備えることを特徴とする、請求項１に記載の画像処理装置。
【請求項３】
前記第１の画素位置計算は、多項式を用いた関数、または、グリッドテーブル変換、または、前記多項式を用いた関数と前記グリッドテーブル変換の組み合わせであること、
前記第２の画素位置計算は、前記第１の画素位置計算の逆関数を用いて行うこと、
を特徴とする、請求項１又は請求項２に記載の画像処理装置。
【請求項４】
前記入力画素は、複数の色画素を有し、
ひとつの前記色画素を用いて算出された、前記第１の画素位置、または、前記第２の画素位置を、他の前記色画素の前記第２の画素位置に変換する、第３の計算部を更に備えることを特徴とする、請求項１乃至請求項３のいずれか一項に記載の画像処理装置。
【請求項５】
入力画像を構成する入力画素をラスタスキャン順に入力し、
前記入力画素の位置を、画素位置計算により出力画像における第１の画素位置に変換し、
前記出力画像における前記第１の画素位置近傍の出力画素の位置を、前記画素位置計算の逆関数を用いて、前記第２の画素位置に変換し、
前記第２の画素位置の画素値を、前記入力画像における周囲の画素からの補間により算出し、
前記補間により画素値を算出した順に、前記第２の画素位置の画素値を出力することを特徴とする、画像処理方法。
【請求項６】
前記入力画像は、複数の色画素から構成されており、ひとつの前記色画素を用いて算出した、前記第１の画素位置、または、前記第２の画素位置を、他の前記色画素の前記第２の画素位置に変換することを特徴とする、請求項５に記載の画像処理方法。
【請求項７】
前記出力画像における第１の画素位置を、所定のスケール値を用いて前記出力画像のピラミッド画像における第３の画素位置に変換する、第４の計算部と、
前記ピラミッド画像における第３の画素位置の近傍の出力画素の位置を、前記所定のスケール値と前記第２の画素位置計算により、前記入力画像における第４の画素位置に変換する、第５の計算部と、を更に備え、
前記画素補間部は、前記第２の画素位置の画素値と、前記第４の画素位置の画素値とを、前記入力画像における周囲の画素からの補間により算出することを特徴とする、請求項１乃至請求項３のいずれか一項に記載の画像処理装置。
【請求項８】
前記第４の計算部は、複数の異なる前記スケール値に対応した前記第３の画素位置を算出し、前記第５の計算部は、複数の異なる前記スケール値に対応した前記第４の画素位置を算出することを特徴とする、請求項７に記載の画像処理装置。
【請求項９】
前記入力画素は、複数の色画素を有し、
ひとつの前記色画素を用いて算出された、前記第１の画素位置、または、前記第２の画素位置を、他の前記色画素の前記第２の画素位置に変換し、ひとつの前記色画素を用いて算出された、前記第３の画素位置、または、前記第４の画素位置を、他の前記色画素の前記第４の画素位置に変換する、第６の計算部を更に備えることを特徴とする、請求項７又は請求項８に記載の画像処理装置。
【請求項１０】
前記入力画素の位置を、画素位置計算により出力画像における第１の画素位置に変換した後に、前記第１の画素位置を、所定のスケール値を用いて前記出力画像のピラミッド画像における第３の画素位置に変換し、
前記ピラミッド画像における前記第３の画素位置近傍の出力画素の位置を、前記所定のスケール値と前記画素位置計算の逆関数を用いて、前記第４の画素位置に変換し、
前記第４の画素位置の画素値を、前記入力画像における周囲の画素からの補間により算出し、
前記補間により画素値を算出した順に、前記第４の画素位置の画素値を出力することを特徴とする、請求項５に記載の画像処理方法。
【請求項１１】
前記入力画像は、複数の色画素から構成されており、ひとつの前記色画素を用いて算出した、前記第１の画素位置、または、前記第２の画素位置を、他の前記色画素の前記第２の画素位置に変換し、ひとつの前記色画素を用いて算出した、前記第３の画素位置、または、前記第４の画素位置を、他の前記色画素の前記第４の画素位置に変換することを特徴とする、請求項１０に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、画像処理装置、及び、画像処理方法に関する。
【背景技術】
【０００２】
一般的に、デジタルカメラ等の撮像装置で被写体を撮像して得られた画像は、撮像レンズ等の光学系が有する歪曲収差や倍率色収差の影響を受ける。歪曲収差を抑制するためには、レンズの材質を工夫したり、非球面レンズを用いたりするが、設計や製造のコストが増大するという問題がある。また、倍率色収差を抑制するためには、屈折率の異なる素材のレンズの組を多数使用するためにレンズ数が多くなり、装置の大型化や製造コストが増大してしまうという問題がある。
【０００３】
そこで、近年では、これらの問題を解決するものとして、歪曲収差や倍率色収差によって画像に歪みなどが生じる場合、画像に対して電気的に、光学系で生じる歪みを補正する画像処理装置が用いられている。
【０００４】
従来の画像処理装置における電気的補正方法では、補正後の出力画素をラスタスキャン順に出力するため、出力画素位置から補正に必要な入力画素位置を計算していた。ところが、画像の歪みが大きい場合、出力画素位置と入力画素位置に大きなずれが生じる。従って、多数のラインバッファを用意して入力画素を保持しておく必要があるため、装置が大型化してしまう。また、一般的に、ラインバッファはＳＲＡＭで構成されるが、ＳＲＡＭは高価であるため、製造コストが高くなってしまうという問題がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２２９２００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本実施形態は、ラインバッファの搭載量を低減することができる、画像処理装置、及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本実施形態の画像処理装置は、入力画像を構成する複数の入力画素がラスタスキャン順に入力される画像処理装置であって、前記入力画像における前記入力画素の位置を、第１の画素位置計算により、出力画像における第１の画素位置に変換する、第１の計算部と、前記出力画像における第１の画素位置の近傍の出力画素の位置を、第２の画素位置計算により、前記入力画像における第２の画素位置に変換する、第２の計算部を備える。また、前記第２の画素位置の画素値を、前記入力画像における周囲の画素からの補間により算出する画素補間部も備える。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施形態に係わる画像処理装置の構成を説明する概略ブロック図。
【図２】第１の実施形態における画像補正処理を説明するフローチャート。
【図３】第２の実施形態における画像補正処理を説明するフローチャート。
【図４】第３の実施形態に係わる画像処理装置の構成を説明する概略ブロック図。
【図５】第３の実施形態における画像補正処理を説明するフローチャート。
【図６】第４の実施形態における画像補正処理を説明するフローチャート。
【発明を実施するための形態】
【０００９】
以下、図面を参照して実施形態を説明する。
（第１の実施形態）
図１は、本発明の第１の実施形態に係わる画像処理装置の概略ブロック図である。画像処理装置は、カメラなどの撮像装置（図示せず）で撮像された被写体の画像（以下、入力画像と示す）に対し、電気的な処理を施して、レンズの歪曲収差など光学系で生じる歪みを補正する。
【００１０】
画像処理装置１は、ラインバッファ１１と、書き込み画素位置計算部１２と、読み出し画素位置計算部１３と、書き込み画素位置判定部１４と、パラメータ格納部１５と、画素補間部１６とから主に構成されている。
【００１１】
ラインバッファ１１は、撮像装置からラスタスキャン順に読み込まれる入力画像の画素（入力画素）を、補正処理に必要なライン数だけ保持する。例えば、バイリニア補間を用いて歪曲収差の補正を行う場合、１〜２ライン分の画素を保持する。
【００１２】
第１の計算部としての書き込み画素位置計算部１２は、補正対象である読み出し画素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を算出する。以下に示す（１）〜（３）式を用いて行う。
2018124968.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を算出する。以下に示す（６）式を用いて行う。
【００２７】
r_scale = P0 + P1*r + P2 * r2 + P3*r3 + P4*r4 + P5*r5 + P6*r6 + P7*r7 + P8*r8 + P9*r9 + P10*r10                                                  …（６）式
（６）式において、Px（x = 0〜10 ）は、それぞれの次数に応じた多項式係数とする。
【００２８】
（ｃ）出力画素位置の算出：像高スケールを用いて入力画素位置を出力画素位置に変換し、（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 ）の各パラメータは予め設定されており、パラメータ格納部１５に格納されているものとする。
【００３２】
画素位置計算は、グリッドテーブル変換を用いて行うこともできる。グリッドテーブルとは、画素位置（v, h）をグリッドノードとした２次元のアドレステーブルである。各グリッドノードには、変換先の画素位置が格納されている。グリッドノードの間に位置する任意の画素位置に対応するアドレスは、近傍グリッドノードから補間することで算出する。画素位置計算としてグリッドテーブル変換を用いる場合、次の手順で行う。
【００３３】
（ｄ）参照グリッドノードの算出：参照グリッドノードとして、入力画素の左上に位置するグリッドノードを決定する。以下に示す（９）（１０）式を用いて行う。
【００３４】
ref_v = vin * GRID_PATCH_VSIZE_INV                              …（９）式
ref_h = hin * GRID_PATCH_HSIZE_INV                            …（１０）式
（９）式において、vin は、垂直方向の入力画素位置（非負数）、GRID_PATCH_VSIZE_INVは、垂直グリッドノード間距離の逆数とする。GRID_PATCH_VSIZE_INVは、以下の（１１）式を用いて算出する。
2018124968.tif 000004
【００３５】
（１１）式において、[SENSOR_CROP_VSIZE]は、入力画像垂直サイズ、[GRID_NODE_NUM_V]は、垂直グリッドノード数とする。
【００３６】
また、（１０）式において、hinは、水平方向の入力画素位置（非負数）、GRID_PATCH_HSIZE_INVは、水平グリッドノード間距離の逆数とする。GRID_PATCH_HSIZE_INVは、以下の（１２）式を用いて算出する。
2018124968.tif 000005
【００３７】
（１２）式において、[SENSOR_CROP_HSIZE]は、入力画像水平サイズ、[GRID_NODE_NUM_H]は、水平グリッドノード数とする。
【００３８】
（ｅ）重みの算出：入力画素位置から参照グリッドノードを含む周囲４点のグリッドノードに対する、垂直方向及び水平方向の距離の比に基づく重みを算出する。以下に示す（１３）（１４）式を用いて算出する。
【００３９】
weight_v = ref_v − [ref_v]                                     …（１３）式
weight_h = ref_h − [ref_h]                                     …（１４）式
（１３）（１４）式において、[]はガウス記号を表す。参照グリッドノードに関する垂直方向の重みは1−weight_vとなる。また、参照グリッドノードに関する水平方向の重みは、1−weight_hとなる。
【００４０】
（ｆ）出力画素位置の算出：参照グリッドノードを含む周囲４点のグリッドノードのテーブルと、入力画素位置に対する各グリッドノードの重みを用い、バイリニア補間によって、出力画素位置を算出する。
【００４１】
（ｆ−１）垂直方向の出力画素位置の算出
以下に示す（１５）〜（１７）式を用いて算出する。
【００４２】
v0out = table_v(ref_v, ref_h) * (1−weight_h) + table_v(ref_v, ref_h+1) * weight_h
…（１５）式
v1out = table_v(ref_v+1, ref_h) * (1−weight_h) + table_v(ref_v+1, ref_h+1) * weight_h
…（１６）式
vout = v0out * (1−weight_v) + v1out * weight_v                 …（１７）式
（１５）（１６）式において、table_v(v, h)は、垂直画素位置グリッドテーブルとする。また、（１７）式において、voutは、は垂直方向の出力画素位置（非負数）である。
【００４３】
（ｆ−２）水平方向の出力画素位置の算出
以下に示す（１８）〜（２０）式を用いて算出する。
【００４４】
h0out = table_ h (ref_v, ref_h) * (1−weight_h) + table_ h (ref_v, ref_h+1) * weight_h
…（１８）式
h1out = table_h(ref_v+1, ref_h) * (1−weight_h) 
+ table_h(ref_v+1, ref_h+1) * weight_h      …（１９）式
hout = h0out * (1−weight_h) + h1out * weight_v                   …（２０）式
（１８）（１９）式において、table_h(v, h)は、水平画素位置グリッドテーブルとする。また、（２０）式において、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_VSIZE]、[GRID_NODE_NUM_V]、[SENSOR_CROP_HSIZE]、[GRID_NODE_NUM_H]、table_v(v, h)、table_h(v, h)の各パラメータは予め設定されており、パラメータ格納部１５に格納されているものとする。
【００４７】
画素位置計算により算出された、４点の画素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’）とする（Ｓ３）。繰り上げ・繰り下げによる調整・整数化は、以下に示す（２１）（２２）式を用いて行う。なお、４点のうち、左側または上側に位置する画素については、（２１）式を用い、右側または下側に位置する画素については、（２２）式を用いる。
【００４９】
調整後画素位置 = [書き込み画素位置 − 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’）について、判定が行われている場合、画像補正処理の一連の手順を終了する。
【００５５】
このように、本実施形態によれば、撮像装置からラスタスキャン順に読み込まれる入力画素を、この順に補正処理を行う。従って、補正に必要な入力画素の範囲を１乃至数ライン程度で抑えることができるため、入力画素を格納するラインバッファ１１の搭載量を低減することができ、製造コストを抑制することができる。
【００５６】
なお、ラインバッファ１１の搭載量は、画素補間の手法に応じて設定される。例えば、バイリニア法を用いる場合、２ライン程度搭載すればよいが、バイキュービック法を用いる場合、４ライン程度搭載する必要がある。
【００５７】
また、読み出し画素から書き込み画素を算出する画素位置計算の方法は、上述の方法に限定されない。すなわち、逆関数が存在する方法であれば、任意の方法を用いることができる。また、複数の画素位置計算方法を組み合わせて用いてもよい。
（第２の実施形態）
第１の実施形態の画像処理装置では、レンズの歪曲収差の補正や単色の入力画像の補正を行っていた。これに対し、第２の実施形態においては、Ｒ、Ｂ、Ｇの３チャネルの色画像について、倍率色収差補正を行う点が異なっている。第２の実施形態の画像処理装置は、第１の実施形態と同様の構成である。以下、画像補正処理方法について説明する。なお、同じ構成要素や同じ処理については、同じ符号を付して説明を省略する。
【００５８】
図３は、第２の実施形態における画像補正処理を説明するフローチャートである。Ｇ，Ｂ、Ｒのそれぞれの色画素について、入力画素をラインバッファ１１に拡充する（Ｓ１）。まず、Ｇ画素の補正対象入力画素Pi_g（vo_g, ho_g）に関する読み出し画素位置集合を算出する。この集合について、周知の画素位置計算方法を適用することにより、書き込み画素領域を特定し（Ｓ２）、書き込み画素候補Poc（v’, h’）を抽出する（Ｓ３）。そして、Ｓ２で用いた画素位置計算の逆関数を用いて、Ｇ画素の読み出し画素Pi_g（vg”, hg”）を算出する（Ｓ５１）。
【００５９】
読み出し画素Pi_g（vg”, hg”）の画素値を補間により算出するために必要なすべての画素が、集合に含まれている場合、当該読み出し画素Pi_g（vg”, hg”）に対応する書き込み画素候補Poc（v’, h’）を、書き込み画素Po（v’, h’）と確定する（Ｓ６、Ｙｅｓ）。
【００６０】
続いて、周知の画素位置計算方法を適用することにより、Ｇ画素の読み出し画素Pi_g（vg”, hg”）からＢ、Ｒ画素の読み出し画素Pi_b（vb”, hb”）、Pi_r（vr”, hr”）をそれぞれ特定する（Ｓ５２）。なお、画素位置計算に用いるパラメータは、Ｇ画素からＢ画素を算出する際に用いるものと、Ｇ画素からＲ画素を算出する際に用いるものが、それぞれ予め設定されている。
【００６１】
最後に、Pi_g（vg”, hg”）、Pi_b（vb”, hb”）、Pi_r（vr”, hr”）のそれぞれについて、画素補間を行って画素値を算出し、書き込み画素Po（v’, h’）における画素値として出力する（Ｓ７）。すべての書き込み画素候補Poc（v’, h’）について、確定判定と画素補間による画素値算出が終了したら、一連の画素補正処理を終了する。
【００６２】
このように、本実施形態によれば、Ｒ、Ｂ、Ｇの３チャネルの色画像について、倍率色収差補正を行う際にも、撮像装置からラスタスキャン順に読み込まれる入力画素を、この順に補正処理を行う。従って、補正に必要な入力画素の範囲を数ライン程度で抑えることができるため、入力画素を格納するラインバッファ１１の搭載量を低減することができ、製造コストを抑制することができる。
【００６３】
なお、上述では、Ｂ、Ｒ画素の読み出し画素Pi_b（vb”, hb”）、Pi_r（vr”, hr”）は、Ｇ画素の読み出し画素Pi_g（vg”, hg”）から画素位置計算を用いて算出しているが、書き込み画素Po（v’, h’）から画素位置計算を用いて算出してもよい。
【００６４】
また、画素位置計算の方法は、逆関数が存在する方法であれば、任意の方法を用いることができる。更に、複数の画素位置計算方法を組み合わせて用いてもよい。例えば、多項式を用いた関数でレンズの歪曲収差の補正を行った後、グリッドテーブル変換を用いて色倍率収差の補正を行うなど、複数の補正を行うことが可能になる。
（第３の実施形態）
第１の実施形態の画像処理装置では、入力画像に対してレンズの歪曲収差の補正を行い、歪みを補正した画像を出力していた。これに対し、第３の実施形態においては、歪み補正処理時にピラミッド処理も行い、ピラミッド画像（解像度の異なる同一画像の集合）も生成する点が異なっている。
【００６５】
図４は、第３の実施形態に係わる画像処理装置の概略ブロック図である。なお、第１の実施形態の画像処理装置と同じ構成要素については、同じ符号を付して説明を省略する。
【００６６】
書き込み画素位置スケール部１２ａは、補正対象である読み出し画素Piを用いて補間した画素に、所定のスケールを乗じてピラミッド処理を施した画素が含まれると推定される、書き込み画素領域を算出する。具体的には、書き込み画素位置計算部１２において算出された、書き込み画素領域の頂点の画素Po0（vo’, ho’）、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）のそれぞれについて、所定のピラミッド画像を生成するためのスケールを乗ずる。これにより、ピラミッド画像における書き込み画素領域の頂点の画素Po0（vo_s’, ho_s’）、Po1（vo_s’, ho-1_s’）、Po2（vo-1_s’, ho-1_s’）、Po3（vo-1_s’, ho_s’）を算出する。
【００６７】
読み出し画素位置スケール部１３ａは、書き込み画素位置スケール部１２ａで算出した、ピラミッド画像の書き込み画素領域内において、垂直位置、水平位置ともに整数となる画素の位置（書き込み画素候補Poc（v_s’, h_s’））を抽出する。そして、所定のスケールの逆数を乗じ、等倍の出力画像における書き込み画素位置に変換する。書き込み画素候補Poc（v_s’, h_s’）に対応する読み出し画素Pi（v_s”, h_s”）を、画素位置計算を行って算出する。なお、画素位置計算は、書き込み画素位置計算部１２で行った画素位置計算の逆関数を用いて行う。候補が複数ある場合は、全ての候補Poc（v_s’, h_s’）に対して読み出し画素Pi（v_s”, h_s”）を算出する。
【００６８】
パラメータ格納部１５´は、書き込み画素位置計算部１２および読み出し画素位置計算部１３における画素位置計算関数に用いるパラメータ加え、生成するピラミッド画像のスケールが格納されている。なお、複数のスケールのピラミッド画像を生成する場合、それぞれの画像に対応する複数のスケールが格納されている。
【００６９】
次に、本実施形態における画像処理方法について説明する。図５は、第３の実施形態における画像補正処理を説明するフローチャートである。なお、第１の実施形態の画像処理方法と同じ処理については、同じ符号を付して説明を省略する。
【００７０】
まず、ラスタスキャン順に画像処理装置１´に入力された画素を、ラインバッファ１１に拡充する（Ｓ１）。次に、補正対象画素である読み出し画素Pi（vo, ho）を特定し、読み出し画素Piを用いて補間した画素が含まれると推定される、書き込み画素領域を算出する（Ｓ２）。画素位置計算は、多項式で表現される関数を用いてもよいし、グリッドテーブル変換を用いてもよい。また、多項式で表現される関数を用いて計算した結果に対してグリッドテーブル変換を更に用いてもよいし、グリッドテーブル変換により計算した結果に対して多項式で表現される関数を更に用いてもよい。
【００７１】
次に、所定のスケールのピラミッド画像に対応する書き込み画素領域を算出する（Ｓ２０）。画素位置計算に多項式で表現される関数を用いる場合、Ｓ２において算出された画素位置計算の像高スケール（r_scale）を用い、ピラミッド画像のスケールに応じて当該像高スケールを再スケールする。具体的には、以下に示す（２３）式を用いて行う。
【００７２】
r_scale_scaled = r_scale * scale                              …（２３）式
（２３）式において、scaleは、通常の歪み補正のみを行う出力画像に対するピラミッド画像のスケール値である。また、scaleの値は予め設定されており、パラメータ格納部１５´に格納されているものとする。通常、scaleの値は、0.5〜2程度の値が設定されている。
【００７３】
続いて、ピラミッド画像用にスケールされた像高スケールを、（７）（８）式を用いて（v, h）の座標系に戻す。ただし、（７）（８）式において、r_scaleにはr_scale_scaledを代入する。このようにして、読み出し画素Pi（vo, ho）、Pi1（vo, ho-1）、Pi2（vo-1, ho-1）、Pi3（vo-1, ho）が、それぞれ、書き込み画素Po0（vo_s’, ho_s’）、Po1（vo_s’, ho-1_s’）、Po2（vo-1_s’, ho-1_s’）、Po3（vo-1_s’, ho_s’）に変換される。
【００７４】
グリッドテーブル変換を用いて画素位置計算を行う場合、Ｓ２において算出された、書き込み画素Po0（vo’, ho’） 、Po1（vo’, ho-1’）、Po2（vo-1’, ho-1’）、Po3（vo-1’, ho’）について、水平方向の座標位置、及び、垂直方向の座標位置にピラミッド画像のスケールを乗ずる。具体的には、まず、（２４）（２５）式を用い、書き込み画素の位置を、左上を原点とする（v, h）の座標系から、光学中心を原点とする(x, y)の座標系に変換する。
【００７５】
x = hout + [SENSOR_CROP_OFS_ H]                                …（２４）式
y = vout + [SENSOR_CROP_OFS_ V]                                …（２５）式
変換後の座標位置に対し、ピラミッド画像のスケールを用いて再スケールする。具体的には、以下の（２６）（２７）式を用いて行う。
【００７６】
x_scaled = x * scale                                           …（２６）式
y_scaled = y * scale                                           …（２７）式
最後に、ピラミッド画像用にスケールされた座標位置を、左上を原点とする（v, h）の座標系に戻す。このようにして、読み出し画素Pi（vo, ho）、Pi1（vo, ho-1）、Pi2（vo-1, ho-1）、Pi3（vo-1, ho）が、それぞれ、書き込み画素Po0（vo_s’, ho_s’）、Po1（vo_s’, ho-1_s’）、Po2（vo-1_s’, ho-1_s’）、Po3（vo-1_s’, ho_s’）に変換される。
【００７７】
すなわち、画素位置計算として、多項式で表現される関数を用いる場合にも、グリッドテーブル変換を用いる場合にも、Ｓ２の計算結果や途中経過を用い、４点の画素Po0（vo_s’, ho_s’）、Po1（vo_s’, ho-1_s’）、Po2（vo-1_s’, ho-1_s’）、Po3（vo-1_s’, ho_s’）を頂点とする矩形領域が、ピラミッド画像の書き込み画素領域を特定することができる。
【００７８】
なお、複数のスケールのピラミッド画像を生成する場合、Ｓ２０を繰り返し実行し、それぞれのスケールに対応する書き込み画素領域を特定する。
【００７９】
次に、Ｓ２、及びＳ２０を実行することによって特定された各矩形領域（書き込み画素領域）内において、垂直座標、及び、水平座標が共に整数となる画素位置（書き込み画素候補Poc（v’, h’））を抽出する（Ｓ３）。続いて、Ｓ３で求めたすべての書き込み画素候補Poc（v’, h’）に対し、書き込み画素Po（v’, h’）であるか否かの判定を行う。判定をまだ行っていない書き込み画素候補Poc（v’, h’）がある場合（Ｓ４、Ｎｏ）、画素位置計算により、対応する読み出し画素Pi（v”, h”）を算出する（Ｓ５）。なお、Ｓ５では、Ｓ２において特定された書き込み画素領域に対応する書き込み画素候補について、対応する読み出し画素を算出する。
【００８０】
なお、Ｓ２０において特定された、ピラミッド画像用にスケールされた書き込み画素領域に対応する書き込み画素候補Poc（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’）について、判定が行われている場合、画像補正処理の一連の手順を終了する。
【００８５】
なお、Ｓ２において、歪み補正処理を施した等倍の出力画像における書き込み画素領域を算出後、ピラミッド画像の各スケールの手順は依存関係がないため、算出順序の並び替えや、並列実行が可能である。例えば、複数のスケールのピラミッド画像を生成する場合、Ｓ２０とＳ５０については、どちらのスケールを先に実施してもよい。また、等倍の出力画像を生成した後、Ｓ２の算出結果を用いてスケール画像を生成してもよい。
【００８６】
このように、本実施形態によれば、撮像装置からラスタスキャン順に読み込まれる入力画素を、この順に補正処理を行う。従って、補正に必要な入力画素の範囲を１乃至数ライン程度で抑えることができるため、入力画素を格納するラインバッファ１１の搭載量を低減することができ、製造コストを抑制することができる。
【００８７】
また、本実施形態によれば、歪み補正処理における画素位置計算時に、ピラミッド画像生成のための画素位置計算も含んで行う。従って、歪み補正処理後の画像に対してスケール処理を施してピラミッド画像を生成する場合に比べ、サンプリング補間処理回数が低減されるため、ピラミッド画像の画質劣化を抑制することができる。また、メモリに書き込まれた歪み補正処理後の画像を、ピラミッド画像生成用に読み出す必要がなくなるため、メモリへのアクセス時間を削減することができ、処理時間を低減することができる。
【００８８】
なお、読み出し画素から書き込み画素を算出する画素位置計算の方法は、上述の方法に限定されない。すなわち、逆関数が存在する方法であれば、任意の方法を用いることができる。また、複数の画素位置計算方法を組み合わせて用いてもよい。
（第４の実施形態）
第３の実施形態の画像処理装置では、レンズの歪曲収差の補正や単色の入力画像の補正を処理時にピラミッド画像を生成していた。これに対し、第４の実施形態においては、Ｒ、Ｂ、Ｇの３チャネルの色画像について、倍率色収差補正処理時にピラミッド画像を生成する点が異なっている。第４の実施形態の画像処理装置は、第３の実施形態と同様の構成である。以下、画像補正処理方法について説明する。なお、同じ構成要素や同じ処理については、同じ符号を付して説明を省略する。
【００８９】
図６は、第４の実施形態における画像補正処理を説明するフローチャートである。Ｇ，Ｂ、Ｒのそれぞれの色画素について、入力画素をラインバッファ１１に拡充する（Ｓ１）。まず、Ｇ画素の補正対象入力画素Pi_g（vo_g, ho_g）に関する読み出し画素位置集合を算出する。この集合について、周知の画素位置計算方法を適用することにより、書き込み画素領域を特定する（Ｓ２）。次に、所定のスケールのピラミッド画像に対応する書き込み画素領域を特定し（Ｓ２０）、Ｓ２及びＳ２０で特定した書き込み画素領域から書き込み画素候補Poc（v’, h’）を抽出する（Ｓ３）。
【００９０】
続いて、Ｓ３で求めたすべての書き込み画素候補Poc（v’, h’）に対し、書き込み画素Po（v’, h’）であるか否かの判定を行う。判定をまだ行っていない書き込み画素候補Poc（v’, h’）がある場合（Ｓ４、Ｎｏ）、画素位置計算により、Ｓ２で用いた画素位置計算の逆関数を用いて、Ｇ画素の読み出し画素Pi_g（vg”, hg”）を算出する（Ｓ５１）。なお、Ｓ５では、Ｓ２において特定された書き込み画素領域に対応する書き込み画素候補について、対応する読み出し画素を算出する。
【００９１】
なお、Ｓ２０において特定された、ピラミッド画像用にスケールされた書き込み画素領域に対応する書き込み画素候補Poc（v’, h’）については、Ｓ５において画素位置計算を行う前に、書き込み画素候補に対してＳ２０において用いたスケールの逆数を乗じ、等倍の出力画像における書き込み画素位置に変換する（Ｓ５１０）。次に、対応するＧ画素の読み出し画素Pi_g（vg”, hg”）を算出する（Ｓ５１）。
【００９２】
読み出し画素Pi_g（vg”, hg”）の画素値を補間により算出するために必要なすべての画素が、集合に含まれている場合、当該読み出し画素Pi_g（vg”, hg”）に対応する書き込み画素候補Poc（v’, h’）を、書き込み画素Po（v’, h’）と確定する（Ｓ６、Ｙｅｓ）。
【００９３】
続いて、周知の画素位置計算方法を適用することにより、Ｓ５１において算出されたＧ画素の読み出し画素Pi_g（vg”, hg”）から、Ｂ、Ｒ画素の読み出し画素Pi_b（vb”, hb”）、Pi_r（vr”, hr”）をそれぞれ特定する（Ｓ５２）。このとき、画素位置計算に用いるパラメータは、Ｇ画素からＢ画素を算出する際に用いるものと、Ｇ画素からＲ画素を算出する際に用いるものが、それぞれ予め設定されている。
【００９４】
なお、ピラミッド画像におけるＧ画素の読み出し画素Pi_g（vg”, hg”）については、Ｓ２０で用いた所定のスケールを用いてスケーリングを施した後（Ｓ５２０）、Ｂ、Ｒ画素の読み出し画素Pi_b（vb”, hb”）、Pi_r（vr”, hr”）をそれぞれ特定する（Ｓ５２）。
【００９５】
最後に、Pi_g（vg”, hg”）、Pi_b（vb”, hb”）、Pi_r（vr”, hr”）のそれぞれについて、画素補間を行って画素値を算出し、書き込み画素Po（v’, h’）における画素値として出力する（Ｓ７）。すべての書き込み画素候補Poc（v’, h’）について、確定判定と画素補間による画素値算出が終了したら、一連の画素補正処理を終了する。
【００９６】
なお、Ｓ２において、等倍の出力画像における書き込み画素領域を算出後、ピラミッド画像の各スケールの手順は依存関係がないため、算出順序の並び替えや、並列実行が可能である。例えば、複数のスケールのピラミッド画像を生成する場合、Ｓ２０とＳ５１０、Ｓ５２０については、どちらのスケールを先に実施してもよい。また、等倍の出力画像を生成した後、Ｓ２の算出結果を用いてスケール画像を生成してもよい。
【００９７】
このように、本実施形態によれば、Ｒ、Ｂ、Ｇの３チャネルの色画像について、倍率色収差補正を行う際にも、撮像装置からラスタスキャン順に読み込まれる入力画素を、この順に補正処理を行う。従って、補正に必要な入力画素の範囲を数ライン程度で抑えることができるため、入力画素を格納するラインバッファ１１の搭載量を低減することができ、製造コストを抑制することができる。
【００９８】
また、本実施形態によれば、倍率色収差補正における画素位置計算時に、ピラミッド画像生成のための画素位置計算も含んで行う。従って、補正処理後の画像に対してスケール処理を施してピラミッド画像を生成する場合に比べ、サンプリング補間処理回数が低減されるため、ピラミッド画像の画質劣化を抑制することができる。また、メモリに書き込まれた歪み補正処理後の画像を、ピラミッド画像生成用に読み出す必要がなくなるため、メモリへのアクセス時間を削減することができ、処理時間を低減することができる。
【００９９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、一例として示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１００】
１…画像処理装置、１１…ラインバッファ、１２…書き込み画素位置計算部、１３…読み出し画素位置計算部、１４…書き込み画素位置判定部、１５…パラメータ格納部、１６…画素補間部、Pi…入力画素、Po…出力画素、Poc…出力画素候補
【図１】
2018124968.tif 000006
【図２】
2018124968.tif 000007
【図３】
2018124968.tif 000008
【図４】
2018124968.tif 000009
【図５】
2018124968.tif 000010
【図６】
2018124968.tif 000011