(実施の形態1)
実施の形態1の概要を述べる。実施の形態1に係る画像処理装置は、光学レンズを介して撮像した画像を複数の小領域であるブロック画像に分割し、各ブロック画像に含まれる画素の像高から定まる光学歪み量が一定値を上回る画像ブロックについては、メモリに順次格納する画像データを圧縮し、メモリから読み出すときに圧縮された画像データを伸張する。光学歪み量が一定値以下の画像ブロックについては圧縮処理および伸張処理をしない。
図1は、実施の形態1に係る画像処理装置100の内部構造を模式的に示す図である。画像処理装置100は、光学系1と撮像素子4と画像前処理部6と備える画像取得部18、光学制御部2、歪み補正値記憶部3、歪み補正値取得部5、画像補正部7、メインメモリ10、画像後処理部14、記録部15、記録媒体16、および出力部17を含む。
光学系1はズーム機能を有したレンズである。光学系1は複数枚のレンズを含み、被写体からの光情報を結像して取得する。撮像素子4は、光学系1から取得した光情報を電気情報に変換する。撮像素子4は、例えばCMOS(Complementary metal Oxide Semiconductor)イメージセンサや、CCD(Charge Coupled Devices)イメージセンサなどを用いて実現できる。画像前処理部6は、撮像素子4が変換した電気情報をRGB各色の信号に変換する。画像前処理部6が変換する信号はRGB信号に限られず、例えばYUV信号であってもよい。
光学制御部2は、光学系1のレンズを制御する。光学制御部2はまた、撮像時における光学系1のズーム値を出力する。歪み補正値記憶部3は、光学系1のズーム値についての複数のサンプル値と、その時に撮像される像の歪みを補正するための「歪み補正値」(詳細は後述する)とを紐づけて記憶する。歪み補正値取得部5は、光学制御部2から取得した光学系1における撮像時のズーム値をもとに、歪み補正値記憶部3を参照して歪み補正値を取得する。歪み補正値記憶部3に撮像時のズーム値が格納されていない場合には、歪み補正値取得部5は、歪み補正値を補間計算により取得する。
画像補正部7は、画像前処理部6から取得した複数ライン分の画素の画像データと、歪み補正値取得部5から取得した歪み補正値とをもとに、光学歪みを補正した画像データを作成する。詳細は後述するが、画像補正部7は、画像前処理部6から取得した画像データをメインメモリ10に格納し、次いで歪み補正を実行する領域の画像(画素)をメインメモリ10から読み出して歪み補正を実行する。これらを実現するために、画像補正部7は、画像データ制御部8、画像データ圧縮部9、画像データ伸張部13、キャッシュメモリ12、および歪曲補正部11をさらに含む。
画像データ制御部8は、画像補正部7の各部を統括的に制御する。画像データ制御部8は、画像データ圧縮部9に画像データを圧縮させたり、画像データ伸張部に圧縮された画像データを伸張させたり、あるいは歪曲補正部11に画像データの歪み補正を実行させたりする。より具体的に、画像データ制御部8は、画像取得部18が取得した画像データを、画像データよりも小さな領域である複数のブロック領域に分割し、分割した各ブロック領域に含まれる画素の像高によって定まる光学歪みをもとに、そのブロック領域の画像データを圧縮するか否かを決定する。
ここで、「画素の像高」とは、画像データの画素の位置と、画像データにおける光学中心である光軸位置との距離である。通常、光軸位置は画像データの中心と一致するように設計されている。この場合、ある画素の像高は、その画素と画像中心との距離に対応する。しかしながら、例えば手ぶれ補正機能を用いて撮像した場合には、光軸位置と画素データの中心位置とが異なる場合も起こり得る。このような場合、ある画素の像高は、その画素と、画像データにおける光軸位置との距離となる。
詳細は後述するが、一般に画像上のある点における像高が定まれば、その点における光学歪みも一意に定まる。光学歪みが定まれば、その光学歪みを補正するための歪み補正値も定まる。画像データ制御部8は、ブロック領域における各画素位置と画像データにおける画素の像高とから定まる光学歪み補正量を求め、所定のしきい値Tを超える光学歪み補正量が1画素でも存在するか、1画素も存在しないか、を判定し、判定結果に基づいて、当該ブロック領域に対して後述するRGB信号の圧縮処理を実行するか否かを決定する。ここで「所定のしきい値」とは、あるブロック領域を圧縮するか否かを判断するための基準補正量であり、ブロック領域中の画素の像高から求まる光学歪みの補正量がこの基準補正量よりも大きい場合、その画素を含むブロック領域を圧縮する。「所定のしきい値」は、メインメモリ10の容量等を考慮してその初期値を実験により定めればよく、変更可能とすることが好ましい。
画像データ圧縮部9は、画像データ制御部8が圧縮することを決定したブロック領域の画像データを圧縮してメモリに格納して、圧縮画像データとしてメインメモリ10に格納する。画像データ圧縮部9は、画像データを圧縮しなくてもメインメモリ10に格納できるのであれば、画像データ圧縮部9は画像データを圧縮しないこともあり得る。したがって、本明細書において「画像データを圧縮する」とは、圧縮率が100%の場合、すなわち圧縮しない場合も含む。なお、本明細書において「圧縮率」とは、圧縮前のデータサイズに対する圧縮後のデータサイズの割合を百分率で表したものとする。
画像データ圧縮部9がブロック領域の画像データを圧縮してメインメモリ10に格納した場合、画像データ伸張部13は、圧縮画像データを伸張して、キャッシュメモリ12に格納する。より具体的には、画像データ制御部8が、画像データ圧縮部9にブロック領域の画像データを圧縮させてメインメモリ10に格納させた場合、メインメモリ10から読み出す補正用画素を画像データ伸張部13に伸張させる。
歪曲補正部11は、画像データ制御部8を介して歪み補正値取得部5から取得した歪み補正値をもとに、キャッシュメモリ12に格納された補正用画像データに含まれる光学歪みを補正する。補正用画像データに含まれる光学歪みの具体的な補正方法については後述する。
画像後処理部14は、画像補正部7が歪み補正処理をした画像データを記録媒体16に記録するための画像信号に変換する。記録部15は、画像後処理部14で変換された画像信号を記録媒体16に記録する。出力部17は、記録媒体16に記録した画像信号を読み出し図示しない表示部に出力する。
以下、歪曲補正部11による光学歪みの補正について説明する。
図2は光学レンズを通して撮像した場合の像の光学歪みとその歪曲率とを説明する図である。光学レンズを通して被写体像を撮影し、その被写体像を示す画像データを記録する場合、光学レンズが有する固有の歪曲収差に起因して、撮像画像の周辺に歪みが生じる。この歪みは、一般に光学歪みと称され、画像の角部が外側に伸びる「糸巻き型」と、逆に角部が縮む「たる型」との2種類に分けられる。何れの歪みも光学中心からの距離、すなわち像高によって歪み量が決まることが一般的に知られている。
図2(a)は「たる型」の歪みを例示する図である。図2(a)は、本来点Aに撮像されるべき点が、歪みによって点A’に撮像されていることを図示している。点Aおよび点A’の画像の中心からの距離をそれぞれL1、L2とするとき、点Aにおける歪曲率Dは以下の式(1)で定義され、その単位は[%]である。
歪曲率D[%]=100×(L2−L1)/L1 (1)
ここで画像の中心は、光学系の中心軸と一致しているものとする。
図2(a)に示すようなたる型の歪みの場合、歪曲率Dは負の値となる。反対に、糸巻き型歪みの場合、歪曲率Dは正の値となる。ここで式(1)をL2について解くと、以下の式(2)を得る。
L2=(100+D)/100×L1 (2)
式(2)より、歪曲率Dを用いることで、中心からの距離がL1となる点Aに本来存在すべき画素が、歪みの生じている画像上においてどの位置に存在するかを求めることができる。具体的には、中心からの距離L1に、歪曲率Dを用いて計算される係数を乗じた距離であるL2が、本来点Aに存在すべき画素が存在する位置である。式(2)を用いて求めた位置に存在する画素を点Aの位置に戻す画像処理を施すことにより、歪みの生じた画像を補正することができる。したがって、以下、歪曲率Dと歪み補正値とを同じ意味で用いる。
図2(b)は、ある固定されたズーム値において、dst0〜dst4までの5点における歪み補正値を求める場合のそのサンプリング点を例示する図である。図2(c)は、図2(b)のサンプリング点dst4の位置における、ズーム値と歪み補正値との関係を模式的に示す図である。歪み補正値記憶部3には、各サンプリング点におけるズーム値と歪み補正値とが紐づけられて格納されている。図2(c)に示すように、ズーム値と歪み補正値とは複数点が記憶されている。歪み補正値取得部5は、歪み補正値記憶部3に撮像時のズーム値が格納されていない場合には、歪み補正値を補間計算により取得する。補間計算は、例えば公知のスプライン補間を用いることで実現できる。図2(b)および図2(c)においてサンプリング数をいくつにするかは、正確性とデータ量とのトレードオフの関係になるため、コスト等を鑑みて実験により定めればよく、例えば20点程度である。
図3、図4、図5、および図6は、ズーム値がそれぞれMとNとの場合における光学歪みと光学歪みの補正に必要な画像データの関係を説明する図である。以下本明細書において、ズーム値Mはズーム値Nよりも大きな値であるとする。
図3(a)は、画像データを所定のブロック領域とした場合の画素ブロック区分を示す図である。ブロック領域は、所定の画素数×所定のライン数を1ブロックのサイズとして区画される。ブロック領域のサイズはメインメモリ10の容量や圧縮の効率等を考慮して実験により定めればよいが、例えば16画素×8ラインや、32画素×16ライン等である。また、各ブロック領域の大きさは等しくなくてもよく、異なる大きさのブロック領域で画像データを区分けしてもよい。
「たる型」の歪曲あるいは「糸巻き型」の歪曲のどちらの場合であっても、一般に歪曲率は像高、すなわち画素位置と光軸位置との距離の二乗に比例する曲線に近似でき、画素位置が光軸位置から遠ければ遠いほど、歪曲率は大きくなる。歪曲率が大きい領域は画像の劣化が大きい領域であり、補正に使用する画像領域が歪曲率の大きい領域である場合、歪曲補正後の画像についてもその領域の劣化は大きい。しかしながら、このような領域は補正前の画像データの時点ですでに劣化が大きい領域であるため、後述する不可逆圧縮処理において画質劣化が発生したとしても、歪曲率が小さい領域に不可逆圧縮処理を適応することに比較すれば、画質の劣化は目立ちにくい。
上述したように、光軸位置は画像データの中心と一致することが多く、仮に一致していないとしても画像データの中心付近に位置することが多い。したがって、歪曲率が大きい領域は画像データの中心から離れた周辺領域となる。一般に、画像データ中の主要被写体は画像データの中心付近に来ることが多いと考えられるため、画像データの周辺領域の画質がより劣化したとしても、中心付近の領域が劣化する場合と比較して、その許容範囲は広い。特に、画像データが動画像データである場合には、画像データの劣化は静止画像データの劣化よりも目立ちにくいため、許容範囲はさらに広くなると考えられる。
図3(b)は光学歪みを有する画像データにおいて、所定のしきい値Tを超える歪曲率の画素を1画素以上有する画素ブロックを示す図である。
図4は、ズーム値と歪曲率との関係を示す図である。図4に示すように、ズーム値M>ズーム値Nを前提として、ズーム値Mにおける最大の歪曲率をDm、ズーム値Nにおける最大歪曲率をDnとする。Dm、Dnとも「たる型」の歪曲率を示す負の歪曲率であるため、Dn<Dmとなる。以下、歪曲率の大小関係を比較するときは、その絶対値をとることにする。すなわち、|Dm|<|Dn|であるから、Dnの方がDmに対してより高い歪曲率を有すものとする。なお、同じズーム値で撮像された画像データであっても、その画像データを構成する画素の像高によって歪曲率は異なる。そこで、あるズーム値において撮像した画像データ中の最大の歪曲率を用いてそのズーム値における歪曲率を表すこととする。
図5は、撮像時のズーム値がMの場合における光学歪みと圧縮する画像ブロックとの関係を説明する図である。図5(a)は、撮像時のズーム値がMの画像データにおける「たる型」の歪みを示す図である。図5(a)の光学歪みを補正するために必要なメインメモリ10のライン数は、上述の式(2)を用いてすべてのラインにおけるすべての画素についての点Aと点A’との関係を求めることで算出することができる。図5(b)は、光学歪みを補正するために必要なメインメモリ10の容量を示す図である。図5(b)においては、網点で示す領域が、光学歪みを補正するために必要なメインメモリ10の容量である。メインメモリ10への書き込みは図3に示す画素ブロック単位で行うことから、撮像時のズーム値がMの画像データにおける歪曲率Dmの光学歪みを補正するために必要なメインメモリ10の容量は、図5(c)で示す灰色の画素ブロック領域に該当し、その容量をQMとすると
QM=RGB信号データ量 × w × m × 2 (3)
となる。
ここでwはメインメモリの幅を示し、mはブロック領域の高さ(ライン数)を示す。
図6は、撮像時のズーム値がNの場合における光学歪みと圧縮する画像ブロックとの関係を説明する図である。図6(a)は、撮像時のズーム値がNの画像データにおける「たる型」の歪みを示す図である。上述の説明と同様にして図6(a)の光学歪みを補正するために必要なメインメモリ10の容量は、図6(b)の網点で示す領域となる。この領域が、ズーム値がNの場合の光学歪みを補正するために必要なメインメモリ10の容量となる。具体的には、図6(c)で示すように、そのライン数はm×3となる。したがって、撮像時のズーム値がNの画像データにおける歪曲率Dnの光学歪みを補正するために必要なメインメモリ10容量QNは、
QN=RGB信号データ量 × w × m × 3 (4)
となる。
歪曲率の絶対値が大きければ大きいほど光学歪みの補正に必要なメインメモリ10の容量は大きくなる。仮にメインメモリ10容量が前記式(3)と同値である場合、歪曲率Dmの光学歪み補正は実行することができるが、Dmより高い歪曲率の補正はメインメモリ10の容量不足により実行できず、したがって歪曲率Dnの光学歪み補正は実行できない。
メインメモリ10容量が前記式(3)と同値であっても、歪曲率Dnの光学歪みを補正するために、画像データ制御部8は、画像データ圧縮部9に画像データを圧縮させる。画像データ圧縮部9が圧縮すべき画像データ量の圧縮率の最大値をCとしたとき、
C × L +(w × 3 − L) ≦ w × 2 (5)
で表される式(5)を満たす圧縮処理を実行できれば、歪曲率Dnにおいて光学歪み補正を実行できる。ここで、Lは圧縮処理を行う画素ブロック数を示す。
ここで、Cは圧縮アルゴリズムによって固有の固定値である。したがって、撮像時のズーム値がNの場合、所定のしきい値Tを超える歪曲率の画素を1画素以上有する画素ブロックの数Lが、上記(5)式を満たすように、所定のしきい値Tを設定することにより、ズーム値がNの画像データにおける歪曲率Dnの光学歪みを補正することができる。これは例えば画像データ制御部8が、式(5)を評価しながら所定のしきい値Tを徐々に変更し、式(5)を満たすしきい値Tを探索して見つけることで実現できる。
画像データ量の圧縮率CはRGB信号データ量をRGB各8bitの24bitとすると、24bitを18bitに圧縮した場合はC=0.75となり、24bitを12bitに圧縮した場合はC=0.5となる。画像データ圧縮部9は、圧縮伸張処理は公知であるゼロ圧縮やハフマンコードを利用した圧縮など、種々の圧縮伸張アルゴリズムが利用できるが、圧縮後のビット幅が一定とならない可変長データ圧縮伸張回路の実装は計算コストの増大から回路規模が大きくなるため、固定長データ圧縮伸張回路の実装が好ましい。
圧縮率Cの値がより低くなる圧縮伸張アルゴリズムを使用することで、メインメモリ10容量に制限がある場合であっても、より高い歪曲率の光学歪み補正が可能となる。しかしながら、より圧縮率Cが低くデータの可逆性がない圧縮伸張アルゴリズムを使用した場合、補正後の画像データは正しい数値より外れた数値となり、最終的には出力画像の画質劣化の要因ともなりうる。しかしながら、上述したように、高い歪曲率となるのは画像データの周辺領域である。したがって、仮に可逆性がない圧縮伸張アルゴリズムを使用して画像データが劣化したとしても、画像の中央部が劣化した場合と比較して目立ちにくいと考えられる。
図7は、実施の形態1に係る画像処理装置100の処理の流れを説明するフローチャートの前半部である。本フローチャートにおける処理は、例えば画像処理装置100が起動したときに開始する。
画像取得部18中の撮像素子4は、被写体から放出され光学制御部2によってズーム値の制御を受けた光学系1で集光された光信号を電気信号に変換する(S0)。画像前処理部6は、撮像素子4が変換した電気信号を画像データに変換する(S1)。ここで画像前処理部6は、撮像素子4が変換したが総データの左上を先頭としてラインごとに順次に右下に至るまで、画像データを画像補正部7に出力する。この時点では光学歪み補正処理を行っていないため、画像データには光学歪みが発生している。
歪み補正値取得部5は、歪み補正値記憶部3に記憶したズーム値についての複数のサンプル値を参照して、光学制御部2における撮像時のズーム値と同値、または最も近いサンプル値、及びこのサンプル値に対応する歪み補正値を抽出するとともに、撮像時のズーム値とサンプル値の差に応じた補間計算によって、実際の歪み補正値を取得する(S2)。
画像データ制御部8は、歪み補正値取得部5が取得した歪み補正値から画像データの各画素位置の歪み補正量を算出し、算出した歪み補正量に対応する光学歪みと所定のしきい値Tとを比較して、ブロック領域単位で圧縮処理が必要であるかを判定する(S3)。
画像データ制御部8が画像データ圧縮部9にブロック領域の圧縮処理をさせる必要があると判断した場合(S3のY)、画像データ圧縮部9はそのブロック領域における画像データの圧縮処理を行う(S4)。
画像データ制御部8が画像データ圧縮部9にブロック領域の圧縮処理をさせる必要がないと判断した場合(S3のN)、画像データ圧縮部9は圧縮処理をしない。
画像データ圧縮部9は、画像データを、ブロック領域単位でラインメモリであるメインメモリ10に書き込む(S5)。メインメモリ10は容量に上限があるため、画像データ制御部8は、メインメモリ10がいっぱいである場合、上位のライン、すなわち画像データを記録したタイミングが最も過去のラインから順に消去して新しいラインを記録する。
図8は、実施の形態1に係る画像処理装置100の処理の流れを説明するフローチャートの後半部である。
画像補正部7の画像データ制御部8は、光学制御部2から取得した撮影時のズーム値における歪み補正値をもとに、1ライン分の歪み補正処理に必要な水平画素位置、垂直ラインを計算し、メインメモリ10に記録した複数ライン分の全画素画像データから補正用画像データを読み出すブロック領域の位置を決定する(S6)。
画像補正部7の画像データ制御部8は、ステップS6の結果をもとに、メインメモリ10から補正用画像データを含む画素ブロックを画像データ伸張部13に読み出させる(S7)。
画像補正部7の画像データ伸張部13は、ステップS7の処理において読み出した補正用画像データを含む画素ブロックに対して、ステップS4の処理において圧縮処理が実行されているかを判定する(S8)。
画像データ圧縮部9が画像データを圧縮した場合(S8のY)、画像データ制御部8は、画像データ伸張部13に、画像データ圧縮部9がした圧縮処理に対応した伸張処理を実行させるとともに、伸張したブロック領域に含まれる補正用画像データをキャッシュメモリ12に格納させる(S9)。
画像データ圧縮部9が画像データを圧縮していない場合(S8のN)、画像データ制御部8は、画像データ伸張部13に伸張処理を実行させずに、ブロック領域に含まれる補正用画像データをキャッシュメモリ12に格納させる。
画像補正部7の歪曲補正部11は、画像データ制御部8の制御の下、キャッシュメモリ12に保持した歪み補正処理に必要な水平画素位置、垂直ラインの画像データ、及び、その周辺画素位置、ライン位置における画像データを取り出して画素補間処理を行い、1点の画素位置における歪み補正処理した結果の画像データを算出する(S10)。なお、キャッシュメモリ12の空き容量が不足する場合、画像データ伸張部13は、キャッシュメモリ12に格納されている古い画像データに新しい画像データを上書きする。
1ライン分の処理が終了した場合、画像データ制御部8は、全ラインの補正が終了しているかどうかを判定し(S11)、全入力ラインの補正が終了していない場合(S11のN)、ステップS6に戻る。
全ラインの補正が終了している場合(S11のY)、画像後処理部14は、補正された画像データを記録媒体16に記録する際の信号仕様の変換や圧縮処理等の信号変換を行う(S12)。記録部15は、画像後処理部14より取得した画像信号を記録媒体16に記録する(S13)。出力部17は、記録媒体16に記録した画像信号を図示しない表示部で表示するための仕様にあわせて表示する(S14)。記録媒体16に記録した画像信号が表示されると、本フローチャートにおける処理は終了する。
以上の構成による動作は以下のとおりである。ユーザが実施の形態1に係る画像処理装置100を用いて画像を撮像すると、歪み補正値取得部5は撮像時のズーム値と、歪み補正値記憶部3から取得したズーム値のサンプル値、及び、このサンプル値に対応する歪み補正値とに基づいて、撮像時のズーム値に対応する歪み補正値を補間計算によって取得する。画像データ制御部8は、画像データに設けられた各ブロック領域における画素の像高によって定まる光学歪みをもとに、そのブロック領域の画像データを圧縮するか否かを決定する。画像データ圧縮部9は、画像データ制御部8が圧縮すべきと決定したブロック領域の画像データを圧縮してメインメモリ10に記録する。画像データ圧縮部9は、画像データ制御部8が圧縮しないと決定したブロック領域の画像データは圧縮せずにメインメモリ10に記録する。
画像データ制御部8は歪み補正値をもとに光学歪みを補正するために必要な補正用画像データ位置を決定する。画像データ制御部8はまた、補正用画像データ位置を含むブロック領域を特定し、画像データ伸張部13にブロック領域単位でメインメモリ10から読み出させる。画像データ伸張部13は読み出した補正用画像データを含むブロック領域を伸張する。
このように、各ブロック領域に含まれる画素の像高から定まる光学歪みと所定のしきい値Tとの比較判定結果に基づいて、画像データの画素ブロック単位における圧縮伸張処理をするか否かを決定することで、メインメモリ10容量の不足により高い補正率の光学歪み補正処理が実行できない場合には、画像データを圧縮することでメインメモリ10に格納し、光学歪み補正処理を実行することが可能となる。画像データを圧縮する場合、圧縮伸張処理によって画質劣化を伴うことにもなりうるが、画像データを圧縮しなくてもメインメモリ10の容量が不足しない場合には、従来と同等の画質性能を保ちつつ補正率の光学歪み補正処理が実現できる。
画像データの中心と光軸位置とが常に一致する場合には、光学歪みの度合いは画像データの中心に対して対称に分布する。このような場合、画像データの画素ブロック単位ではなく、ライン単位で圧縮伸張処理をするか否かを決定すれば足りる。しかしながら、上述のとおり画像データの中心と光軸位置とがずれる場合も生じうる。このような場合、画像データを画素ブロック単位に分割し、小領域毎に圧縮伸張処理をするか否かを決定することにより、きめ細かな処理が可能となり、メインメモリ10の使用効率を高めることが可能となる。
以上説明したように、実施の形態1に係る画像処理装置100によれば、光学歪みの量が高いために一定量のメモリでは補正できない画像データの入力に対して、画質劣化を抑えながら光学歪み補正を実現できる。
(実施の形態2)
実施の形態2の概要を述べる。実施の形態2に係る画像処理装置101は、2つのしきい値PとQ(ただし、P<Q)を用意し、各ブロック領域の画素の像高から定まる光学歪み量を補正するための補正値が、以下の3つのケースのいずれに該当するかを判定する。
ケース1:しきい値P未満の場合
ケース2:しきい値P以上しきい、かつ値Q未満の場合
ケース3:しきい値Q以上の場合
判定の結果、ブロック領域に含まれる画素の像高から定まる光学歪み量が分類されるケースが最も多いケースを、そのブロック領域の該当ケースとし、3つのケースそれぞれに用意されている圧縮伸張アルゴリズムを用いてそのブロック領域の画像データを圧縮処理する。さらに、メインメモリ10から読み出す該当ブロック領域に対しては、適用した圧縮アルゴリズムと一対一の関係となる伸張アルゴリズムを適用して伸張する。これにより、圧縮伸張処理なしではメモリ量の不足により補正処理を実行できない大きさの光学歪み量を有する画像データに対して補正処理を実行できる。また、それぞれ異なる複数の圧縮率の圧縮伸張アルゴリズムを適宜使用することで、圧縮伸張による画質劣化を極力抑えた補正処理を実行できる。
実施の形態2に係る画像処理装置101は、実施の形態1に係る画像処理装置100と内部構造は同等であるため、画像処理装置101の内部構造を示す図として図1を流用して説明する。以下、実施の形態1に係る画像処理装置100と重複する説明は適宜省略または簡略化して記載する。
以下、図1を実施の形態2に係る画像処理装置101の内部構造を模式的に示す図として以下を説明する。画像処理装置101は、光学系1と撮像素子4と画像前処理部6と備える画像取得部18、光学制御部2、歪み補正値記憶部3、歪み補正値取得部5、画像補正部7、メインメモリ10、画像後処理部14、記録部15、記録媒体16、および出力部17を含む。
画像処理装置101において、画像データ圧縮部9は、圧縮率の異なる複数の圧縮アルゴリズムを有する。これらのアルゴリズムは、上述した3つのケースに対応付けられている。画像データ制御部8は、各ブロック領域に含まれる画素の像高から定まる光学歪みが、2つのしきい値PおよびQによって分割される3つのケースのうちどのケースに該当するかを調べる。その結果、最も多く該当したケースに対応付けられている圧縮アルゴリズムを、そのブロック領域における画像データの圧縮処理として採用する。以下、説明の便宜上、圧縮アルゴリズムの数を3つとし、それぞれが上述した3つのケースのいずれかに対応する場合について説明するが、圧縮アルゴリズムの数やケースの数は3に限られず、増減することができることは当業者には容易に理解されることである。
画像データ制御部8は、画像データ圧縮部9において選択された圧縮アルゴリズムに対応する伸張アルゴリズムを使用して画像データ伸張部13に補正用画像データを伸張させる。
図9は、画像位置の光軸からの距離と補正量の関係、及び、しきい値によって分割される領域の一例を示す図である。図9において、光軸からの距離がOからNまでを領域Fa、光軸からの距離がNからMまでを領域Fb、光軸からの距離がM以上の領域をFcとする。領域Faにおける補正量の絶対値は最も大きく、領域Fcにおける補正量の絶対値が最も小さい。
画像データ制御部8は、各ブロック領域に含まれる各画素について、光軸からの距離である像高を求める。求めた像高がFaの範囲内である画素位置をもっとも多く含むブロック領域には、圧縮率Cの値が最も低く画質劣化が最も激しい不可逆圧縮アルゴリズムAを選択する。画像データ制御部8は、求めた像高が領域Fcの範囲内となる画素位置をもっとも多く含むブロック領域には、圧縮率Cの値が最も高く画質劣化の生じない可逆圧縮アルゴリズムCを選択する。同様に、画像データ制御部8は、求めた像高が領域Fbの範囲内である画素位置をもっとも多く含むブロック領域には両者の中間的な性質を持つ圧縮アルゴリズムBを選択する。画像データ圧縮部9は、画像データ制御部8が選択した圧縮アルゴリズムを用いて、ブロック領域の画像データを圧縮する。
画像データ伸張部13は、画像データ圧縮部9が圧縮に用いたアルゴリズムに対応する伸張アルゴリズムを用いてブロック領域の画像データを伸張する。具体的には、画像データ圧縮部9が圧縮アルゴリズムAを用いて圧縮したブロック領域には、対応する伸張アルゴリズムAを用いて伸張する。同様に画像データ伸張部13は、画像データ圧縮部9が圧縮アルゴリズムBを用いて圧縮したブロック領域には伸張アルゴリズムBを用い、圧縮アルゴリズムCを用いて圧縮したブロック領域には伸張アルゴリズムCを用いて伸張処理を行う。
図10は、実施の形態2に係る画像処理装置101の処理の流れを説明するフローチャートの前半部である。本フローチャートにおいて、ステップS20からステップS22までの各処理は、それぞれ図7におけるステップS0からステップS2までの各処理と同様である。
画像データ制御部8は、歪み補正値取得部5が取得した歪み補正値から画像データの各画素位置の歪み補正量を算出し、算出した歪み補正量に対応する光学歪みと所定のしきい値Tとを比較して、ブロック領域単位で圧縮処理が必要であるかを判定する(S23)。
画像データ制御部8が、ブロック領域の圧縮処理が必要であると判断した場合(S23のY)、画像データ制御部8はさらに、対象ブロック領域に含まれる画素の像高がFa、Fb、Fcのいずれに該当するか判定し、いずれの領域に該当する画素位置がもっとも多いか算出した結果から画像データの圧縮処理に使用する圧縮アルゴリズムを選択する(S24)。
画像データ圧縮部9は、画像データ制御部8が選択した圧縮アルゴリズムを使用して、ブロック領域の画像データを圧縮する(S25)。
画像データ制御部8が圧縮処理の必要はないと判断した場合(S23のN)、画像データ制御部8は画像データ圧縮部9に特段の処理をさせない。
ステップS26の処理は、図7におけるステップS5の処理と同様である。
図11は、実施の形態2に係る画像処理装置101の処理の流れを説明するフローチャートの後半部である。
ステップS27からステップS29までの各処理は、それぞれ図8におけるステップS6からステップS8までの各処理と同様である。
画像データ圧縮部9が画像データを圧縮した場合(S29のY)、画像データ伸張部13は、ステップS24において選択実行した圧縮アルゴリズムに対応した伸張アルゴリズムを選択する(S30)。
画像データ制御部8は、ステップS30において選択した伸張アルゴリズムを使用して補正用画像データを含むブロック領域を伸張させるとともに、伸張した画素ブロックから補正用画像データ取り出しキャッシュメモリ12に格納させる(S31)。
画像データ圧縮部9が画像データを圧縮していない場合(S29のN)、画像データ制御部8は、画像データ伸張部13に特段の処理をさせない。ステップ32からステップ36までの各処理は、それぞれ図8におけるステップS10からステップS36までの各処理と同様である。
以上の構成による動作は以下のとおりである。ユーザが実施の形態2に係る画像処理装置101で画像を撮像すると、歪み補正値取得部5は撮像時のズーム値と、歪み補正値記憶部3から取得したズーム値のサンプル値、及び、このサンプル値に対応する歪み補正値とに基づいて、実際の歪み補正値を補間計算によって取得する。画像データ制御部8は、画像データの画素の像高から定まる光学歪みを補正するための歪曲補正量と、所定のしきい値との比較判定結果に基づいて画像データに設定されたブロック領域単位で圧縮アルゴリズムを選択する。画像データ圧縮部9は、画像データ制御部8が選択した圧縮アルゴリズムを使用してブロック領域の画像データを圧縮し、メインメモリ10に記録する。
画像データ制御部8は、歪み補正値をもとに光学歪みを補正するために必要な補正用画像データ位置を決定するとともに、補正用画像データ位置を含むブロック領域を特定する。画像データ伸張部13は、画像データ制御部が特定したしブロック領域をメインメモリ10が読み出すとともに、画像データ圧縮部9において選択実行された圧縮アルゴリズムに対応した伸張アルゴリズムを使用して補正用画像データを伸張する。
画像データ制御部8は、画像データに設定されたブロック領域を単位として、そのブロック領域に含まれる画素の像高から定まる光学歪みを補正するための歪み補正量と、所定のしきい値との比較判定結果に基づいてそのブロック領域に適用する圧縮伸張アルゴリズムを選択することになる。各圧縮アルゴリズムは圧縮率が異なるため、歪み補正量に応じて適切なアルゴリズムを選択して圧縮伸張処理をすることが可能となる。メインメモリ10の容量に上限があり、メインメモリ10容量の不足により高い補正率の光学歪み補正処理が実行できない場合には、圧縮伸張処理をすることで光学歪み補正が可能となる。圧縮伸張処理による画質劣化を伴う場合があるものの、複数の圧縮伸張アルゴリズムを適宜使い分けることにより、画質劣化を歪曲率に応じて段階的に制御できる。
以上説明したように、実施の形態2に係る画像処理装置101によれば、特定のズーム値区間において歪曲率が高く、一定量のメモリでは補正できない画像データの入力に対して、画質劣化を段階的に調整しながら光学歪み補正を実現できる。
特に、光学歪みの大きいブロック領域においては高い圧縮率の圧縮アルゴリズムを用いて圧縮することで、光学歪みの補正を実現することができる。特に、画像データの圧縮アルゴリズムにおいて、圧縮率・伸張率を不可逆の領域に高めることで、画質劣化を伴う場合があるものの、光学歪み補正することが可能な歪曲率の範囲を広げることが可能となる。光学歪みが小さく、圧縮処理や伸張処理をしなくてもメインメモリの量が十分である場合には、不可逆の圧縮処理・伸張処理を用いず、画質劣化のない光学歪み補正を実現することも可能となる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
(変形例1)
上述した実施の形態2においては、画素の像高の取り得る範囲を複数の小領域に分割し、分割したそれぞれの領域に対して個別の圧縮伸張アルゴリズムを用意する場合、すなわち、圧縮率を離散的に用意する場合について説明した。画像データ圧縮部9は、圧縮率を連続的に変更可能なアルゴリズムを用いてもよい。これにより、メインメモリ10に画像データを格納する際に圧縮処理が必要な場合に、圧縮後の画像データがメインメモリ10にちょうど収まるように圧縮率を設定することができる。一般に、圧縮率の高い圧縮が施された画像データは、圧縮率が低い圧縮が施された画像データよりも、画像の劣化が抑制できる。メインメモリ10の利用限度まで圧縮率を高めることにより、画像劣化を抑えつつ、画像補正を実行できるようになる点で有利である。
(変形例2)
上述した実施の形態2においては、画像データ制御部8が、複数のアルゴリズムのうちいずれの圧縮アルゴリズムおよび伸張アルゴリズムを選択する場合について説明したが、アルゴリズムを選択する主体は画像データ制御部8には限られない。例えば、画像データ圧縮部9が圧縮アルゴリズムを選択してもよい。また、例えば画像データ伸張部13が、圧縮アルゴリズムを選択した画像データ圧縮部9から選択したアルゴリズムの通知を受け取ってもよい。