(57)【要約】【課題】メモリに対するアクセス数を低減すること【解決手段】水平歪み補正部２１ａは、２つの入力画素の画像データを線形補間して１つの出力画素の画像データを生成する。垂直歪み補正部２２は、２つの入力画素の画像データを線形補間して１つの出力画素の画像データを生成する。垂直歪み補正部２２は、格子ブロック座標に基づいて生成された垂直補正範囲値に基づいて、バーストサイズの画像データをメモリ４２から読み出し、内部バッファに格納する。そして、内部バッファに格納し複数ラインの画像データのうち、２つのラインを選択し、選択した２つのラインに含まれ、補間処理後に出力する画素に応じた座標値（出力水平座標値）の画像データを補間係数に従って線形補間処理し、処理後の画像データを生成する。【選択図】図１
2014086845.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
撮像した１フレームの画像データの第１の方向に隣接する２つの入力画素に基づいて１つの第１出力画素を生成する第１の歪み補正部と、
前記第１の方向と異なる第２の方向に隣接する２つの前記第１出力画素に基づいて１つの第２出力画素を生成し、前記第２出力画素をメモリに格納する第２の歪み補正部と
を含み、
前記第２の歪み補正部は、前記１フレームの画像を分割した複数の格子ブロックの各頂点の格子ブロック座標に基づいて、前記第２出力画素の座標値に対応した入力座標及び補間係数を生成し、前記第１の方向に連続し前記メモリに対する１回のアクセスにおける転送量に応じた複数の前記第１出力画素を含み前記第１の方向に連続し前記メモリに対する１回のアクセスにおける転送量に応じた複数の第２出力画素に対応する前記第１出力画素の座標値に基づく複数の分割ラインを記憶部に記憶し、前記複数の第２出力画素に対応した前記入力座標に基づいて、前記記憶部から前記第２の方向に隣接する２つの前記第１出力画素を順次読み出し、該読み出した２つの前記第１出力画素を前記補間係数に基づいて線形補間処理して前記第２出力画素を生成すること、
を特徴とする画像処理装置。
【請求項２】
複数の分割ラインを記憶する複数のディレイラインバッファと、
入力する前記第１出力画素の座標値を生成する入力座標生成部と、
前記格子ブロック座標を記憶し、前記入力座標生成部により生成された座標値に応じた第１格子ブロック座標を出力し、前記格子ブロック座標に基づいて前記第１出力画素を出力するディレイラインバッファのインデックス値と出力ライン番号に応じた第２の格子ブロック座標を出力する入力座標設定部と、
前記第１の格子ブロック座標に基づいて、前記第２出力画素の座標値に応じて必要とする前記第１出力画素の範囲を算出する第１の座標演算部と、
前記第１の座標演算部により算出された前記第１出力画素の範囲と、前記入力座標生成部により生成された前記第１出力画素の座標値に基づいてイネーブル信号を生成するイネーブル信号生成部と、
前記インデックス値と前記出力ライン番号に基づいて前記ディレイラインバッファから出力される前記第１出力画素の座標値を生成する出力座標生成部と、
前記第２の格子ブロック座標と前記第１出力画素の座標値に基づいて、前記第１の方向に連続し前記メモリに対する１回のアクセスにおける転送量に応じた複数の第２出力画素に対応する複数の前記第１出力画素の前記第２方向の座標値のうちの最小の座標値と最大の座標値と、前記補間係数を生成する第２の座標演算部と、
前記複数のディレイラインバッファから出力される演算要求に基づいて選択した１つのディレイラインバッファに記憶された前記第１出力画素を読み出して出力するディレイラインバッファ選択部と、
前記ディレイラインバッファ選択部から出力される２つの前記第１出力画素を前記補間係数に基づいて線形補間処理して前記第２出力画素を生成する線形補間部と、
を有し、
前記複数のディレイラインバッファは、
前記入力座標生成部により生成された座標値と前記イネーブル信号に基づいて、対応する座標値の画素データを含む分割ラインを記憶し、
記憶した分割ラインに応じたバッファ段数と前記座標演算部にて生成された前記最小の座標値と前記最大の座標値に基づいて前記演算要求を出力すること、
を特徴とする請求項１に記載の画像処理装置。
【請求項３】
複数の前記ディレイラインバッファはそれぞれ、
前記第１出力画素を記憶し、記憶した前記分割ラインの数に応じてバッファ段数を出力し、リード要求とオフセット値に基づいて記憶した分割ラインに含まれる前記第１出力画素を出力するディレイライン入力バッファと、
前記バッファ段数と前記座標演算部にて生成された前記最小の座標値と前記最大の座標値に基づいて前記演算要求を出力し、前記ディレイラインバッファ選択部から供給される演算要求受付に応じてディレイライン入力バッファに対して前記リード要求を出力し、前記座標演算部から出力される前記入力座標に基づいて前記オフセット値を出力するディレイライン出力制御部と
を含むことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記第２の歪み補正部は、
前記第１の歪み補正部から出力される前記第１出力画素のうちの設定された第１の領域に含まれる前記第１出力画素について、前記第１の方向と異なる第２の方向に隣接する２つの前記第１出力画素に基づいて１つの前記第２出力画素を生成し、前記第１の領域に含まれない前記第１出力画素と前記第２出力画素をメモリに格納する第１補正部と、
前記メモリに格納された前記第１出力画素を読み出し、前記第２の方向に隣接する２つの前記第１出力画素に基づいて１つの前記第２出力画素を生成し、生成した前記第２出力画素を前記メモリに格納する第２補正部と
を含むことを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記第１の領域は、前記第２出力画素の座標値と、前記第２出力画素を生成するために必要な前記第１出力画素の座標値に基づいて設定されること、を特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記第１の歪み補正部は、
前記１フレームの画像を分割した複数の格子ブロックの各頂点の格子ブロック座標に基づいて、前記第１出力画素の座標値に対応した第１入力座標及び第１補間係数を生成し、前記第１入力座標に応じた２つの前記入力画素を前記第１補間係数に基づいて線形補間処理して前記１つの第１出力画素を生成すること
を特徴とする請求項１〜５のうちの何れか一項に記載の画像処理装置。
【請求項７】
前記第１の歪み補正部は、
前記１フレームの画像を分割した格子ブロックの各頂点に対応する格子ブロック座標を記憶した入力座標設定部と、
前記第１出力画素の座標値を生成する出力座標生成部と、
前記格子ブロック座標に基づいて、前記第１出力画素の座標値に対応した補正前の画像における第１の座標値を算出し、前記第１の座標値の整数部に応じた入力座標を出力し、前記第１の座標値の小数部に応じた補間係数を出力する座標演算部と、
前記入力座標に基づいて、前記画像データの前記第１入力画素のうち、前記第１出力画素に応じた前記第１入力画素を記憶部に格納するライト部と、
前記入力座標に基づいて、前記記憶部に格納された前記２つの入力画素を読み出して出力するリード部と、
前記リード部から出力される前記２つの入力画素を前記補間係数に基づいて補間処理して前記１つの第１出力画素を生成する線形補間部と、
を含むことを特徴とする請求項１〜６のうちの何れか一項に記載の画像処理装置。
【請求項８】
前記座標演算部は、前記第１出力画素の座標値に基づいて、前記第２の方向に連続する前記第２出力画素を生成するために必要な前記第１出力画素の座標値の第１の範囲値を算出し、
前記第１の歪み補正部は、
前記メモリに対する１回のアクセスにおける転送量に応じた複数の前記第１出力画素を記憶するバッファと、
前記第１の範囲値に基づいて、前記バッファに保持された複数の前記第１出力画素について有効か無効かを判定し、前記バッファに有効な前記第１出力画素が保持されている場合に前記バッファに保持された複数の前記第１出力画素を、前記メモリの対応する領域に格納する転送制御部と、
を有することを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記第２の歪み補正部は、
前記１フレームの画像を分割した格子ブロックの各頂点に対応する格子ブロック座標を記憶した入力座標設定部と、
前記第２出力画素の座標値を生成する出力座標生成部と、
前記格子ブロック座標と前記第２出力画素の座標値に基づいて、前記第２出力画素の座標値に対応した前記第１出力画素の第２の座標値を算出し、前記第２の座標値の整数部に応じた第２の入力座標を出力し、前記第２の座標値の小数部に応じた第２の補間係数を出力し、前記第２の方向に連続する前記第２出力画素を生成するために必要な前記第１出力画素の座標値の第２の範囲値を出力する座標演算部と、
前記第２の範囲値に応じた前記第１出力画素を前記メモリから入力バッファに読み出す転送制御部と、
前記入力バッファに格納された分割ラインを複数記憶する内部バッファと、
前記第２の入力座標に応じて前記内部バッファの２つの前記分割ラインを選択し、選択した２つの前記分割ラインのそれぞれから１つの前記第１出力画素を出力するラインセレクタと、
前記ラインセレクタから出力される２つの前記第１出力画素を前記第２の補間係数に基づいて線形補間処理して前記１つの第２出力画素を生成する線形補間部と、
を有することを特徴とする請求項１に記載の画像処理装置。
【請求項１０】
撮像光学系と、前記撮像光学系を通過した光に応じた画像データを生成する撮像素子とを含む撮像部と、前記画像データを補正し、補正後の画像データをメモリに格納する画像処理部とを有し、
前記画像処理部は、
撮像した１フレームの画像データの第１の方向に隣接する２つの入力画素に基づいて１つの第１出力画素を生成する第１の歪み補正部と、
前記第１の方向と異なる第２の方向に隣接する２つの前記第１出力画素に基づいて１つの第２出力画素を生成し、前記第２出力画素をメモリに格納する第２の歪み補正部と
を含み、
前記第２の歪み補正部は、前記１フレームの画像を分割した複数の格子ブロックの各頂点の格子ブロック座標に基づいて、前記第２出力画素の座標値に対応した入力座標及び補間係数を生成し、前記第１の方向に連続し前記メモリに対する１回のアクセスにおける転送量に応じた複数の前記第１出力画素を含み前記第１の方向に連続し前記メモリに対する１回のアクセスにおける転送量に応じた複数の第２出力画素に対応する前記第１出力画素の座標値に基づく複数の分割ラインを記憶部に記憶し、前記複数の第２出力画素に対応した前記入力座標に基づいて、前記記憶部から前記第２の方向に隣接する２つの前記第１出力画素を順次読み出し、該読み出した２つの前記第１出力画素を前記補間係数に基づいて線形補間処理して前記第２出力画素を生成すること、
を特徴とする撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
画像処理装置、撮像装置に関する。
【背景技術】
【０００２】
従来、撮像した画像のデジタルデータを記録可能なデジタルスチルカメラ、デジタルビデオカメラ等の撮像装置は、広く普及している。このような撮像装置に搭載される光学系は、レンズ等の収差により、画像に幾何的な歪みを生じさせる。このため、撮像装置は、メモリに記憶した画像データにおける歪みを補正する歪み補正部を有する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２８７５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、撮像装置は、色変換処理等の複数の処理部を有している。これらの処理部と歪み補正部は、処理に必要な画像データを得るため、又は処理後の画像データを記録するためにメモリへアクセスする。つまり、メモリに対するアクセス数が増加する。また、高画質化等により、１フレームの画素数が多くなると、それに応じてメモリに対するアクセス数が増加する。このようなメモリに対するアクセス数の増加は、各処理部や歪み補正部においてメモリへアクセスするために待ち時間の増加や、１フレーム分の画像データの処理に要する時間の長期化の要因となる。
【課題を解決するための手段】
【０００５】
本発明の一観点によれば、撮像した１フレームの画像データの第１の方向に隣接する２つの入力画素に基づいて１つの第１出力画素を生成する第１の歪み補正部と、前記第１の方向と異なる第２の方向に隣接する２つの前記第１出力画素に基づいて１つの第２出力画素を生成し、前記第２出力画素をメモリに格納する第２の歪み補正部とを含み、前記第２の歪み補正部は、前記１フレームの画像を分割した複数の格子ブロックの各頂点の格子ブロック座標に基づいて、前記第２出力画素の座標値に対応した入力座標及び補間係数を生成し、前記第１の方向に連続し前記メモリに対する１回のアクセスにおける転送量に応じた複数の前記第１出力画素を含み前記第１の方向に連続し前記メモリに対する１回のアクセスにおける転送量に応じた複数の第２出力画素に対応する前記第１出力画素の座標値に基づく複数の分割ラインを記憶部に記憶し、前記複数の第２出力画素に対応した前記入力座標に基づいて、前記記憶部から前記第２の方向に隣接する２つの前記第１出力画素を順次読み出し、該読み出した２つの前記第１出力画素を前記補間係数に基づいて線形補間処理して前記第２出力画素を生成する。
【発明の効果】
【０００６】
本発明の一観点によれば、メモリに対するアクセス数を低減することができる。
【図面の簡単な説明】
【０００７】
【図１】撮像装置の概略を示すブロック図である。
【図２】水平歪み補正部及びアクセス制御部のブロック図である。
【図３】アクセス制御部における転送処理のフローチャートである。
【図４】垂直歪み補正部のブロック図である。
【図５】（ａ）〜（ｃ）は画像歪みの説明図である。
【図６】（ａ）〜（ｃ）は画像歪み補正の説明図である。
【図７】歪み補正の説明図である。
【図８】歪み補正に必要な画素の範囲を示す説明図である。
【図９】画像データの転送順序の説明図である。
【図１０】画像データの転送順序の説明図である。
【図１１】（ａ）（ｂ）は歪み補正処理の説明図である。
【図１２】（ａ）（ｂ）は比較例における処理の説明図である。
【図１３】撮像装置の概略を示すブロック図である。
【図１４】垂直歪み補正部のブロック図である。
【図１５】ディレイラインバッファのブロック図である。
【図１６】ディレイライン入力バッファのブロック図である。
【図１７】ディレイライン入力バッファの動作を示すタイミング図である。
【図１８】ディレイライン出力制御部のブロック図である。
【図１９】ディレイライン出力制御部の動作を示すタイミング図である。
【図２０】座標演算の説明図である。
【図２１】座標演算の説明図である。
【図２２】（ａ）（ｂ）はディレイライン入力バッファの動作を示す説明図である。
【図２３】撮像装置の概略を示すブロック図である。
【図２４】（ａ）（ｂ）は処理範囲の設定を示す説明図である。
【図２５】（ａ）（ｂ）は処理範囲の設定を示す説明図である。
【図２６】（ａ）（ｂ）はメモリにおける画像データの格納状態の説明図である。
【図２７】（ａ）（ｂ）は、画像データの必要ライン数の説明図である。
【発明を実施するための形態】
【０００８】
（第一実施形態）
以下、第一実施形態を図１〜図１２に従って説明する。
図１に示すように、この撮像装置は例えばデジタルスチルカメラであり、撮像部１０、画像処理部（ＩＳＰ：Ｉｍａｇｅ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）２０、操作部４１、メモリ（記憶部）４２、表示デバイス４３を有している。撮像部１０は、被写体に基づく入射光に応じた画像データを出力する。画像処理部２０は、既定の設定値または操作部４１の操作による設定にしたがって、撮像部１０から出力される画像データに対して各種画像処理を施す。そして、画像処理部２０は、処理中または処理後の画像データをメモリ４２に格納する。また、画像処理部２０は、撮像部１０から出力される画像データに基づく画像、またはメモリ４２に格納された画像データに基づく画像を表示デバイス４３に表示する。そして、画像処理部２０は、メモリ４２に格納された画像データを、例えば操作部４１の操作にしたがってメモリカード４５に格納する。
【０００９】
撮像部１０は、撮像光学系１１と、撮像素子部１２を有している。
撮像光学系１１は、被写体からの光を集光するレンズ（フォーカスレンズなど），レンズを通過した光の量を調整する絞り，等を含み、光学的な被写体像を撮像素子部１２に導く。撮像素子部１２は、例えば、ベイヤ配列のカラーフィルタと、撮像素子とを含む。撮像素子は、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）イメージセンサである。撮像素子は、カラーフィルタを介して入射する光の量に応じた撮像信号（アナログ信号）を出力する。また、撮像素子部１２は、アナログの撮像信号をデジタルの撮像データに変換する。そして、撮像素子部１２は、同期信号に従って変換後の撮像データを出力する。同期信号は、１つのフィールドの区切りを示す垂直同期信号と、１ラインの区切りを示す水平同期信号を含み、例えば画像処理部２０から供給される。
【００１０】
画像処理部２０は、データ変換部２１、垂直歪み補正部２２、歪み補正部２３、画像処理部２４、静止画コーデック部２５、動画コーデック部２６、メモリカードインタフェース（メモリカードＩ／Ｆ）２７、表示インタフェース（表示Ｉ／Ｆ）２８、ＤＭＡ調停部２９、メモリコントローラ３０、ＣＰＵ（制御部）３１を有している。データ変換部２１，垂直歪み補正部２２，歪み補正部２３，画像処理部２４，静止画コーデック部２５，動画コーデック部２６，メモリカードＩ／Ｆ２７，表示Ｉ／Ｆ２８，ＤＭＡ調停部２９、ＣＰＵ３１は、内部バス３２を介して互いに接続されている。
【００１１】
ＤＭＡ調停部２９はメモリコントローラ３０を介してメモリ４２と接続される。メモリ４２は第１の格納部の一例である。メモリ４２は、例えば同期式半導体メモリ（ＳＤＲＡＭ：Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。データ変換部２１は、撮像部１０から出力される撮像データに対して所定の処理を行い、処理後の画像データをメモリ４２に格納する。また、メモリ４２には、各処理部２２〜２６による処理後の画像データが格納される。
【００１２】
データ変換部２１は、撮像部１０から出力される撮像データのデータ形式を変換する。撮像データは例えばＲＧＢ形式の画像データ（ベイヤデータ）である。データ変換部２１は、例えば撮像データを、ＹＣｂＣｒ（Ｙ（輝度）、Ｃｂ，Ｃｒ（色差））形式のデータに変換する。変換後の画像データは複数の画素データを含み、各画素データは、輝度情報と色差情報を含む。
【００１３】
データ変換部２１は、水平歪み補正部２１ａとアクセス制御部（「ＤＭＡＣ」と表記）２１ｂを含む。水平歪み補正部２１ａは第１の歪み補正部の一例である。水平歪み補正部２１ａは、ＹＣｂＣｒ形式の画像データについて、撮像光学系１１による水平方向の歪みを補正する。アクセス制御部２１ｂは、直接メモリアクセス制御部（ＤＭＡＣ：Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）であり、ＤＭＡ調停部２９及びメモリコントローラ３０を介してメモリ４２へアクセスし、水平歪み補正部２１ａにおける歪み補正後の画像データをメモリ４２に格納する。
【００１４】
撮像部１０から出力される画像データは、撮像光学系１１に含まれるレンズ（例えば歪曲収差）に起因する画像の歪みを含む。例えば、図５（ａ）に示す格子Ｇ１を撮影した場合、格子Ｇ１は、レンズの特性（歪曲収差）によって変形し、図５（ｂ）に示すように湾曲した形状の格子Ｇ２や、図５（ｃ）に示すように湾曲した形状の格子Ｇ３にて記憶される。例えば、図５（ｂ）に示す形状の歪みを樽型の歪み、図５（ｃ）に示す形状の歪みを糸巻き型の歪みと呼ぶ。なお、図５（ａ）〜図５（ｃ）において、各格子Ｇ１，Ｇ２，Ｇ３の中心は、撮影装置の光学系における中心と一致している。図５（ｂ），図５（ｃ）に破線は、撮影される格子Ｇ１を示す。このように歪みを含む画像の画像データについて、水平歪み補正部２１ａは、水平方向の歪みを補正する。
【００１５】
垂直歪み補正部２２は、撮像光学系１１による垂直方向の歪みを補正する。垂直歪み補正部２２は、第２の歪み補正部，第１の補正部の一例である。垂直歪み補正部２２は、アクセス制御部（ＤＭＡＣ）２２ａを含む。アクセス制御部２２ａは、ＤＭＡ調停部２９及びメモリコントローラ３０を介してメモリ４２へアクセスし、垂直歪み補正部２２に必要な画像データをメモリ４２から読み出す。垂直歪み補正部２２は、アクセス制御部２２ａによりメモリ４２から読み出された部分的な画像データについて垂直方向の歪みを補正する。そして、アクセス制御部２２ａは、垂直歪み補正部２２による処理後の画像データをメモリ４２に格納する。
【００１６】
歪み補正部２３は、撮像光学系１１による水平方向の歪みと垂直方向の歪みを補正する。歪み補正部２３はアクセス制御部（ＤＭＡＣ）２３ａを含む。アクセス制御部２３ａは、ＤＭＡ調停部２９及びメモリコントローラ３０を介してメモリ４２へアクセスし、歪み補正部２３に必要な画像データをメモリ４２から読み出す。また、アクセス制御部２３ａは、歪み補正部２３における補正後の画像データをメモリ４２に格納する。
【００１７】
図６（ａ）〜（ｃ）は、樽型の歪みに対する補正処理を示す。
水平歪み補正部２１ａは、図６（ａ）に示す画像データＰ１ａを水平歪み補正処理して図６（ｂ）に示す画像データＰ１ｂを生成する。これにより、画像データＰ１ａに含まれる樽型の格子Ｇ２は、画像データＰ１ｂにおいて垂直方向（図における上下方向）に膨らむ形状の格子Ｇ２ａとなる。垂直歪み補正部２２は、図６（ｂ）に示す画像データＰ１ｂを垂直歪み補正処理して図６（ｃ）に示す画像データＰ１ｃを生成する。これにより、画像データＰ１ｂに含まれる格子Ｇ２ａは、画像データＰ１ｃにおいて、直線状の格子Ｇ２ｂとなる。歪み補正部２３は、図６（ａ）に示す画像データＰ１ａを歪み補正処理して図６（ｃ）に示す画像データＰ１ｃを生成する。これにより、画像データＰ１ａに含まれる樽型の格子Ｇ２は、画像データＰ１ｃにおいて、直線状の格子Ｇ２ｂとなる。
【００１８】
画像処理部２４は、１つ又は複数の処理部である。画像処理部２４はメモリ４２へアクセスするアクセス制御部２４ａを含む。画像処理部２４が行う処理は、例えば、色調変更などの色補正処理、画素数を増減する解像度変換処理、画像の輪郭（エッジ）を強調するエッジ強調処理、画像データに含まれるノイズを除去するノイズ除去処理、等が含まれる。画像処理部２４は、メモリ４２に格納された画像データを読み出し、その画像データに対して画像処理を施し、処理後の画像データをメモリ４２に格納する。
【００１９】
静止画コーデック部２５は、メモリ４２をアクセスするアクセス制御部２５ａを含む。静止画コーデック部２５は、メモリ４２に格納された画像データを読み出し、その画像データを所定の方式（例えばＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）方式）により符号化し、符号化後の画像データ（符号化データ）をメモリ４２に格納する。
【００２０】
動画コーデック部２６は、メモリ４２をアクセスするアクセス制御部２６ａを含む。動画コーデック部２６は、メモリ４２に格納された画像データを読み出し、その画像データに対して所定の方式（例えば、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）方式）により符号化し、符号化後の画像データ（符号化データ）をメモリ４２に格納する。
【００２１】
なお、上記した各処理部２１〜２６及びそれらの処理内容は一例であり、画像処理部２０が含む処理部の種類や処理内容は、適宜設定されてもよい。
メモリカードＩ／Ｆ２７は、撮像装置に装着されるメモリカード４５と接続される。メモリカードＩ／Ｆ２７は、メモリ４２をアクセスするアクセス制御部２７ａを含む。メモリカードＩ／Ｆ２７は、メモリ４２に格納されたデータ（例えば圧縮された画像データ）をメモリカード４５に格納する。
【００２２】
表示Ｉ／Ｆ２８には、表示デバイス４３が接続されている。表示デバイス４３は、例えば液晶表示装置（ＬＣＤ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。表示デバイス４３は、撮影する画像（撮影フレーム）の確認、撮影された画像の表示、撮像装置の駆動源であるバッテリの残量、撮影モード、等に用いられる。表示Ｉ／Ｆは、メモリ４２をアクセスするアクセス制御部２８ａを含む。例えば、表示Ｉ／Ｆ２８は、メモリ４２に格納された画像データを読み出し、その画像データを表示デバイス４３に出力する。なお、表示デバイス４３を、電子ビューファインダ（ＥＶＦ：Ｅｌｅｃｔｒｏｎｉｃ  Ｖｉｅｗ  Ｆｉｎｄｅｒ）や、外部接続ためのインタフェース（例えばＨＤＭＩ：Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）としてもよい。
【００２３】
ＤＭＡ調停部２９は、各回路２１〜２８のアクセス制御部２１ｂ，２２ａ〜２８ａから出力され競合する要求（リクエスト）を、例えば各処理部２１〜２８に対応して設定された優先度に従って調停し、１つの回路に対するアクセスを許可する。アクセスが許可された回路は、メモリ４２に対するアクセスのための制御信号を出力する。読み出し要求の場合、メモリコントローラ３０は、制御信号に応じてメモリ４２からデータを読み出し、その読み出したデータを要求元に出力する。メモリコントローラ３０は、書き込み要求と、その要求元から出力されるデータをメモリ４２に出力し、メモリ４２はそのデータを記憶する。
【００２４】
ＣＰＵ３１は、画像処理部２０全体を統括制御する。ＣＰＵ３１は、処理に必要な情報の各処理部への設定及びデータの書き込み／読み出し制御等を行う。また、ＣＰＵ３１は、操作部４１の操作に応じて動作モードや各処理において必要な情報（パラメータ）を設定する。操作部４１は、ユーザにより操作されるシャッタボタンやメニューボタン等の各種スイッチ、タッチパネル等である。
【００２５】
また、ＣＰＵ３１は、撮像部１０を制御する。撮像部１０の撮像光学系１１は、ズーム機能を有している。ＣＰＵ３１は、ユーザによる操作部４１の操作にしたがって撮像光学系１１に含まれるレンズの位置を光軸（撮像素子の受光面と垂直な軸）に沿って変更する。
【００２６】
ここで、歪み補正について説明する。
歪み補正部２３は、入力画像データに対して、自由変形又は射影変形と呼ばれる処理を行う。自由変形は、任意形状の四角形を他の形状の四角形へと変形する処理である。他の形状の四角形を矩形とすることにより、入力画像データにおける歪みを補正する。
【００２７】
例えば、図７に示すように、上段の任意形状の四角形Ｒ１を、下段の矩形Ｒ２へ変形する。尚、上段は歪み補正前の画像、つまり入力画像を示し、下段は歪み補正後の画像を示す。四角形Ｒ１の頂点をＡ１，Ｂ１，Ｃ１，Ｄ１とする。この変形において、頂点Ａ１を頂点Ａ２へ変換する。同様に、頂点Ｂ１を頂点Ｂ２へ、頂点Ｃ１を頂点Ｃ２へ、頂点Ｄ１を頂点Ｄ２へ変換する。そして、四角形Ｒ１に含まれる点（各頂点、及び各頂点を結ぶ線上の点を含む）は、矩形Ｒ２内の各点（各頂点、及び各頂点を結ぶ線上の点を含む）へ変換される。例えば、四角形Ｒ１に含まれる点Ｅ１は、矩形Ｒ２の点Ｅ２へ変換される。したがって、点Ｅ２を１つの画素とした場合、画素Ｅ２の画素値は、点Ｅ１に基づく画素値により求めることができる。つまり、点Ｅ２の座標値から点Ｅ１の座標値を算出することにより、歪み補正のために必要な画素の座標値及び画素値を得ることが可能となる。
【００２８】
ここで、点Ｅ１の座標を（Ｘｉ，Ｙｉ）、点Ｅ２の座標を（Ｘｏ，Ｙｏ）とする。そして、変形前の四角形Ｒ１の各頂点Ａ１，Ｂ１，Ｃ１，Ｄ１の座標値を（Ａｘ，Ａｙ），（Ｂｘ，Ｂｙ），（Ｃｘ，Ｃｙ），（Ｄｘ，Ｄｙ）とする。なお、これらの座標値は、歪み補正前の画像と歪み補正後の画像において、互いに対応する位置を原点とする座標値である。例えば、歪み補正前の画像と歪み補正後の画像を同じ大きさの格子により分割する。分割した１つのブロック（格子ブロック）を矩形Ｒ２とする。この場合、矩形Ｒ２に含まれる点の座標値は、格子ブロックの１つの頂点Ｏ２を原点とする値となる。そして、四角形Ｒ１に含まれる点の座標値は、点Ｏ２に対応する点Ｏ１を原点とする値となる。そして、格子ブロックのｘ軸方向（水平方向）の大きさ（画素数）を「Ｍ」、ｙ軸方向（垂直方向）の大きさ（画素数）を「Ｎ」とする。すると、点Ｅ１の座標（Ｘｉ，Ｙｉ）は、
Ｘｉ＝［Ｎ（Ｂｘ−Ａｘ）＋｛（Ｄｘ−Ｃｘ）−（Ｂｘ−Ａｘ）｝Ｙｏ］Ｘｏ／（Ｍ＊Ｎ）＋Ａｘ＋（Ｃｘ−Ａｘ）Ｙｏ／Ｎ  ・・・（１）
Ｙｉ＝［Ｍ（Ｃｙ−Ａｙ）＋｛（Ｄｙ−Ｂｙ）−（Ｃｙ−Ａｙ）｝Ｘｏ］Ｙｏ／（Ｍ＊Ｎ）＋Ａｙ＋（Ｂｙ−Ａｙ）Ｘｏ／Ｍ  ・・・（２）
により求められる。なお、「＊」は乗算を示し、「／」は除算を示す。
【００２９】
次に、データ変換部２１に含まれる水平歪み補正部２１ａ及びアクセス制御部２１ｂについて説明する。
図２に示すように、水平歪み補正部２１ａは、入力座標設定部５１、出力座標生成部５２、座標演算部５３、ライト部５４、ＦＩＦＯメモリ５５、リード部５６、線形補間部５７を有している。アクセス制御部２１ｂは、バッファ５８、転送制御部５９を有している。
【００３０】
入力座標設定部５１には、座標演算係数が格納される。座標演算係数は、歪み補正処理により生成する画素（水平補正後画素、または出力画素という）を生成するために必要な画素（水平補正前画素または入力画素という）の座標を算出するために必要な係数であり、例えばＣＰＵ３１（図１参照）により格納される。図１に示す撮像光学系１１の収差によって撮像素子部１２に生じる歪みは、撮像部１０の状態、例えば撮像素子部１２と撮像光学系１１の位置関係（光軸上のレンズ等の位置）に基づく。したがって、ＣＰＵ３１は、撮像部１０の状態に応じた座標演算係数を入力座標設定部５１に格納する。座標演算係数は、上記の式（１），（２）の各パラメータを含む。上記の式（１），（２）は、図７に示すように、矩形Ｒ２と四角形Ｒ１において、点Ｅ２に対応する点Ｅ１の座標値を求めるものである。矩形Ｒ２に対応する四角形Ｒ１の位置や形状が異なると、上記の式（１），（２）におけるパラメータの値も異なる。従って、入力座標設定部５１に格納される座標演算係数は、出力する画像を分割した複数の格子ブロック毎に設定されたパラメータを含む。
【００３１】
出力座標生成部５２は、１フレームの画像データに対する処理に応じて初期化される。そして、出力座標生成部５２は、水平歪み補正部２１ａから出力される画素（出力画素）の画像データに応じてカウント値をカウントアップする。画像データは、クロック信号に同期して転送される。このクロック信号は、例えば、図１に示す撮像装置におけるシステムクロック信号である。出力座標生成部５２は、クロック信号をカウントし、カウント値を出力する。この出力座標生成部５２から出力されるカウント値は、水平歪み補正部２１ａから出力される出力画素の座標値（Ｘｏ，Ｙｏ）に対応する。例えば、水平方向の座標値Ｘｏは、水平同期信号によりリセットされ、水平歪み補正部２１ａが出力するタイミングを示すクロック信号によりカウントアップされる。また、垂直方向の座標値Ｙｏは、水平同期信号によりカウントアップされる、垂直同期信号によりリセットされる。
【００３２】
座標演算部５３は、入力座標設定部５１から読み出した座標演算係数と、出力座標生成部５２から出力される座標値（Ｘｏ，Ｙｏ）に基づいて、補正画素を生成するために必要な入力画素の座標値（入力座標値）を算出する。なお、水平歪み補正部２１ａは、入力される画像データについて、水平方向の歪みを補正する。したがって、補正画素の画素値を算出するために必要な入力画素の座標値のうち、水平方向の画素値（入力水平座標）が必要となる。したがって、座標演算部５３は、上記の（１）に基づいて、入力水平座標Ｘｉの値を算出する。そして、座標演算部５３は、算出した入力水平座標Ｘｉに応じた入力水平座標ＨＰと補間係数Ｈαを生成する。
【００３３】
なお、算出した入力水平座標Ｘｉの値は、整数部分と小数部分を含む。これは、出力画素と入力画素が歪みによって１対１に対応しないからである。座標演算部５３は、算出した入力水平座標Ｘｉの整数部分と等しい値の入力水平座標ＨＰと、入力水平座標Ｘｉの小数部分と等しい値の補間係数Ｈαを生成する。入力水平座標ＨＰはライト部５４とリード部５６に供給され、補間係数Ｈαは線形補間部５７に供給される。
【００３４】
また、座標演算部５３は、垂直歪み補正に必要な画素の座標値を算出する。垂直歪み補正に必要な画素の座標値は、画素の水平座標（水平位置）に対する垂直座標の最小値と最大値を含む。例えば、図５（ｂ）に示すように、樽型の歪みを含む画像の場合、画像は垂直方向に拡大される。従って、垂直方向の拡大に従って画像の範囲（フレーム枠）からはみ出す画素は、垂直方向の歪み補正処理に不要な画素である。座標演算部５３は、垂直方向における垂直補正範囲（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）を算出する。なお、垂直補正範囲は、１フレームの画像データにおいて、水平方向の画素位置に応じて異なる。このため、座標演算部５３は、水平方向の画素位置に応じて、垂直補正範囲値ＶＡ１を算出する。そして、座標演算部５３は、算出した垂直補正範囲値ＶＡ１（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）を転送制御部５９に出力する。
【００３５】
例えば、図８に示すように、樽型の歪んだ入力画像データＩＰ１に対して、水平方向の歪み補正処理を行い、出力画像データＯＰ１を生成する。図８に実線で示す複数の四角形Ｒａは、入力画像データＩＰ１において、出力画像データＯＰ１の各格子ブロックＲ２（図７参照）の画像データを生成するために必要な画像データの範囲を示す。図８において、一点鎖線は、入力画像データＩＰ１に対する水平歪み補正処理後の画素データＯＰａを示す。
【００３６】
図８において、破線Ｌ１は、水平歪み補正処理における１つのラインデータ（１ラインの画素群）を示す。水平歪み補正処理において、この１つのラインデータＬ１に対して、入力画像データＩＰ１に対応する画素の画像データが必要な画素である。従って、この入力画像データＩＰ１において必要な画素の範囲を有効画素範囲と呼ぶ。そして、入力画像データＩＰ１において、この有効画素範囲より外側の画素の範囲を無効画素範囲と呼ぶ。
【００３７】
図８は、画像データの水平方向における有効画素範囲と無効画素範囲を示したが、垂直方向の範囲についても水平方向における範囲と同様である。したがって、図２に示す座標演算部５３は、垂直方向における有効画素範囲の最小値を垂直座標の最小値Ｙｍｉｎとし、垂直方向における有効画素範囲の最大値を垂直座標の最大値Ｙｍａｘとする。
【００３８】
ライト部５４は、入力水平座標ＨＰに基づいて、水平補正処理に必要な画素の画像データをＦＩＦＯメモリ５５に出力する。例えば、ライト部５４には、所定の１サイクルに１つの画素の画像データ（ＹＣｂＣｒ形式の画像データ）ＰＤ１が供給される。ライト部５４は、入力画素の座標と入力水平座標ＨＰとを比較する。入力画素の座標は、例えば、画像データを転送する回路の動作クロック信号をカウントすることにより得られる。ライト部５４は、入力画素の座標値と入力水平座標ＨＰを比較し、必要な画素か否かを判定する。例えば、図５（ｂ）に示すように、樽型の歪みを含む画像の場合、画像は水平方向に拡大される。従って、水平方向の拡大に従って画像の範囲（フレーム枠）からはみ出す画素は、水平方向の歪み補正処理に不要な画素である。ライト部５４は、必要と判定した画素の画素値をＦＩＦＯメモリ５５に出力する。
【００３９】
なお、ライト部５４は、入力画素の座標値に応じて、入力画素の座標値と入力水平座標ＨＰに所定値「１」を加算した結果の値と比較し、必要な画素か否かを判定する。これは、出力画素の画像データを生成する方法に設定される。本実施形態の水平歪み補正部２１ａは、後述する線形補間部５７により出力画素の画像データを生成する。線形補間部５７は、２つの入力画素の画像データに基づいて、１つの出力画素の画像データを生成する。上記したように、座標演算部５３は、算出した入力水平座標Ｘｉの整数部分と等しい値の入力水平座標ＨＰを生成する。このため、出力画像の各ラインにおける最終の画素の画像データを生成するためには、算出した入力水平座標Ｘｉの小数部分を切り上げた座標値の画素の画像データが必要となる。このため、ライト部５４は、入力画素の座標値を、入力水平座標ＨＰ、及びその入力水平座標ＨＰに「１」を加算した値と比較する。そして、ライト部５４は、入力画素の座標値が、入力水平座標ＨＰまたは加算結果と一致する場合に必要な画素と判定し、その入力画素の画像データをＦＩＦＯメモリ５５に格納する。
【００４０】
ＦＩＦＯメモリ５５は、ライトポインタが示す位置（アドレス）に入力データを記憶し、リードポインタが示す位置（アドレス）に格納されているデータを出力する。ライト部５４は、ＦＩＦＯメモリ５５のライトポインタを制御する。例えば、ライト部５４は、１つのラインにおける画素の格納を開始するときリセット信号を出力し、ＦＩＦＯメモリ５５はリセット信号に応答して、ライトポインタ及びリードポインタをリセット（＝０）する。ＦＩＦＯメモリ５５は、ライト部５４から出力される画像データ（画素値）を記憶し、ライトポインタを更新（＋１）する。そして、ＦＩＦＯメモリ５５は、リード部５６の読出要求に応答してリードポインタに格納されている画像データを出力し、リードポインタを更新（＋１）する。
【００４１】
ＦＩＦＯメモリ５５の記憶容量は、ＦＩＦＯメモリ５５に記憶する画像データの形式と、補正に必要な画素の位置に応じて設定されている。例えば、ＹＣｂＣｒ形式において、各成分の階調を２５６（１バイト）とすると、４２２フォーマットの画像データのデータ量は１画素あたり２バイトであり、４４４フォーマットの画像データのデータ量は１画素あたり３バイトである。補正に必要な画素の位置に応じた記憶容量は、画素の移動量に対応する。画素の移動量は、出力画素の座標値と、その出力画素を生成するために必要な入力画素の座標値の差である。これは、概略的に、入力画素を補正方向に移動させて出力画素を生成することに基づくものである。画素の移動量に応じてＦＩＦＯメモリ５５に記憶する必要がある。例えば、移動量の２倍の記憶容量が必要となる。
【００４２】
リード部５６は、ＦＩＦＯメモリ５５のリードポインタを制御し、ＦＩＦＯメモリ５５から連続する２つの画素の画像データを読み出し、線形補間部５７に出力する。例えば、リード部５６は、入力水平座標と複数画素の画像データを記憶するレジスタを有している。リード部５６は、ライト部５４によってＦＩＦＯメモリ５５に２画素以上の画像データが格納されると、読出処理を開始する。例えば、ＦＩＦＯメモリ５５へ補間処理に必要な数の画像データが格納されと、ＦＩＦＯメモリ５５は処理開始を示す信号（イネーブル信号）を出力し、リード部５６はその信号に応答して読出処理を開始する。
【００４３】
先ず、リード部５６は、座標演算部５３から供給される入力水平座標ＨＰをレジスタに記憶する。そして、リード部５６は、ＦＩＦＯメモリ５５に対して読出要求を出力する。メモリは、その読出要求に応答して画像データを出力し、リードポインタを更新する。リード部５６は、ＦＩＦＯメモリ５５から出力される画像データをレジスタに記憶し、またその画像データを線形補間部５７に対して出力する。次いで、ＦＩＦＯメモリ５５に対して読出要求を出力する。メモリは、その読出要求に応答して画像データを出力し、リードポインタを更新する。リード部５６は、ＦＩＦＯメモリ５５から出力される画像データをレジスタに記憶し、またその画像データを線形補間部５７に対して出力する。これにより、リード部５６は、水平方向に連続する２つの画素の画像データをＦＩＦＯメモリ５５から読出し、それらを線形補間部５７に出力する。
【００４４】
次に、リード部５６は、座標演算部５３から供給される入力水平座標ＨＰと、レジスタから読み出した入力水平座標とを比較する。そして、リード部５６は、入力水平座標ＨＰとレジスタから読み出した入力水平座標とが互いに等しい場合、レジスタに記憶した２つの画素の画像データを線形補間部５７に対して順次出力する。一方、入力水平座標ＨＰとレジスタから読み出した入力水平座標が互いに異なる場合、リード部５６は、入力水平座標ＨＰをレジスタに記憶し、ＦＩＦＯメモリ５５に対して読出要求を出力する。そして、リード部５６は、ＦＩＦＯメモリ５５から出力される１画素の画像データをレジスタに記憶し、その画素と隣接する画素の画像データをレジスタから読み出して線形補間部５７に出力する。このように、リード部５６は、座標演算部５３から供給される入力水平座標ＨＰに応じた２つの画素の画像データを線形補間部５７に対して出力する。
【００４５】
線形補間部５７は、リード部５６によってＦＩＦＯメモリ５５から読み出された２つの画素の画像データに対して、座標演算部５３から供給される補間係数Ｈαに従って線形補間処理し、処理後の画像データＰＤ２を出力する。例えば、線形補間部５７は、２つの画素の画像データをアルファブレンドして補間後の画像データＰＤ２を生成する。例えば、リード部５６から出力される１つ目の画素の画像データ（画素値）をＧａ１、２つ目の画素の画像データ（画素値）をＧａ２とする。線形補間部５７は、出力する画素の画像データＧａ３を、
Ｇａ３＝（１−Ｈα）・Ｇａ１＋Ｈα・Ｇａ２
により算出する。そして、線形補間部５７は、生成した画像データ（画素値）Ｇａ３を出力する。
【００４６】
アクセス制御部２１ｂのバッファ５８の記憶容量は、例えば、図１のメモリ４２における転送形態に応じて設定される。メモリ４２において、連続するアドレスに対するアクセス（データライト，データリード）に要する時間は、ランダムなアドレスに対するアクセスに要する時間よりも短い。つまり、連続するアドレスに対するアクセスを行うことにより、ランダムなアドレスに対するアクセスよりも高速なリード・ライトが可能である。連続するアドレスによる所定量のデータ転送を、バースト転送と呼ぶ。つまり、バッファ５８の記憶容量は、メモリ４２に対するバースト転送の転送量（バーストサイズ）に応じた値に設定されている。バッファ５８は、線形補間部５７から出力される画像データ、つまり水平歪み補正処理後の画像データを記憶する。転送制御部５９は、座標演算部５３から供給される垂直補正範囲（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）に応じて、バッファ５８に記憶した画像データのうち、図１に示す垂直歪み補正部２２において必要な画素の画像データをメモリ４２に対して転送する。
【００４７】
アクセス制御部２１ｂのバッファ５８の記憶容量は、図１のメモリ４２におけるバースト転送の転送量（バーストサイズ）に応じた値に設定されている。バッファ５８は、線形補間部５７から出力される画像データ、つまり水平歪み補正処理後の画像データを記憶する。転送制御部５９は、座標演算部５３から供給される垂直補正範囲（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）に応じて、バッファ５８に記憶した画像データを、図１に示す垂直歪み補正部２２において必要な画素の画像データをメモリ４２に対して転送する。
【００４８】
転送制御部５９における処理を説明する。
図３に示すステップ６１において、パラメータの初期化を行う。初期化するパラメータは、転送先アドレス、バッファに格納したデータ数（バッファＲＡＭデータ数）である。転送先アドレスに初期値を設定し、バッファＲＡＭデータ数と無効画素数をクリア（＝０）する。
【００４９】
次に、ステップ６２において、図２に示すバッファ５８に格納された画素が参照される画素か否かを判定する。バッファ５８に格納された画素の垂直座標値と垂直補正範囲値ＶＡ１（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）を比較し、垂直座標値が垂直補正範囲外の場合（判定：ＮＯ）にステップ６３に移行する。そのステップ６３において、無効画素数を算出する。参照されない画素を無効画素とし、その無効画素をカウントする。カウント値は無効画素数である。算出後、ステップ６４へ移行する。一方、ステップ６２において、垂直座標値が垂直補正範囲内の場合（判定：ＹＥＳ）にステップ６４に移行する。
【００５０】
そして、ステップ６４において、バッファＲＡＭデータ数を算出する。例えば、バッファＲＡＭデータ数を「＋１」する。算出後、ステップ６５へ移行する。
次いで、ステップ６５において、バッファＲＡＭデータ数がバーストサイズと等しいか否かを判定する。バッファＲＡＭデータ数は、バッファ５８に格納された画素のうち、無効画素か否かを判定した画素の数である。バッファＲＡＭデータ数がバーストサイズと異なる場合（判定：ＮＯ）にステップ６２へ移行する。一方、バッファＲＡＭデータ数がバーストサイズと等しい場合（判定：ＹＥＳ）、次のステップ６６へ移行する。つまり、バーストサイズ分の画素について無効画素か否かを判定する。
【００５１】
次に、ステップ６６において、無効画素数がバーストサイズと等しいか否かを判定する。つまり、バッファ５８に格納されたバーストサイズ分の画素の全てが無効画素か否かを判定する。無効画素数がバーストサイズと等しくない場合（判定：ＮＯ）、次のステップ６７へ移行し、無効画素数がバーストサイズと等しい場合（判定：ＹＥＳ）、ステップ６８へ移行する。
【００５２】
ステップ６７において、バッファ５８に格納されたバーストサイズ分の画素の画像データをメモリ４２へ格納し、ステップ６８へ移行する。つまり、バッファ５８に格納されたバーストサイズ分の画素の全てが無効画素の場合、バッファ５８のデータをメモリ４２へ格納しない。
【００５３】
次に、ステップ６８において、次のデータ転送のために各パラメータを設定する。例えば、次のデータ転送のために、転送先アドレスにバーストサイズを加算する。また、無効画素数とバッファＲＡＭデータ数をクリア（＝０）する。そして、ステップ６２へ移行する。
【００５４】
次に、垂直歪み補正部２２について説明する。
図４に示すように、垂直歪み補正部２２は、アクセス制御部２２ａと垂直歪み補正コア部２２ｂを有している。垂直歪み補正コア部２２ｂは、入力座標設定部７１、出力座標生成部７２、座標演算部７３、内部バッファ７４、ラインセレクタ７５、線形補間部７６を有している。アクセス制御部２２ａは、入力バッファ７７、転送制御部７８、出力バッファ７９を有している。
【００５５】
入力座標設定部７１は、図２に示す入力座標設定部５１と同様に、座標演算係数が例えば図１に示すＣＰＵ３１により格納される。
出力座標生成部７２は、図２に示す出力座標生成部５２と同様に、１フレームの画像データに対する処理に応じて初期化される。そして、出力座標生成部７２は、垂直歪み補正コア部２２ｂから出力される画素（出力画素）の画像データに応じてカウント値をカウントアップする。このカウント値は、垂直歪み補正コア部２２ｂから出力される出力画素に対応する座標値（出力水平座標値）である。
【００５６】
座標演算部７３は、図２に示す座標演算部５３と同様に、入力座標設定部７１から読み出した座標演算係数と、出力座標生成部７２から出力される座標値に基づいて、補正画素を生成するために必要な入力画素の座標値（入力座標値）を算出する。垂直歪み補正コア部２２ｂは、入力される画像データについて、垂直方向の歪みを補正する。したがって、入力画素の座標値のうち、補正画素の画素値を算出するために垂直方向の画素値（入力垂直座標値）が必要となる。したがって、座標演算部７３は、上記の（２）に基づいて、入力垂直座標Ｙｉの値を算出する。そして、座標演算部７３は、算出した入力垂直座標Ｙｉに応じた入力垂直座標ＶＰと補間係数Ｖαを生成する。
【００５７】
なお、算出した入力垂直座標Ｙｉの値は、整数部分と小数部分を含む。これは、出力画素と入力画素が歪みによって１対１に対応しないからである。座標演算部７３は、算出した入力垂直座標Ｙｉの整数部分と等しい値の入力垂直座標ＶＰと、入力垂直座標Ｙｉの小数部分と等しい値の補間係数Ｖαを生成する。入力垂直座標ＶＰをラインセレクタ７５に供給され、補間係数Ｖαは線形補間部７６に供給される。
【００５８】
また、座標演算部７３は、図２に示す座標演算部７３と同様に、水平方向の画素位置に応じて、垂直補正範囲値ＶＡ２を算出する。そして、座標演算部７３は、算出した垂直補正範囲値ＶＡ２（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）を出力する。垂直補正範囲値ＶＡ２は、転送制御部７８に供給される。上記したように、図１に示すメモリ４２は、バースト転送により高速なデータ転送が可能である。そして、１フレームの画像データにおいて、水平方向に並ぶ複数の画素は１回のバースト転送によってメモリ４２に対してアクセスされる。このため、座標演算部７３は、１回のバースト転送分の画素数の範囲において、垂直歪み補正に必要な画素が含まれるように、垂直補正範囲値ＶＡ２を算出する。
【００５９】
転送制御部７８は、垂直補正範囲値ＶＡ２にしたがってバーストサイズの画像データをメモリ４２から読み出す。入力バッファ７７は、メモリ４２から読み出された画像データを記憶する。したがって、入力バッファ７７の記憶容量は、メモリ４２から画像データを読み出すバーストサイズに応じて設定される。
【００６０】
図９は、メモリ４２に格納された画像データを示す。画像データＰ２に含まれる画素は、所定位置の画素（例えば、図９において左上の画素）を原点とする座標（Ｘ，Ｙ）によって指定される。なお、図９において左右方向（水平方向）を座標Ｘ、上下方向（垂直方向）を座標Ｙとする。画像データＰ２は、図１に示す撮像部１０からデータ変換部２１を介してメモリ４２に転送される。このとき転送されるデータは、図９に矢印で示すラスタ順に転送され、その転送順序にしたがってメモリ４２に格納される。
【００６１】
メモリ４２は、転送順序にしたがって順次転送される画像データを記憶する。したがって、ラスタ方向（水平方向）に連続する画素は、メモリ４２において連続したアドレスの領域に格納される。これは、メモリ４２において、連続するアドレスに対するアクセスに要する時間（アクセス時間）が、不連続なアドレスに対するアクセスに要する時間よりも短いことによる。したがって、水平方向の歪み補正処理は、水平方向にしたがって連続的に転送される２つの画素の画像データに基づいて生成した出力画素の画像データをメモリ４２に格納する。このため、画像データの転送順序と、歪み補正処理において必要とする２つの画素の並ぶ方向が一致しているため、歪み補正処理及びメモリ４２に対するデータ転送の効率が良い。しかし、垂直方向の歪み補正処理は、１フレームの画像データにおいて、垂直方向に並ぶ画素を必要とする。つまり、画像データの転送順序と、歪み補正処理において必要とする２つの画素の並ぶ方向が一致していないため、単純な垂直方向の読み出しは、メモリ４２に対するデータ転送の効率が悪い。このため、本実施形態では、以下のようにメモリ４２に対するデータ転送を行う。
【００６２】
図１０に示すように、転送制御部７８は、水平方向に配列されたバーストサイズ分の画像データ群を、垂直方向に沿って順次読み出す。例えば、１画面の画像データにおいて、水平方向の画素数を「３２０」、垂直方向の画素数を「２４０」とする。この場合、左上に示す画素の座標値は（０，０）となり、右下に示す画素の座標値は（３１９，２３９）となる。また、メモリ４２のバーストサイズを「１６」画素分とする。この場合において、転送制御部７８は、先ず、座標（０，０）から座標（１５，０）の画素の画像データを読み出す。次に、垂直方向に沿って座標を１画素分変更し、座標（０，１）から座標（１５，１）の画素の画像データを読み出す。水平方向におけるバーストサイズ分の画素と、１画面分のライン数の画素を含む矩形状の領域を短冊領域と呼ぶ。つまり、転送制御部７８による画像データの読み出しは、１画面の画像データを水平方向に複数の短冊領域に区画し、各短冊領域毎に画像データを読み出すことと等しい。
【００６３】
このとき、転送制御部７８は、垂直補正範囲値ＶＡ２に従って、バーストサイズの画素の画像データに垂直歪み補正処理に必要な画素が含まれるように読み出す。例えば、図１１（ａ）に示す入力画像データＩＰ１から、図１１（ｂ）に示す出力画像データＯＰ１を生成する。なお、図１１（ａ）（ｂ）では、出力画像の１ライン目とｎライン目（ｎは１フレームの画像のライン数であって、例えば図９に示す画像データの場合、ｎ＝２４０）の画素の画像データと、その画像データを生成するために必要な入力画像の画素にハッチングを付している。
【００６４】
つまり、入力画像データＩＰ１の２ライン目から（ｎー１）ライン目までの画像により、出力画像データＯＰ１の１ライン目からｎライン目までの画像を生成する。つまり、転送制御部７８は、入力画像データＩＰ１の１ライン目とｎライン目の画素の画像データについてはメモリ４２から読み出さない。これにより、メモリ４２に対するアクセス回数が少なくなる。
【００６５】
入力バッファ７７に一旦格納された画像データは、垂直歪み補正コア部２２ｂの内部バッファ７４に転送される。この内部バッファ７４の記憶容量は、垂直歪み補正に必要な画素を記憶するように設定されている。例えば、垂直歪み補正処理において、水平歪み補正処理と同様に、入力画素に基づいて垂直画素を生成する画素の移動が生じる。このため、移動量に応じたライン分の画素が必要となる。したがって、内部バッファ７４の記憶容量は、バーストサイズと移動量に応じて設定される。
【００６６】
図１１（ａ）に示す黒丸は、図１１（ｂ）にハッチングを付した１ラインの画素を生成するために必要な画素の座標値を示す。なお、この座標値は、上記の座標演算部７３にて算出され、整数部と小数部を含む。本実施形態では、線形補間により出力画素の画像データを生成する。このため、垂直歪み補正処理では、算出された座標値に対応して垂直方向に隣接する２つの画素の画像データが必要となる。
【００６７】
図１２（ａ）（ｂ）は、比較例の最近傍法により出力画素の生成を示す。この方法では、出力画素を生成するために必要な画素は、算出した画素の座標値に最も近い（垂直方向の座標値の差が最も小さい）１つの画素を用いる。この方法は、垂直方向に隣接する２つの画素を必要としないため、メモリに対するアクセスの負荷が少ない。しかし、この方法では、画像の細かい部分やエッジが階段状になるため、画像の見栄えが悪くなる、つまり出力画像の画質が劣化する。この点、本実施形態は、線形補間により出力画素を生成する。このため、出力画像の画質の劣化を抑制することができる。
【００６８】
ラインセレクタ７５は、内部バッファ７４に格納された複数ラインの画像データのうち、入力垂直座標ＶＰに応じた２つのラインを選択する。例えば、ラインセレクタ７５は、入力垂直座標ＶＰに応じた１つのラインと、その入力垂直座標ＶＰの次のラインを選択する。そして、ラインセレクタ７５は、選択した２つのラインに含まれ、補間処理後に出力する画素に応じた座標値（出力水平座標値）の画像データＧａ，Ｇｂを出力する。
【００６９】
例えば、図１１（ａ）においてハッチングを付した画素の画像データを読み出す場合を説明する。なお、図１１（ａ）において、図面左右方向に付した数字は水平方向における座標値を示し、図面上下方向に付した数字は垂直方向における座標値（ライン数ｎ＝２４０の場合）を示す。
【００７０】
先ず、ラインセレクタ７５は、入力垂直座標ＶＰにしたがって垂直方向における座標値「１」と座標値「２」のラインを選択する。そして、ラインセレクタ７５は、出力座標生成部７２から出力される座標値（出力水平座標値）にしたがって水平方向における座標値「０」の２つの画素の画像データＧａ，Ｇｂを出力する。同様に、ラインセレクタ７５は、水平方向における座標値「１」〜「３」の画素の画像データを順次出力する。
【００７１】
次に、ラインセレクタ７５は、入力垂直座標ＶＰにしたがって座標値「２」と座標値「３」のラインを選択する。そして、ラインセレクタ７５は、出力座標生成部７２から出力される座標値（出力水平座標値）にしたがって座標値「４」〜「７」の画素の画像データを出力する。
【００７２】
線形補間部７６は、ラインセレクタ７５によって内部バッファ７４から読み出された２つの画素の画像データＧａ，Ｇｂに対して、座標演算部７３から供給される補間係数Ｖαに従って線形補間処理し、処理後の画像データを出力する。例えば、線形補間部７６は、２つの画素の画像データをアルファブレンドして補間後の画像データを生成する。例えば、内部バッファ７４から出力される１つ目の画素の画像データＧａの画素値をＧａ１、２つ目の画素の画像データＧｂの画素値をＧａ２とする。線形補間部５７は、出力する画素の画像データの画素値Ｇａ３を、
Ｇａ３＝（１−Ｖα）・Ｇａ１＋Ｖα・Ｇａ２
により算出する。そして、線形補間部７６は、算出した画素値Ｇａ３の画像データを出力する。
【００７３】
アクセス制御部２２ａは、線形補間部７６から出力される画像データを出力バッファ７９に格納する。そして、アクセス制御部２２ａは、出力バッファ７９に、１回のバースト転送により転送する画像データが格納されると、それらのデータを図１に示すメモリ４２に格納する。
【００７４】
次に、上記の画像処理部２０（水平歪み補正部２１ａ及び垂直歪み補正部２２）の作用を説明する。
水平歪み補正部２１ａは、線形補間部５７により２つの入力画素の画像データに基づいて、１つの出力画素の画像データを生成する。線形補間部５７は、出力画素の座標値に応じて算出された入力画素の座標値の小数部を補間係数とする線形補間処理により出力画素の画像データを生成する。したがって、最近傍処理により出力画素を生成する場合と比べ、階段状の部分が少ない画像が得られる。
【００７５】
ライト部５４は、座標演算部５３により生成された座標値に基づいて、出力画素の画像データの生成に必要な画像データをＦＩＦＯメモリ５５に格納する。アクセス制御部２１ｂの転送制御部５９は、座標演算部５３にて生成された垂直補正範囲（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）に応じて、バッファ５８に記憶し、図１に示す垂直歪み補正部２２において必要な画素の画像データをメモリ４２に対して転送する。このように、メモリ４２に対して、処理に必要な画素の画像データが転送される。
【００７６】
垂直歪み補正部２２の転送制御部７８は、座標演算部７３により生成された垂直補正範囲値ＶＡ２（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）に基づいて、バーストサイズの画像データをメモリ４２から入力バッファ７７へ読み出す。この入力バッファ７７に読み出された画像データは、内部バッファ７４に格納される。ラインセレクタ７５は、内部バッファ７４に格納された複数ラインの画像データのうち、座標演算部７３により生成された入力垂直座標ＶＰに応じた２つのラインを選択し、選択した２つのラインに含まれ、補間処理後に出力する画素に応じた座標値（出力水平座標値）の画像データＧａ，Ｇｂを出力する。線形補間部７６は、ラインセレクタ７５によって内部バッファ７４から読み出された２つの画素の画像データＧａ，Ｇｂに対して、座標演算部７３から供給される補間係数Ｖαに従って線形補間処理し、処理後の画像データを出力する。このように、垂直方向における歪み補正処理に必要な画素の画像データがメモリ４２から読み出され、その画像データに基づいて、歪みを補正した画像の画像データが生成される。
【００７７】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１−１）転送制御部５９は、垂直歪み補正部２２において出力画素の画像データを生成するために必要な画素の画像データをメモリ４２に格納するため、１フレーム分の画像データをメモリ４２に格納する場合と比べ、メモリ４２に対するアクセス数を低減することができる。
【００７８】
（１−２）垂直歪み補正部２２の転送制御部７８は、メモリ４２に保持されたデータのうち、座標演算部７３により生成された範囲値ＶＡ２に基づいて、垂直歪み補正部２２にて必要な画像データを読み出し、内部バッファ７４に格納する。このため、１フレーム分の画像データをメモリ４２から読み出す場合と比べ、メモリ４２に対するアクセス数を低減することができる。
【００７９】
（１−３）垂直歪み補正部２２の転送制御部７８は、座標演算部７３により生成された垂直補正範囲値ＶＡ２（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）に基づいて、バーストサイズの画像データをメモリ４２から入力バッファ７７へ読み出す。この入力バッファ７７に読み出された画像データは、内部バッファ７４に格納される。したがって、内部バッファ７４には、垂直方向の歪み補正に必要な画素の画像データが格納される。このため、不要な画像データが内部バッファ７４に格納されないため、少ない容量の内部バッファ７４を用いることができ、垂直歪み補正部２２の回路規模の増大を抑制し、垂直歪み補正部２２の実装を容易にすることができる。
【００８０】
（第二実施形態）
以下、第二実施形態を図１３〜図２２に従って説明する。
なお、本実施形態において、上記実施形態と同じ部材については同じ符号を付し、その説明の一部または全てを省略する。
【００８１】
図１３に示すように、撮像装置は、撮像部１０、画像処理部１００、操作部４１、メモリ（記憶部）４２、表示デバイス４３を有している。
画像処理部１００は、データ変換部１０１、垂直歪み補正部１０２、歪み補正部２３、画像処理部２４、静止画コーデック部２５、動画コーデック部２６、メモリカードＩ／Ｆ２７、表示Ｉ／Ｆ２８、ＤＭＡ調停部２９、メモリコントローラ３０、ＣＰＵ３１を有している。
【００８２】
データ変換部１０１は、図１に示すデータ変換部２１と同様に、撮像部１０から出力される撮像データのデータ形式（例えばＲＧＢ形式）を所定の形式（例えばＹＣｂＣｒ形式）に変換する。変換後の画像データは、所定の設定（例えば歪み補正の要否）に応じて出力される。例えば、歪み補正を行う設定の場合、変換後の画像データは水平歪み補正部１０１ａに供給される。水平歪み補正部１０１ａは、図１に示す水平歪み補正部２１ａと同様に、供給される画像データに対して水平方向の歪みを補正する処理を行い、処理後の画像データを出力する。処理後の画像データは、垂直歪み補正部１０２に供給される。歪み補正を行わない設定の場合、変換後の画像データは、アクセス制御部１０１ｂを介してメモリ４２に格納される。
【００８３】
垂直歪み補正部１０２は、水平歪み補正部１０１ａから出力される画像データに対して垂直方向の歪みを補正する処理を行う。垂直歪み補正部１０２はアクセス制御部１０２ａを含む。アクセス制御部１０２ａは、垂直歪み補正部１０２による処理後の画像データをメモリ４２に格納する。垂直歪み補正部１０２は、第２の歪み補正部，第２の補正部の一例である。
【００８４】
本実施形態の画像処理部１００において、歪み補正処理を行う場合、水平歪み補正部１０１ａは水平歪み補正処理後の画像データを垂直歪み補正部１０２に対して出力する。そして、垂直歪み補正部１０２は、水平歪み補正部１０１ａから供給される画像データに対して垂直歪み補正処理を行う。つまり、画像処理部１００は、水平歪み補正処理後の画像データについてメモリ４２にアクセス（書き込みと読み出し）を行わない。このため、メモリ４２に対するアクセスが少なくなる。
【００８５】
図１４に示すように、垂直歪み補正部１０２は、入力座標生成部１１１、出力座標生成部１１６、入力座標設定部１１３、座標演算部１１４，座標演算部１１７、イネーブル信号生成部１１５、複数のディレイラインバッファＤＬＢ、ディレイラインバッファ選択部１１２、線形補間部１１８、アクセス制御部１０２ａを有している。
【００８６】
ディレイラインバッファＤＬＢの数は、図１３に示すメモリ４２に対するアクセスに対して転送するデータ量（バースト転送量）と、１フレームの画像データにおける水平方向の画素数に応じて設定されている。また、各ディレイラインバッファＤＬＢのそれぞれにはインデックス値が設定されている。例えば、インデックス値を［０］〜［１１９］とする。各ディレイラインバッファＤＬＢやそれぞれに関するデータ等を区別する場合に、このインデックス値を用いる。例えば、ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］として示す。
【００８７】
入力座標生成部１１１は、イネーブル信号ＤＤＥに応答して入力画素の座標値を生成する。例えば、入力座標生成部１１１はカウンタ１１１ａを含む。カウンタ１１１ａは、１フレームの画像データに対する処理に応じて初期化される。そして、カウンタ１１１ａは、水平歪み補正部１０１ａから供給されるイネーブル信号ＤＴＥに応じて活性化し、水平歪み補正部１０１ａから出力される画素（出力画素）の画像データに応じてカウント値をカウントアップする。画像データは、クロック信号に同期して転送される。このクロック信号は、例えば、図１３に示す画像処理部１００におけるシステムクロック信号である。カウンタ１１１ａは、クロック信号をカウントし、カウント値を出力する。このカウント値は、垂直歪み補正部１０２が入力する画素の座標値（Ｘｉ，Ｙｉ）に対応する。例えば、水平方向の座標値Ｘｉは、１ライン分の画素に応じて、例えば水平同期信号によりリセットされる。また、垂直方向の座標値Ｙｏは、水平方向の座標値Ｘｉのリセットによりカウントアップされ、１フレームの終了、例えば垂直同期信号によりリセットされる。水平方向の座標値Ｘｉは入力座標設定部１１３とディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］に供給され、垂直方向の座標値Ｙｉはイネーブル信号生成部１１５に供給される。
【００８８】
各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、１フレームの画像データの各ラインデータにおいて、図１３に示すメモリ４２に対する１回のバースト転送により転送されるデータ数に応じた数の画素の画像データを記憶可能である。各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、イネーブル信号ＤＤＥ、入力水平座標Ｘｉ、及び後述する座標演算部１１７にて生成される垂直入力座標に基づいて、１フレームの画像データについて、対応する入力水平座標Ｘｉの画素の画像データを記憶する。
【００８９】
例えば、１フレームの画像データの大きさ（サイズ）を１９２０×１０８８（画素）とする。また、メモリ４２に対するバースト転送量を１６画素分とする。この場合、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、１フレームの画像データの各ラインにおいて、１６画素分の画素の画像データを記憶する。なお、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］が格納可能なライン数は、垂直歪み補正における画素の移動量に応じて設定される。
【００９０】
例えば、ディレイラインバッファＤＬＢ［０］は、イネーブル信号ＤＤＥが第１のレベル（例えばＨレベル）のとき、「０」〜「１５」の入力水平座標Ｘｉに応答して画像データＰＤ２を対応する領域に記憶する。同様に、ディレイラインバッファＤＬＢ［１］は、イネーブル信号ＤＤＥが第１のレベル（例えば、Ｈレベル）のとき、「１６」〜「３１」の入力水平座標Ｘｉに応答して画像データＰＤ２を対応する領域に記憶する。そして、ディレイラインバッファＤＬＢ［１１９］は、イネーブル信号ＤＤＥが第１のレベル（例えばＨレベル）のとき、「１９０４」〜「１９１９」の入力水平座標Ｘｉに応答して画像データＰＤ２を対応する領域に記憶する。一方、イネーブル信号ＤＤＥが第２のレベル（例えば、Ｌレベル）のとき、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、入力水平座標Ｘｉが対応していても画像データを記憶しない。
【００９１】
そして、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、入力垂直座標に基づいて垂直歪み補正に必要な画素の画像データを記憶すると、ディレイラインバッファ選択部１１２に対してそれぞれ演算要求ＣＲ［０］〜ＣＲ［１１９］と、出力ライン番号ＯＬ［０］〜ＯＬ［１１９］を出力する。そして、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、ディレイラインバッファ選択部１１２から出力される演算要求受付ＣＡ［０］〜ＣＡ［１１９］に応答して演算要求ＣＲ［０］〜ＣＲ［１１９］をリセットし、垂直歪み補正処理に必要なラインに含まれる画素の画像データを順次出力する。
【００９２】
ディレイラインバッファ選択部１１２は、複数のディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］から出力される演算要求ＣＲ［０］〜ＣＲ［１１９］について、１つの演算要求ＣＲを受け付け、その受け付けた演算要求ＣＲを出力するディレイラインバッファに対して演算要求受付ＣＡを出力する。
【００９３】
ディレイラインバッファ選択部１１２は、演算要求ＣＲを受け付けたディレイラインバッファＤＬＢに対応するインデックス値Ｉｄｘを出力する。インデックス値Ｉｄｘは、複数のディレイラインバッファのそれぞれを識別するために付された番号であり、水平方向の画素の座標値（Ｘ）に対応する。インデックス値Ｉｄｘは、ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］に格納される画素の座標値（Ｘｉ）を、そのディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］に格納される水平方向の画素の数（例えば、「１６」）で除した整数値と等しい。また、ディレイラインバッファ選択部１１２は、演算要求ＣＲを受け付けたディレイラインバッファＤＬＢの出力ライン番号ＯＬと等しい出力ライン番号ＳＬｎを出力する。そして、ディレイラインバッファ選択部１１２は、演算要求ＣＲを受け付けたディレイラインバッファから出力される２つのラインの画像データを順次線形補間部１１８に出力する。
【００９４】
ディレイラインバッファ選択部１１２は、ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］の水平画素数に応じた画像データを出力すると、演算要求受付ＣＡ［０］〜ＣＡ［１１９］をリセットする。そして、ディレイラインバッファ選択部１１２は、次の演算要求ＣＲを受け付け、その受け付けた演算要求ＣＲを出力するディレイラインバッファに対して演算要求受付ＣＡを出力する。
【００９５】
入力座標設定部１１３には、画像データの格子ブロックに対応する設定値のテーブルが格納されている。設定値は、各格子ブロックにおいて、出力画素の座標値に対応する入力画素の座標値を算出するために必要な値であり、上記の式（２）における頂点Ａ１〜Ｄ１のＹ座標値Ａｙ〜Ｄｙを含む。なお、格子ブロックのサイズ（水平方向（ｘ軸方向）の画素数Ｍと垂直方向（ｙ軸方向）の画素数Ｎ）はそれぞれ所定の値（例えば、「６４」）に設定されている。格子ブロックに応じたテーブルの値を「ＧＴＢＬ［ｍ］［ｎ］」とする。［ｍ］は格子テーブルの水平方向の座標値、［ｎ］は格子テーブルの垂直方向の座標値である。
【００９６】
例えば、１フレームの画像データの大きさ（水平方向の画素数×垂直方向の画素数）を「１９２０×１０８８」とする。そして、１つの格子ブロックの大きさを「６４×６４」（Ｍ＝Ｎ＝６４）とする。この場合、水平方向のテーブルの数は「３０」（ｍ＝０〜２９）、垂直方向のテーブルの数は「１７」（ｎ＝０〜１６）となる。
【００９７】
そして、格子ブロックＧＢ（ｍ，ｎ）に対応する頂点の座標値（垂直座標値）が含まれるテーブルを「ＧＴＢＬ［ｍ］［ｎ］」とする。例えば、図７において、格子ブロック（矩形）Ｒ２内の各画素の画像データは、四角形Ｒ１に含まれる画素の画像データに基づいて生成される。そして、四角形Ｒ１の画素の座標値は、四角形Ｒ１の頂点Ａ１，Ｂ１，Ｃ１，Ｄ１の座標値Ａｙ，Ｂｙ，Ｃｙ，Ｄｙに基づいて算出される。この格子ブロックＲ１の座標値を，ｍ＝１，ｎ＝１とする。この場合、格子ブロックＲ１に対応する頂点の座標は、「ＧＴＢＬ［１］［１］」として参照される。
【００９８】
入力座標設定部１１３は、入力座標生成部１１１から供給される水平方向の座標値Ｘｉに基づいて、出力画素に応じた２つの格子ブロックの頂点座標を含む第１の格子ブロック座標ＧＢ１を座標演算部１１４に出力する。垂直歪み補正部１０２において、出力画素の水平方向の座標値Ｘｏは入力画素の水平方向の座標値Ｘｉと等しい。したがって、入力座標設定部１１３は、出力画素の座標値Ｘｏ（＝Ｘｉ）に応じた２つの格子ブロックのテーブルを選択する。
【００９９】
入力座標設定部１１３が選択する２つの格子ブロックのテーブルは、座標値Ｘｏにおいて、１フレームの画像データを生成するために必要な入力画素の垂直方向の範囲を算出するためのものである。つまり、２つの格子ブロックは、１フレームの画像データにおいて最初のラインにおける座標値Ｘｏの画素を含む格子ブロックと、１フレームの画像データにおいて最後のラインにおける座標値Ｘｏの画素を含む格子ブロックである。これらの格子ブロックのＹ座標は、１フレームの画像データの画素数（ライン数）と、格子ブロックの垂直方向の画素数（Ｎ）に応じて設定され、例えば、「０」「１６」である。格子ブロックのＸ座標は、水平方向の座標値Ｘｏ（＝Ｘｉ）を、格子ブロックの水平方向の画素数（Ｍ）で割った結果の整数部分の値（＝Ｘｉ／６４）である。入力座標設定部１１３は、これらの座標値により選択したテーブルＧＴＢＬ［Ｘｉ／６４］［０］，ＧＴＢＬ［Ｘｉ／６４］［１６］に含まれる頂点座標を含む第１の格子ブロック座標ＧＢ１を座標演算部１１４に出力する。
【０１００】
また、入力座標設定部１１３は、ディレイラインバッファ選択部１１２から出力されるインデックス値Ｉｄｘと出力ライン番号ＳＬｎに基づいて、出力画素を生成するために必要な複数のラインデータを含む格子ブロックの頂点座標を含む第２の格子ブロック座標ＧＢ２を第２の座標演算部１１７に出力する。
【０１０１】
第１の座標演算部１１４は、入力座標設定部１１３から供給される格子ブロック座標ＧＢ１に基づいて、水平方向の画素位置に応じて、垂直補正範囲値ＶＡ２を算出する。そして、座標演算部１１４は、算出した垂直補正範囲値ＶＡ２（垂直座標の最小値Ｙｍｉｎ及び最大値Ｙｍａｘ）を出力する。垂直補正範囲値ＶＡ２は、イネーブル信号生成部１１５に供給される。
【０１０２】
詳述すると、座標演算部１１４における演算式は、上記の式（２）と格子ブロック座標ＧＢ１に基づいて、
Ｙｉ＝ｆｕｎｃ（ＧＴＢＬ［ｍ］［ｎ］，Ｘｏ，Ｙｏ）    ・・・（３）
と表される。座標演算部１１４は、水平方向にあっては格子ブロックの大きさ（画素数）の範囲内であって、垂直方向にあっては１フレーム分の画像データの大きさ（ライン数）の範囲において、垂直歪み補正処理に必要な画素の最小値Ｙｍｉｎと最大値Ｙｍａｘを算出する。
【０１０３】
図２０に示すように、１つの格子ブロックにおける水平方向座標の最小値「０」について、１フレームの最初のライン（Ｙｏ＝０）の出力画素を生成するために必要な入力画素の座標値Ｙｍｉｎ１と、最後のライン（Ｙｏ＝６３）の出力画素を生成するために必要な入力画素の座標値Ｙｍａｘ１を算出する。同様に、１つの格子ブロックにおける水平方向座標の最大値（例えば、「６３」）について、１フレームの最初のライン（Ｙｏ＝０）の出力画素を生成するために必要な入力画素の座標値Ｙｍｉｎ２と、最後のライン（Ｙｏ＝６３）の出力画素を生成するために必要な入力画素の座標値Ｙｍａｘ２を算出する。
【０１０４】
座標演算部１１４は、各座標値Ｙｍｉｎ１，Ｙｍｉｎ２，Ｙｍａｘ１，Ｙｍａｘ２を、上記の式（３）にしたがって、
Ｙｍｉｎ１＝ｆｕｎｃ（ＧＴＢＬ［Ｘｉ／６４］［０］，  ０，０）
Ｙｍｉｎ２＝ｆｕｎｃ（ＧＴＢＬ［Ｘｉ／６４］［０］，６３，０）
Ｙｍａｘ１＝ｆｕｎｃ（ＧＴＢＬ［Ｘｉ／６４］［１６］，  ０，６３）
Ｙｍａｘ２＝ｆｕｎｃ（ＧＴＢＬ［Ｘｉ／６４］［１６］，６３，６３）
により算出する。そして、座標演算部１１４は、必要な座標値Ｙｍｉｎ，Ｙｍａｘを、
Ｙｍｉｎ＝ｍｉｎ（Ｙｍｉｎ１，Ｙｍｉｎ２）
Ｙｍａｘ＝ｍａｘ（Ｙｍａｘ１，Ｙｍａｘ２）＋ＹＧｏｆ
により算出する。なお、「ｍａｘ（ａ，ｂ）」は値「ａ」と値「ｂ」のうちの大きい方の値を返す関数であり、「ｍｉｎ（ａ，ｂ）」は値「ａ」と値「ｂ」のうちの小さい方の値を返す関数である。また、「ＹＧｏｆ」は、１フレームの画像データにおける原点の座標値、つまり格子ブロックに対する画像データ全体のオフセット値である。このオフセット値「ＹＧｏｆ」は、最初のラインを含む格子ブロックから最後のラインを含む格子ブロックまでの格子ブロックの数、つまり垂直方向における格子ブロックの数（例えば「１７」）から「１」を減算した数と、格子ブロックの垂直方向の画素数Ｎ（例えば、「６４」）の積により求められる値（＝１６×６４）である。座標演算部１１４は、算出した座標値（Ｙｍｉｎ，Ｙｍａｘ）を含む垂直補正範囲値ＶＡ２を出力する。
【０１０５】
イネーブル信号生成部１１５は、入力座標生成部１１１から出力される入力垂直座標Ｙｉと座標演算部１１４から供給される垂直補正範囲値ＶＡ２に基づいてイネーブル信号ＤＤＥを出力する。垂直補正範囲値ＶＡ２は、補正に必要な入力画素の座標値の最小値Ｙｍｉｎと最大値Ｙｍａｘを含む。イネーブル信号生成部１１５は、入力垂直座標Ｙｉが最小値Ｙｍｉｎと最大値Ｙｍａｘの間（Ｙｍｉｎ≦Ｙｉ≦Ｙｍａｘ）の場合に第１のレベル（例えばＨレベル）のイネーブル信号ＤＤＥを出力する。また、イネーブル信号生成部１１５は、入力垂直座標Ｙｉが最小値Ｙｍｉｎより小さい（Ｙｉ＜Ｙｍｉｎ）か、入力垂直座標Ｙｉが最大値Ｙｍａｘより大きい（Ｙｍａｘ＜Ｙｉ）ときに第１のレベルと異なる第２のレベル（例えばＬレベル）のイネーブル信号ＤＤＥを出力する。
【０１０６】
出力座標生成部１１６は、ディレイラインバッファ選択部１１２から供給されるインデックス値Ｉｄｘと出力ライン番号ＳＬｎに基づいて出力画素の座標値を生成する。出力座標生成部１１６は、クロック信号ＣＬＫをカウントするカウンタ１１６ａを含む。インデックス値Ｉｄｘは、線形補間部１１８に対してディレイラインバッファ選択部１１２から出力される出力画素Ｇａ，Ｇｂを記憶していたディレイラインバッファを特定するための番号である。インデックス値Ｉｄｘは、出力画素の座標値Ｘｏを、ディレイラインバッファにおける水平方向の記憶容量（記憶する画素数）で割った結果の整数値と等しい。そして、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］における水平方向の位置Ｘｄは、出力画素又は出力画素を転送するためのクロック信号ＣＬＫをカウンタ１１６ａによりカウントすることにより得られる。さらに、必要とする座標値は、格子ブロックにおける座標値（格子ブロック単位の相対座標値）である。したがって、出力座標生成部１１６は、ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］における水平方向の記憶画素数（例えば、「１６」）と、インデックス値Ｉｄｘの乗算した結果に各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］における水平方向の位置Ｘｄと、格子ブロックの水平方向のサイズＭに基づいて、１フレームの画像における出力画素の座標値Ｘｏ（水平方向の座標値）を、次式
Ｘｏ＝（Ｉｄｘ＊１６＋Ｘｄ）％Ｍ
により算出する。なお、「％」は、例えば演算式「ｃ＝ａ％ｂ」において、被除数ａを除数ｂで割ったときの剰余（余りの整数）を算出する演算子である。
【０１０７】
出力ライン番号ＳＬｎは、出力画素の垂直座標値に対応する。したがって、出力座標生成部１１６は、格子ブロックにおける出力画素の座標値（相対座標値）ＹＢを、格子ブロックの垂直方向のサイズＮに基づいて、
ＹＢ＝ＳＬｎ％Ｎ
により算出する。そして、出力座標生成部１１６は、算出した座標値Ｘｏ，ＹＢを座標演算部１１７に出力する。
【０１０８】
座標演算部１１７は、図４に示す座標演算部７３と同様に、入力座標設定部１１３から出力される第２の格子ブロック座標ＧＢ２と、出力座標生成部１１６から出力される出力画素の座標値Ｘｏ，ＹＢに基づいて、出力画素を生成するために必要な入力画素の座標値（入力垂直座標）Ｙｉを、上記の式（３）にしたがって、
Ｙｉ＝ｆｕｎｃ（ＧＴＢＬ［ｍ］［ｎ］，Ｘｏ，ＹＢ）
により算出する。
【０１０９】
そして、座標演算部１１７は、算出した入力垂直座標Ｙｉに応じた入力垂直座標ＶＰと補間係数Ｖαを生成する。算出した入力垂直座標Ｙｉの値は、整数部分と小数部分を含む。座標演算部５３は、算出した入力垂直座標Ｙｉの整数部分と等しい値の入力垂直座標ＶＰと、入力垂直座標Ｙｉの小数部分と等しい値の補間係数Ｖαを生成する。入力垂直座標ＶＰはディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］に供給され、補間係数Ｖαは線形補間部１１８に供給される。
【０１１０】
また、座標演算部１１７は、入力座標設定部１１３から出力される第２の格子ブロック座標ＧＢ２と、出力座標生成部１１６から出力される出力画素の座標値Ｘｏ，ＹＢに基づいて、出力画素を生成するために必要な分割ラインの範囲を示す座標値Ｙｍｉｎ３，Ｙｍａｘ３を算出する。
【０１１１】
図２１は、１つの格子ブロックＧＢに対して、４つのディレイライン入力バッファに格納された画素の座標値と、座標演算部１１７にて算出される座標値Ｙｍｉｎ３，Ｙｍａｘ３を示す。
【０１１２】
１つの格子ブロックＧＢは、水平方向の画素数（例えば、「６４」）と垂直方向の画素数（例えば、「６４」）に応じて、所定位置（例えば左上）の画素を基準とする座標値ＢＸ＝０〜６３，ＢＹ＝０〜６３の画素Ｐｘを含む。ディレイライン入力バッファにおける水平方向の画素数を例えば「１６」とすると、この格子ブロックＧＢの画素の画像データは４つのディレイライン入力バッファに記憶される。例えば、図２１において、左右方向に分割した格子ブロックＧＢ０〜ＧＢ３のそれぞれは、ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［３］に記憶される。図２１における実線Ｌ１１は、出力画素を生成するために必要な画素を示す。そして、ディレイラインバッファＤＬＢ［１］における座標値Ｙｍｉｎ３，Ｙｍａｘ３を算出する。
【０１１３】
座標演算部１１７は、対応するディレイラインバッファにおける水平方向座標の最小値Ｘｍｉｎと最大値Ｘｍａｘを、出力座標生成部１１６から出力される座標値Ｘｏに基づいて、
Ｘｍｉｎ＝（Ｘｏ／１６）＊１６
Ｘｍａｘ＝（Ｘｏ／１６）＊１６＋１５
により算出する。そして、座標演算部１１７は、最小値Ｘｍｉｎと最大値Ｘｍａｘの座標において必要な入力画素の垂直座標Ｙ１，Ｙ２を、上記の式（３）にしたがって、
Ｙ１＝ｆｕｎｃ（ＧＴＢＬ［ｍ］［ｎ］，Ｘｍｉｎ，ＹＢ）
Ｙ２＝ｆｕｎｃ（ＧＴＢＬ［ｍ］［ｎ］，Ｘｍａｘ，ＹＢ）
により算出する。
【０１１４】
次に、座標演算部１１７は、算出した座標値Ｙ１，Ｙ２を互いに比較し、比較結果に応じて、
（Ｙ１＞Ｙ２）の場合、Ｙｍｉｎ３＝Ｙ２，Ｙｍａｘ３＝Ｙ１
（Ｙ１＜＝Ｙ２）の場合、Ｙｍｉｎ３＝Ｙ１，Ｙｍａｘ３＝Ｙ２
にしたがって座標値Ｙｍｉｎ３，Ｙｍａｘ３を設定する。
【０１１５】
垂直歪み補正処理において、出力画素を生成するために、出力画素の垂直座標値に基づいて算出した入力座標値に対応する２つの画素の画像データを用いる。出力画素の垂直座標値に対するこれらの２つの画素の垂直座標値の距離（移動量）は、撮像光学系１１（図１３参照）における収差（歪曲収差）に対応する。したがって、１つのディレイラインバッファに記憶された１つのラインに対応する複数画素（例えば、１６画素）の出力画素に対する入力画素の移動量は、出力画素の水平方向の座標値に応じて異なる。
【０１１６】
例えば、図２２（ａ）において、数字を付した画素は、１つのラインにおける複数画素（図２２では８画素）の出力画素を生成するために必要な画素を示す。画素に付された数字は、「ライン番号」と「水平方向の座標値」を示す。例えば、「１０」は、ライン番号「１」の水平座標値「０」の画素を示す。垂直歪み補正部１０２（後述する線形補間部１１８）は、水平座標値「０」の出力画素を、「１０」「２０」の入力画素に基づいて生成する。同様に、水平座標値「１」の出力画素を、「１１」「２１」の入力画素に基づいて生成する。そして、水平座標値「７」の出力画素を、「３７」「４７」の入力画素に基づいて生成する。
【０１１７】
図２２（ａ）に示す例の場合、出力画素を生成するため、ディレイラインバッファＤＬＢ（例えば、ＤＬＢ［０］）に記憶されたライン番号「１」からライン番号「４」までの画像データが用いられる。言い換えれば、ディレイラインバッファＤＬＢ［０］にライン番号「１」からライン番号「４」までの画像データが記憶されると、１つの分割ラインに含まれる８画素の画像データを生成することができる。この場合、出力画素を生成するための最小の垂直座標値Ｙｍｉｎ３は「１」であり、最大の垂直座標値Ｙｍａｘ３は「４」である。
【０１１８】
このような垂直座標値Ｙｍｉｎ３，Ｙｍａｘ３は、１つの分割ラインの画素が含まれる格子ブロックに対応する頂点座標に基づいて算出される。
つまり、インデックス値Ｉｄｘは、分割ラインの画素における水平方向の座標値に対応し、出力ライン番号ＳＬｎは、分割ラインの垂直方向の座標値に対応する。これらの水平方向の座標値と垂直方向の座標値に基づいて、１つの格子ブロックが選択される。インデックス値Ｉｄｘは、出力画素を生成するために用いる入力画素が記憶されたディレイラインバッファの番号を示し、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は水平方向のラインを所定画素（例えば、１６画素）に分割した分割ラインを記憶する。格子ブロックの水平方向のサイズ（画素数）は例えば６４画素である。従って、インデックス値Ｉｄｘを１／４倍（＝１６／６４）した値が、格子ブロックの水平方向の座標値［ＢＸ］である。そして、出力ライン番号ＳＬｎは、１フレームの画像におけるライン番号と等しい。従って、出力ライン番号ＳＬｎを格子ブロックの垂直方向のサイズ（例えば６４画素）で割った値が、格子ブロックの垂直方向の座標値［ＢＹ］である。つまり、格子ブロックの座標は、（Ｉｄｘ＊４、ＳＬｎ／６４）である。このため、入力座標設定部１１３は、テーブルＧＴＢＬ［Ｉｄｘ＊４］［ＳＬｎ／６４］に含まれる頂点座標を含む第２の格子ブロック座標ＧＢ２を第２の座標演算部１１７に出力する。
【０１１９】
なお、１つの分割ラインの出力画素を生成するために必要な入力画素が、２つの格子ブロックにまたがって含まれる場合がある。しかし、垂直歪み補正に必要なラインの番号を得るためには、１つの格子ブロックにおける頂点座標を用いても、問題を生じることはない。なお、２つの格子ブロックに対応するテーブルに含まれる頂点座標を第２の格子ブロック座標ＧＢ２としてもよい。
【０１２０】
線形補間部１１８は、座標演算部１１７から出力される補間係数Ｖαに基づいて、ディレイラインバッファ選択部１１２から出力される２ライン分の画像データの垂直方向に対応する２つの画素の画像データＧａ，Ｇｂを線形補間して生成した画像データＧｃをアクセス制御部１０２ａに出力する。例えば、線形補間部１１８は、２つのライン画素の画像データをアルファブレンドして補間後の画像データを生成する。例えば、ディレイラインバッファ選択部１１２から出力される１ライン目の画素の画像データ（画素値）をＧａ１、２ライン目の画素の画像データ（画素値）をＧａ２とする。線形補間部１１８は、出力する画素の画像データＧａ３（Ｇｃ）を、
Ｇａ３＝（１−Ｖα）・Ｇａ１＋Ｖα・Ｇａ２
により算出する。そして、線形補間部１１８は、生成した画像データ（画素値）Ｇａ３を出力する。
【０１２１】
アクセス制御部１０２ａは、データバッファ１２１と転送先アドレス演算部１２２を有している。データバッファ１２１は、線形補間部１１８から出力される画像データＰＤ３を順次記憶する。転送先アドレス演算部１２２は、データバッファ１２１に格納された画像データを格納するメモリ４２の転送先アドレスを演算する。転送先アドレス演算部１２２は、データバッファ１２１に格納された補正後の画像データを生成するために用いられる画像データを出力するディレイラインバッファのインデックス値Ｉｄｘと、補正後の画像データの出力垂直座標Ｙｏに基づいて、転送先アドレスを算出する。アクセス制御部１０２ａは、転送先アドレスと補正後の画像データをメモリ４２に出力する。メモリ４２は、転送先アドレスに応じた領域に、アクセス制御部１０２ａから転送される画像データを記憶する。
【０１２２】
次に、ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］の詳細を説明する。
図１５に示すように、ディレイラインバッファＤＬＢ［０］は、ディレイライン入力バッファＤＩＢ［０］とディレイライン出力制御部ＤＯＣ［０］を有している。同様に、ディレイラインバッファＤＬＢ［１］〜ＤＬＢ［１１９］は、ディレイライン入力バッファＤＩＢ［０］〜ＤＩＢ［１１９］とディレイライン出力制御部ＤＯＣ［１］〜ＤＯＣ［１１９］を有している。
【０１２３】
ディレイライン入力バッファＤＩＢ［０］〜ＤＩＢ［１１９］は、１フレームの画像データを水平方向に分割した部分ラインデータを複数段記憶する。１段の分割ラインデータのデータ量は、図１３に示すメモリ４２に対する１回のバースト転送により転送されるデータ量に応じて設定され、例えば１６画素の画像データを記憶する。分割ラインデータの段数は、垂直歪み補正処理における移動量に応じて設定されている。
【０１２４】
ディレイライン入力バッファＤＩＢ［０］〜ＤＩＢ［１１９］は、それぞれインデックス値Ｉｄｘが設定され、そのインデックス値Ｉｄｘに応じた水平座標の画素の画像データを記憶する。例えば、１フレームの画像データにおける水平方向の画素数を「１９２０」とする。この場合、インデックス値Ｉｄｘは、「０」〜「１１９」となる。インデックス値Ｉｄｘが「０」のディレイライン入力バッファＤＩＢは、水平方向の座標値が「０」〜「１５」の画素の画像データを記憶し、インデックス値Ｉｄｘが「１」のディレイライン入力バッファＤＩＢは、水平方向の座標値が「１６」〜「３１」の画素の画像データを記憶する。そして、インデックス値Ｉｄｘが「１１９」のディレイライン入力バッファＤＩＢは、水平方向の座標値が「１９０４」〜「１９１９」の画素の画像データを記憶する。
【０１２５】
各ディレイライン入力バッファＤＩＢ［０］〜ＤＩＢ［１１９］は、第１のレベル（Ｈレベル）のイネーブル信号ＤＤＥに応答して画像データを記憶する。イネーブル信号ＤＤＥは、各ディレイライン入力バッファＤＩＢ［０］〜ＤＩＢ［１１９］が記憶する分割ラインに垂直歪み補正処理に必要な画素が含まれる場合に第１のレベルとなる。各ディレイライン入力バッファＤＩＢ［０］〜ＤＩＢ［１１９］は、それぞれ対応する座標値の画素が含まれる分割ラインデータを記憶する。
【０１２６】
ディレイライン入力バッファＤＩＢ［０］〜ＤＩＢ［１１９］は、記憶した分割ラインの段数に応じたバッファ段数ＢＬ［０］〜ＢＬ［１１９］を出力する。ディレイライン出力制御部ＤＯＣ［０］〜ＤＯＣ［１１９］は、バッファ段数ＢＬ［０］〜ＢＬ［１１９］を監視し、垂直歪み補正処理が可能なバッファ段数になると、ディレイラインバッファ選択部１１２に演算要求ＣＲ［０］〜ＣＲ［１１９］を出力する。ディレイラインバッファ選択部１１２は、各ディレイライン出力制御部ＤＯＣ［０］〜ＤＯＣ［１１９］から出力される演算要求ＣＲ［０］〜ＣＲ［１１９］に応じて演算要求受付ＣＡ［０］〜ＣＡ［１１９］を出力する。例えば、ディレイラインバッファ選択部１１２は、複数の演算要求ＣＲを調停し、１つの演算要求ＣＲに対応する演算要求受付ＣＡを有効にする。有効な演算要求受付ＣＡを受け取ったディレイライン出力制御部ＤＯＣ［０］〜ＤＯＣ［１１９］は、ディレイライン入力バッファＤＩＢ［０］〜ＤＩＢ［１１９］に対してリード要求ＲＲ［０］〜ＲＲ［１１９］とリードオフセット値ＲＯＦ［０］〜ＲＯＦ［１１９］を出力する。ディレイライン入力バッファＤＩＢは、リード要求ＲＲ［０］〜ＲＲ［１１９］とリードオフセット値ＲＯＦ［０］〜ＲＯＦ［１１９］に基づいて、垂直歪み補正処理に必要な画像データを出力する。
【０１２７】
出力バッファＯＢは２つのバッファ部ＯＢａ，ＯＢｂを有し、各バッファ部ＯＢａ，ＯＢｂはそれぞれ、２つの分割ラインの画像データを記憶する。出力バッファＯＢは、バッファ部ＯＢａ，ＯＢｂに対して交互にデータの書き込みとデータの読み出しを行う。例えば、第１のバッファ部ＯＢａに対して、１つのディレイライン入力バッファから出力される画像データを記憶する。そして、第１のバッファ部ＯＢａから画像データの読み出しを行うとき、第２のバッファ部ＯＢｂに対して画像データの書き込みを行う。ディレイラインバッファ選択部１１２は、出力バッファＯＢから出力される画像データを、図１４に示す線形補間部１１８に出力する。
【０１２８】
次に、ディレイライン入力バッファＤＩＢ［０］を説明する。なお、各ディレイライン入力バッファＤＩＢ［１］〜ＤＩＢ［１１９］はディレイライン入力バッファＤＩＢ［０］と同じであるため、ディレイライン入力バッファＤＩＢ［１］〜ＤＩＢ［１１９］の図面及び説明を省略する。
【０１２９】
図１６に示すように、ディレイライン入力バッファＤＩＢ［０］は、ライト制御部１３１、メモリアレイ１３２、リード制御部１３３、差分演算部１３４を有している。
メモリアレイ１３２は、複数段（図において１２段）のラインメモリ１３２ａを有している。各ラインメモリ１３２ａの記憶容量は図１３に示すメモリ４２に対する１回のバースト転送における転送量に応じた値に設定され、例えば１６画素分の画像データを記憶するように設定されている。メモリアレイ１３２の段数、つまりラインメモリ１３２ａの数（ライン数）は、垂直歪み補正処理における垂直移動量に応じた段数により設定されている。
【０１３０】
ライト制御部１３１には、画像データＰＤ２と、画像データＰＤ２に対応する入力水平座標Ｘｉが供給される。また、ライト制御部１３１には、イネーブル信号ＤＤＥが供給される。
【０１３１】
ライト制御部１３１はレジスタ１３１ａを有し、レジスタ１３１ａにはディレイライン入力バッファＤＩＢのインデックス値Ｉｄｘが格納されている。
ライト制御部１３１は、第１のレベル（Ｈレベル）のイネーブル信号ＤＤＥに応答してメモリアレイ１３２に対する書き込み処理を行い、第２のレベル（Ｌレベル）のイネーブル信号ＤＤＥに応答して書き込み処理を行わない。書き込み処理において、ライト制御部１３１は、入力水平座標Ｘｉとインデックス値Ｉｄｘに基づいて、画像データＰＤ２がディレイライン入力バッファＤＩＢ［０］に対応するデータか否かを判定する。例えば、ライト制御部１３１は、入力水平座標Ｘｉをメモリアレイ１３２の記憶容量に応じた水平画素数（例えば、１６画素）で除算演算し、その演算結果の整数値とインデックス値Ｉｄｘとを比較する。ライト制御部１３１は、演算結果の整数値がインデックス値Ｉｄｘと等しい場合、自バッファＤＩＢ［０］に対応する画素の画像データと判定し、それらが等しくない場合に自バッファＤＩＢ［０］に対応しない画素の画像データと判定する。そして、ライト制御部１３１は、自バッファに対応する画素の画像データと判定した場合に、その画像データを、ライトポインタＷＰにより示されるラインメモリに対して、入力水平座標Ｘｉに応じた領域に格納する。例えば、ライト制御部１３１は、入力水平座標Ｘｉをインデックス値Ｉｄｘにより剰余演算し、その演算結果の値を各ラインメモリ１３２ａにおけるアドレス（Ｘアドレス）とし、そのＸアドレスに画像データを格納する。そして、ライト制御部１３１は、各ラインメモリ１３２ａにおいて最後の画像データを格納すると、ライトポインタＷＰを更新（＋１）する。
【０１３２】
このように、ライト制御部１３１は、自バッファＤＩＢ［０］のインデックス値Ｉｄｘに対応する複数の画素の画像データを、ライトポインタＷＰにしたがってラインメモリ１３２ａに順次格納する。そして、ライト制御部１３１は、メモリアレイ１３２の段数に応じて、ライトポインタＷＰをリセットする。図１６において、メモリアレイ１３２は１２段のラインメモリ１３２ａを有している。ライト制御部１３１は、値が「１１」のライトポインタＷＰにしたがって１２段目のラインメモリ１３２ａに分割ラインデータを格納すると、ライトポインタＷＰの値をリセット（＝０）する。
【０１３３】
リード制御部１３３には、リード要求ＲＲ［０］、リードオフセット値ＲＯＦ［０］、垂直座標値Ｙｍｉｎ３が供給される。リード制御部１３３は、リード要求ＲＲ［０］に応答して、クロック信号ＣＬＫをカウントし、カウント値をＸアドレスとする。そして、リード制御部１３３は、ＸアドレスとリードポインタＲＰと垂直座標値Ｙｍｉｎ３とリードオフセット値ＲＯＦ［０］に基づいてメモリアレイ１３２のラインメモリ１３２ａから、垂直歪み補正処理に必要な画像データを読み出し、出力バッファＯＢに出力する。
【０１３４】
詳しくは、リード制御部１３３は、リードポインタＲＰが示すアドレスに、リードオフセット値ＲＯＦ［０］を加算して第１の読出アドレスを生成する。そして、リード制御部１３３は、第１の読出アドレスに示されるラインメモリにおいて、Ｘアドレスにより示される領域に格納された画像データを読み出し、その読み出した画像データと等しい第１読出データＲＤａを出力する。更に、リード制御部１３３は、第１の読出アドレスに所定値（例えば「１」）を加算して第２の読出アドレスを生成する。そして、リード制御部１３３は、第２の読出アドレスに示されるラインメモリにおいて、Ｘアドレスにより示される領域に格納された画像データを読み出し、その読み出した画像データと等しい第２読出データＲＤｂを出力する。
【０１３５】
リード制御部１３３は、リード要求ＲＲ［０］に対する読出処理を終了すると、次のサイクルで、リードポインタＲＰと垂直座標値Ｙｍｉｎ３に基づいてリードポインタＲＰを制御する。詳しくは、リード制御部１３３は、垂直座標値Ｙｍｉｎ３とリードポインタＲＰの差分値ΔＹを算出する。そして、リード制御部１３３は、差分値ΔＹをリードポインタＲＰに加算して新たなリードポインタＲＰとする。また、リード制御部１３３は、Ｘアドレスを生成するためのカウンタ値をリセットする。
【０１３６】
差分演算部１３４は、ライトポインタＷＰとリードポインタＲＰの差の値を算出し、その差分値ＢＬ［０］を出力する。ライトポインタＷＰは次に画像データを書き込むラインメモリを示し、リードポインタＲＰは、次に垂直歪み補正処理に必要な画素の範囲における最小の座標値（垂直座標値Ｙｍｉｎ３）に応じたラインメモリを示す。したがって、ライトポインタＷＰとリードポインタＲＰの差分値ＢＬ［０］は、画像データが格納されたラインメモリの段数、つまり１フレームの画像においてディレイライン入力バッファに格納されたラインの数を示す。差分値ＢＬ［０］は、図１５に示すディレイライン出力制御部ＤＯＣに供給される。ディレイライン出力制御部ＤＯＣは、差分値ＢＬ［０］が垂直歪み補正処理に必要な段数になると、ディレイライン入力バッファＤＩＢに対してリード要求ＲＲ［０］を出力する。
【０１３７】
次に、ディレイライン入力バッファＤＩＢ［０］における読出動作を説明する。
図１７は、図２２（ａ）に示す画素の画像データを読み出す場合を示す。この場合、図１３に示すラインメモリ１３２ａの記憶容量を８画素分としている。なお、図１７に示す画像データＲＤａ，ＲＤｂは、それらの画像データＲＤａ，ＲＤｂを読み出したラインメモリの段数を示している。
【０１３８】
例えば、リードポインタＲＰを「１」、垂直座標値Ｙｍｉｎ３を「１」とする。
Ｈレベルの読出要求ＲＲ［０］が供給されると、クロック信号ＣＬＫのカウントを開始する。第１のサイクルＴ０において、リードポインタＲＰにリードオフセット値ＲＯＦ［０］（＝０）を加算して得られた第１の読出アドレスにしたがって、「１」のラインメモリ１３２ａにおいて、Ｘアドレス（＝０）における画像データを読み出し、画像データを第１読出データＲＤａとして出力する。同様に、リードポインタＲＰにリードオフセット値ＲＯＦ［０］と「１」を加算して得られた第２の読出アドレスにしたがって、「２」のラインメモリ１３２ａにおいて、Ｘアドレス（＝０）における画像データを読み出し、画像データを第２読出データＲＤｂとして出力する。
【０１３９】
第２のサイクルＴ１と第３のサイクルＴ２において、第１のサイクルＴ０と同様に、「１」のラインメモリ１３２ａと「２」のラインメモリ１３２ａから、Ｘアドレス（＝１，２）における画像データをそれぞれ読み出し、画像データを第１読出データＲＤａ，第２読出データＲＤｂとして順次出力する。
【０１４０】
次に、第４〜第７のサイクルＴ３〜Ｔ６において、リードポインタＲＰにリードオフセット値ＲＯＦ［０］（＝１）を加算して得られた第１の読出アドレスにしたがって、「２」のラインメモリ１３２ａにおいて、Ｘアドレス（＝３〜６）における画像データを読み出し、画像データを第１読出データＲＤａとして順次出力する。同様に、リードポインタＲＰにリードオフセット値ＲＯＦ［０］と「１」を加算して得られた第２の読出アドレスにしたがって、「３」のラインメモリ１３２ａにおいて、Ｘアドレス（＝３〜６）における画像データを読み出し、画像データを第２読出データＲＤｂとして順次出力する。
【０１４１】
そして、第８のサイクルＴ７において、リードポインタＲＰにリードオフセット値ＲＯＦ［０］（＝２）を加算して得られた第１の読出アドレスにしたがって、「３」のラインメモリ１３２ａにおいて、Ｘアドレス（＝７）における画像データを読み出し、画像データを第１読出データＲＤａとして出力する。同様に、リードポインタＲＰにリードオフセット値ＲＯＦ［０］と「１」を加算して得られた第２の読出アドレスにしたがって、「４」のラインメモリ１３２ａにおいて、Ｘアドレス（＝７）における画像データを読み出し、画像データを第２読出データＲＤｂとして出力する。
【０１４２】
図２２（ａ）（ｂ）は、図１７に示すタイミングチャートによってメモリアレイ１３２から読み出される画素と、出力バッファＯＢ（第１のバッファ部ＯＢａ）に格納された画素を示す。出力バッファＯＢ（ＯＢａ）の第１領域ＯＢａ０には、画素「１０」〜「１２」，「２３」〜「２６」、「３７」が格納される。また、出力バッファＯＢ（ＯＢａ）の第２領域ＯＢａ１には、画素「２０」〜「２２」，「３３」〜「３６」，「４７」が格納される。したがって、出力バッファＯＢ（ＯＢａ）には、図２２（ｂ）に示すように。垂直方向の座標値が異なる画素の画像データが、１つの領域ＯＢａ０（ＯＢａ１）に格納される。そして、この領域ＯＢａ０，ＯＢａ１の画像データを順次読み出すことにより、垂直歪み補正処理を行うことができる。
【０１４３】
次に、ディレイライン出力制御部ＤＯＣ［０］を説明する。なお、各ディレイライン出力制御部ＤＯＣ［１］〜ＤＯＣ［１１９］はディレイライン出力制御部ＤＯＣ［０］と同じであるため、ディレイライン出力制御部ＤＯＣ［１］〜ＤＯＣ［１１９］の図面及び説明を省略する。
【０１４４】
図１８に示すように、ディレイライン出力制御部ＤＯＣ［０］は、出力ライン番号生成部１４１、段数演算部１４２、比較器１４３、リード要求生成部１４４、リードオフセット値生成部１４５を有している。
【０１４５】
出力ライン番号生成部１４１は、リード要求ＲＲ［０］を監視し、監視結果に応じて出力ライン番号ＯＬ［０］を出力する。出力ライン番号生成部１４１は、例えば、リード要求をカウントし、そのカウント値を出力ライン番号ＯＬ［０］として出力する。出力ライン番号生成部１４１は、所定レベル（例えばＬレベル）のリード要求ＲＲ［０］に応じてカウント値をカウントアップ（＋１）する。リード要求は、ディレイライン入力バッファＤＩＢから対応する分割ラインの画像データの読み出しが終了すると、取り下げられる、例えばＨレベルからＬレベルへと遷移する。画像データの読み出し終了は、例えば、分割ラインの画素数に応じた数のリードオフセット値ＲＯＦ［０］を出力することにより判定される。出力ライン番号生成部１４１は、リード要求ＲＲ［０］が取下げられると、カウント値、つまり出力ライン番号ＯＬ［０］をカウントアップ（＋１）する。
【０１４６】
段数演算部１４２は、垂直歪み補正処理における演算必要段数ＣＬを算出する。段数演算部１４２には、図１４に示す第２の座標演算部１１７から垂直座標値Ｙｍｉｎ３，Ｙｍａｘ３が供給される。段数演算部１４２は、垂直座標値Ｙｍｉｎ３と垂直座標値Ｙｍａｘ３の差の値を算出する。この差分値は、次ラインの画像データを算出する演算に必要な段数（ライン数）、つまり演算必要段数ＣＬである。
【０１４７】
比較器１４３は、段数演算部１４２により算出され演算必要段数ＣＬと、ディレイライン入力バッファＤＩＢから出力されるバッファ段数ＢＬ［０］を比較する。そして、比較器１４３は、バッファ段数ＢＬ［０］が演算必要段数ＣＬ以上のとき、演算要求ＣＲ［０］を出力する。演算要求ＣＲ［０］は、図１５に示すディレイライン出力制御部ＤＯＣに供給される。ディレイライン出力制御部ＤＯＣは、演算要求ＣＲ［０］を受け付けると、演算要求受付ＣＡ［０］を出力する。
【０１４８】
リード要求生成部１４４は、図１５に示すディレイライン出力制御部ＤＯＣから供給される演算要求受付ＣＡ［０］に応答してリード要求ＲＲ［０］を出力する。
リードオフセット値生成部１４５には、入力垂直座標ＶＰが供給される。リードオフセット値生成部１４５は、供給される入力垂直座標ＶＰを初期値として記憶する。そして、リードオフセット値生成部１４５は、クロック信号ＣＬＫに同期して入力される入力垂直座標ＶＰと初期値の差（＝ＶＰ−初期値）をリードオフセット値ＲＯＦ［０］として出力する。
【０１４９】
次に、ディレイライン出力制御部ＤＯＣの動作を説明する。
図１９に示すように、垂直座標値Ｙｍｉｎ３を「１」、垂直座標値Ｙｍａｘ３を「４」とする。この場合、演算必要段数ＣＬは「４」（＝４−１＋１）となる。そして、バッファ段数ＢＬ［０］が「３」から「４」に変化すると、Ｈレベルの演算要求ＣＲ［０］を出力する。図１５に示すディレイラインバッファ選択部１１２は、Ｈレベルの演算要求ＣＲ［０］に応答してＨレベルの演算要求受付ＣＡ［０］を出力する。このＨレベルの演算要求受付ＣＡ［０］に応答してＨレベルのリード要求ＲＲ［０］を出力する。
【０１５０】
次に、入力垂直座標ＶＰが供給されると、その入力垂直座標ＶＰを初期値ＶＰｉとして記憶する。そして、入力垂直座標ＶＰと初期値ＶＰｉの差を算出した結果に応じたリードオフセット値ＲＯＦ［０］を出力する。
【０１５１】
分割ラインの画素数分（図１９では８画素）のデータが図１６のディレイライン入力バッファから読み出されると、Ｌレベルのリード要求ＲＲ［０］を出力する。このリード要求ＲＲ［０］の立ち下がり、つまりＬレベルのリード要求ＲＲ［０］に応じて出力ライン番号ＯＬ［０］をカウントアップ（＋１）する。そして、垂直座標値Ｙｍｉｎ３，Ｙｍａｘ３が更新される。
【０１５２】
次に、本実施形態における作用を説明する。
水平歪み補正部１０１ａは、線形補間部５７により生成した画像データＰＤ２を出力する。垂直歪み補正部１０２は、水平歪み補正部１０１ａから出力される画像データＰＤ２をディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］に記憶する。そして、ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］から読み出した画像データを線形補間処理して生成した画像データをメモリ４２に格納する。このため、水平方向の歪み補正と垂直方向の歪み補正の間で、メモリ４２に対するアクセスは発生しない。
【０１５３】
第１の座標演算部１１４は、入力座標設定部１１３から供給される格子ブロック座標ＧＢ１に基づいて、水平方向の画素位置に応じて、垂直補正範囲値ＶＡ２を算出する。イネーブル信号生成部１１５は、入力座標生成部１１１から出力される入力垂直座標Ｙｉと座標演算部１１４から供給される垂直補正範囲値ＶＡ２に基づいてイネーブル信号ＤＤＥを出力する。各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、イネーブル信号ＤＤＥに基づいて、対応する座標Ｘｉ，Ｙｉの画像データＰＤ２を記憶する。
【０１５４】
ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、記憶した分割ラインに応じたバッファ段数ＢＬ［０］〜ＢＬ［１１９］に基づいて演算要求ＣＲ［０］〜ＣＲ［１１９］、出力ライン番号ＯＬ［０］〜ＯＬ［１１９］を出力する。そして、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、ディレイラインバッファ選択部１１２から出力される演算要求受付ＣＡ［０］〜ＣＡ［１１９］に応答して演算要求ＣＲ［０］〜ＣＲ［１１９］をリセットし、垂直歪み補正処理に必要なラインに含まれる画素の画像データを順次出力する。このように、必要な画像データが格納されたディレイラインバッファＤＬＢから順に歪み補正処理が行われる。
【０１５５】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（２−１）水平歪み補正部１０１ａは、線形補間部５７により生成した画像データＰＤ２を出力する。垂直歪み補正部１０２は、水平歪み補正部１０１ａから出力される画像データＰＤ２をディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］に記憶する。そして、ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］から読み出した画像データを線形補間処理して生成した画像データをメモリ４２に格納する。このため、水平歪み補正後の画像データをメモリ４２に格納する場合と比べ、メモリ４２に対するアクセス数を低減することができる。これにより、歪み補正処理にかかる時間を、短縮することができる。
【０１５６】
（２−２）各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、イネーブル信号ＤＤＥに基づいて、画像データＰＤ２を記憶する。このイネーブル信号ＤＤＥは、入力する画像データＰＤ２の座標値に対して、座標演算部１１４により生成された垂直補正範囲値ＶＡ２に基づいて生成される。座標演算部１１４は、入力座標設定部１１３から供給される格子ブロック座標ＧＢ１に基づいて、水平方向の画素位置に応じて、垂直補正範囲値ＶＡ２を算出する。したがって、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］は、垂直方向の歪み補正に必要な画素の画像データを記憶する。このため、歪み補正に不要な画像データがディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］に格納されないため、少ない容量のディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］を用いることができ、垂直歪み補正部１０２の回路規模の増大を抑制し、垂直歪み補正部１０２の実装を容易にすることができる。
【０１５７】
（第三実施形態）
以下、第三実施形態を図２３〜図２５に従って説明する。
なお、本実施形態において、上記実施形態と同じ部材については同じ符号を付し、その説明の一部または全てを省略する。
【０１５８】
図２３に示すように、撮像装置は、撮像部１０、画像処理部２００、操作部４１、メモリ（記憶部）４２、表示デバイス４３を有している。
画像処理部２００は、データ変換部２０１、第１の垂直歪み補正部２０２、第２の垂直歪み補正部２０３、歪み補正部２３、画像処理部２４、静止画コーデック部２５、動画コーデック部２６、メモリカードＩ／Ｆ２７、表示Ｉ／Ｆ２８、ＤＭＡ調停部２９、メモリコントローラ３０、ＣＰＵ３１を有している。データ変換部２０１は、水平歪み補正部２０１ａ、アクセス制御部２０１ｂを含む。第１の垂直歪み補正部２０２はアクセス制御部２０２ａを含み、第２の垂直歪み補正部２０３はアクセス制御部２０３ａを含む。垂直歪み補正部２０２は、第２の歪み補正部，第２の補正部の一例である。垂直歪み補正部２０３は、第２の歪み補正部，第２の補正部の一例である。
【０１５９】
第１の垂直歪み補正部２０２の構成は、図１３に示す垂直歪み補正部１０２の構成と同様である。また、第２の垂直歪み補正部２０３の構成は、図１に示す垂直歪み補正部２２の構成と同様である。そして、第１の垂直歪み補正部２０２と第２の垂直歪み補正部２０３には、それぞれ処理範囲が設定されている。第１の垂直歪み補正部２０２と第２の垂直歪み補正部２０３は、それぞれに設定された処理範囲に含まれる画素について、垂直歪み補正処理を行い、処理後の画像データをメモリ４２に格納する。
【０１６０】
第１の垂直歪み補正部２０２は、水平歪み補正部１０１ａから出力される画像データについて、設定された第１の処理範囲の画像データか否かを判定する。そして、第１の垂直歪み補正部２０２は、設定された第１の処理範囲の画像データに対して垂直歪み補正処理を行い、処理後の画像データをメモリ４２に格納する。また、第１の垂直歪み補正部２０２は、設定された第１の処理範囲に含まれない画像データをメモリ４２に格納する。
【０１６１】
第２の垂直歪み補正部２０３は、メモリ４２をアクセスし、設定された第２の処理範囲に応じた画像データを読み出し、その読み出した画像データに対して垂直歪み補正処理を行う。そして、第２の垂直歪み補正部２０３は、処理後の画像データをメモリ４２に格納する。
【０１６２】
処理範囲は、例えば垂直歪み補正処理における画素の移動量に応じて設定される。
図２４（ａ）は、樽型の歪みに対する水平歪み補正処理後の画像データＩＰ２１を示し、図２４（ｂ）は、垂直補正処理後の画像データＯＰ２１を示す。図２４（ａ）に示す画像データＩＰ２１において、ハッチングを付していない部分は垂直歪み補正処理に必要な画素が含まれる領域を示す。この画像データＩＰ２１の場合、水平方向において中央付近の画素の移動量は、左右両端付近の画素の移動量より小さい。したがって、水平方向において中央部分を含む処理範囲ＡＲ１１を第１の処理範囲として第１の垂直歪み補正部２０２に設定し、左右両端の処理範囲ＡＲ１２，ＡＲ１３を第２の処理範囲として第２の垂直歪み補正部２０３に設定する。第１の垂直歪み補正部２０２に含まれる内部バッファ７４の記憶容量（記憶するライン数）は、画素の移動量に応じて設定される。したがって、移動量の少ない処理範囲ＡＲ１１を第１の垂直歪み補正部２０２に設定することで、内部バッファ７４の記憶容量を少なくすることができる。このこと、画像処理装置における第１の垂直歪み補正部２０２の面積の増大を抑制し、第１の垂直歪み補正部２０２の実装を容易にする。処理範囲ＡＲ１１〜ＡＲ１３は第１の領域の一例である。
【０１６３】
図２５（ａ）は、糸巻き型の歪みに対する水平歪み補正処理後の画像データＩＰ２２を示し、図２５（ｂ）は、垂直補正処理後の画像データＯＰ２２を示す。図２５（ａ）に示す画像データＩＰ２１において、ハッチングを付していない部分は垂直歪み補正処理に必要な画素が含まれる領域を示す。この画像データＩＰ２２の場合、水平方向において中央付近の画素の移動量は、左右両端付近の画素の移動量より大きい。したがって、左右両端の処理範囲ＡＲ２２，ＡＲ２３を第１の処理範囲として第１の垂直歪み補正部２０２に設定し、水平方向において中央部分を含む処理範囲ＡＲ２１を第２の処理範囲として第２の垂直歪み補正部２０３に設定する。このように、移動量の少ない処理範囲ＡＲ２２，ＡＲ２３を第１の垂直歪み補正部２０２に設定することで、内部バッファ７４の記憶容量を少なくすることができる。このこと、画像処理装置における第１の垂直歪み補正部２０２の面積の増大を抑制し、第１の垂直歪み補正部２０２の実装を容易にする。処理範囲ＡＲ２１〜ＡＲ２３は第１の領域の一例である。
【０１６４】
なお、糸巻き型の歪みを含む画像データを歪み補正処理する場合、出力画像のサイズ（画素数）を入力画像のサイズに対して小さくするように行う場合がある。この場合、図２５に示す画像データＩＰ２２とは逆に、水平方向において中央付近の画素の移動量は、左右両端付近の画素の移動量より小さくなる。このような処理では、図２４（ａ）（ｂ）に示す樽型の歪みに対する処理範囲の設定と同様に、水平方向において中央部分を含む処理範囲ＡＲ２１を第１の処理範囲として第１の垂直歪み補正部２０２に設定し、左右両端の処理範囲ＡＲ２２，ＡＲ２３を第２の処理範囲として第２の垂直歪み補正部２０３に設定する。このように処理範囲を設定することで、上記の処理と同様に、内部バッファ７４の記憶容量を少なくすることができる。
【０１６５】
次に、本実施形態における作用を説明する。
第１の垂直歪み補正部２０２と第２の垂直歪み補正部２０３には、それぞれ処理範囲が設定されている。第１の垂直歪み補正部２０２と第２の垂直歪み補正部２０３は、それぞれに設定された処理範囲に含まれる画素について、垂直歪み補正処理を行い、処理後の画像データをメモリ４２に格納する。
【０１６６】
例えば、移動量が多い画素を含む領域については第２の垂直歪み補正部２０３に設定することで、第１の垂直歪み補正部２０２において記憶する画像データの量が少なくなり、少ない容量のディレイラインバッファＤＬＢを用いることが可能となる。
【０１６７】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（３−１）第１の垂直歪み補正部２０２と第２の垂直歪み補正部２０３には、それぞれ処理範囲が設定されている。第１の垂直歪み補正部２０２と第２の垂直歪み補正部２０３は、それぞれに設定された処理範囲に含まれる画素について、垂直歪み補正処理を行い、処理後の画像データをメモリ４２に格納する。
【０１６８】
例えば、移動量が多い画素を含む領域については第２の垂直歪み補正部２０３に設定することで、第１の垂直歪み補正部２０２において記憶する画像データの量が少なくなり、少ない容量のディレイラインバッファＤＬＢを用いることで、垂直歪み補正部２０２の回路規模の増大を抑制し、垂直歪み補正部２０２の実装を容易にすることができる。
【０１６９】
尚、上記各実施形態は、以下の態様で実施してもよい。
・図２に示す水平歪み補正部２１ａにおいて、ＦＩＦＯメモリ５５のリードポインタをリード部５６が制御するようにしてもよい。例えば、リード部５６は、入力水平座標ＨＰと読出位置を記憶するレジスタを有している。リード部５６は、１つのラインにおける画素の読み出しを開始するとき、レジスタの読出位置をリセット（＝０）する。ライト部５４は、ＦＩＦＯメモリ５５に２画素以上の画像データが格納されると、読出処理を開始する。
【０１７０】
先ず、リード部５６は、座標演算部５３から供給される入力水平座標ＨＰをレジスタに記憶する。そして、リード部５６は、レジスタから読み出した読出位置と等しい値のリードポインタをＦＩＦＯメモリ５５に出力し、ＦＩＦＯメモリ５５から１つの画素の画像データを読み出す。さらに、リード部５６は、読出位置の値に所定の値（「１」）を加算した値と等しいリードポインタをＦＩＦＯメモリ５５に出力し、ＦＩＦＯメモリ５５から１つの画素の画像データを読み出す。これにより、リード部５６は、連続する２つの画素の画像データをＦＩＦＯメモリ５５から読み出す。
【０１７１】
次に、リード部５６は、座標演算部５３から供給される入力水平座標ＨＰと、レジスタから読み出した入力水平座標とを比較する。そして、リード部５６は、入力水平座標ＨＰとレジスタから読み出した入力水平座標とが互いに等しい場合、レジスタに記憶した読出位置に従ってＦＩＦＯメモリ５５から２つの画素の画像データを読み出す。一方、入力水平座標ＨＰとレジスタから読み出した入力水平座標が互いに異なる場合、リード部５６は、レジスタの読出位置を更新（＋１）する。そして、リード部５６は、更新した読出位置に従ってＦＩＦＯメモリ５５から２つの画素の画像データを読み出す。
【０１７２】
・図２に示すアクセス制御部２１ｂにおいて、垂直歪み補正部２２において不要な画素の画像データをバッファ５８に記憶しないように、バッファ５８を制御してもよい。
・格子ブロックの大きさ（水平方向の画素数×垂直方向の画素数）を適宜変更してもよい。例えば、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］において記憶する水平方向の画素数と等しくしてもよい。また、各ディレイラインバッファＤＬＢ［０］〜ＤＬＢ［１１９］において記憶する水平方向の画素数の整数倍（２倍等）に設定してもよい。
【０１７３】
・第三実施形態に対し、水平歪み補正部１０１ａに処理範囲を設定してもよい。
例えば、水平歪み補正部１０１ａに第１の処理範囲を設定する。水平歪み補正部１０１ａは、水平歪み補正処理後の画像データについて、第１の処理範囲に含まれる画像データを第１の垂直歪み補正部２０２に出力し、第１の処理範囲に含まれない画像データをメモリ４２に格納する。また、水平歪み補正部１０１ａに第２の処理範囲を設定してもよい。この場合、水平歪み補正部１０１ａは、水平歪み補正処理後の画像データについて、第２の処理範囲に含まれる画像データをメモリ４２に格納し、第２の処理範囲に含まれない画像データを第１の垂直歪み補正部２０２に出力する。
【０１７４】
・上記の実施形態に対し、データ転送やメモリ４２に格納する画像データのフォーマットを適宜変更してもよい。
例えば、図２６（ａ）は、メモリ４２に面順次フォーマットにより格納された画像データを示し、図２６（ｂ）は、メモリ４２に点順次フォーマットにより格納された画像データを示す。図２６（ａ）に示すように、メモリ４２の第１領域４２ａには、１フレーム分の輝度情報Ｙが格納され、第２領域４２ｂには１フレーム分の色差情報Ｃｂが格納され、第３領域４２ｃには１フレーム分の色差情報Ｃｒが格納される。なお、図２６（ａ）には、各領域４２ａ〜４２ｃに格納された１つの画素に対応する輝度情報Ｙと色差情報Ｃｂ、Ｃｒを示す。
【０１７５】
図２６（ｂ）に示すように、点順次フォーマットの場合、メモリ４２には、各画素おける輝度情報Ｙと色差情報Ｃｂ、Ｃｒが順次格納される。なお、図２６（ｂ）には、１つの画素における輝度情報Ｙと色差情報Ｃｂ、Ｃｒを示す。
【０１７６】
例えば、輝度情報Ｙのデータ量を８ビット（１バイト）、色差情報Ｃｂ，Ｃｒのデータ両をそれぞれ４ビット（０．５バイト）とする。そして、メモリ４２に対する１回の転送におけるデータ量を１６バイトとする。図２６（ａ）に示す面順次フォーマットの場合、１回のアクセスで１６画素分の輝度情報Ｙを転送する。一方、図２６（ｂ）に示す点順次フォーマットの場合、１回のアクセスで８画素分の輝度情報Ｙ及び色差情報Ｃｂ，Ｃｒを転送する。
【０１７７】
このように転送される画像データにおいて、１つのラインの出力画素を生成するために必要な画素を図２７（ａ）と図２７（ｂ）に示す。図２７（ａ）及び図２７（ｂ）において、水平方向に沿って延びる矢印にて示される範囲は、１回のアクセスによりメモリ４２から読み出される画素を示す。また、垂直方向に沿って延びる矢印にて示す範囲は、ディレイラインバッファに格納された画像データに対して、垂直歪み補正処理に必要な画素を示す。このように、面順次フォーマット（輝度情報Ｙ）の場合、垂直歪み補正処理のために、ディレイラインバッファＤＬＢ［１］に９ライン分の画素を記憶する必要がある。これに対し、点順次フォーマットの場合垂直歪み補正処理のために、ディレイラインバッファＤＬＢ［１］に５ライン分の画素を記憶すればよい。つまり、点順次フォーマットの画像データを記憶するディレイラインバッファＤＬＢ［１］の記憶容量を、面順次フォーマットの場合に比べて少なくすることができる。また、ディレイラインバッファＤＬＢ［１］には、輝度情報Ｙと色差情報Ｃｂ，Ｃｒが記憶されている。このため、１回のアクセスにより転送されたデータに基づいて、各情報Ｙ，Ｃｂ，Ｃｒに対応する出力画素の情報を生成することができる。
【０１７８】
・格子ブロックのｘ軸方向（水平方向）の大きさ（画素数）を「Ｍ」と、ｙ軸方向（垂直方向）の大きさ（画素数）を「Ｎ」を同じ値（Ｍ＝Ｎ＝６４）としたが、画素数Ｍと画素数Ｎを互いに異なる値としてもよい。
【０１７９】
・上記第２実施形態において、水平歪み補正部１０１ａは処理後の画像データをメモリ４２に格納し、垂直歪み補正部１０２はメモリ４２から読み出した画像データに対して垂直歪み補正処理を行うようにしてもよい。この場合、垂直歪み補正部１０２は、メモリ４２に格納された画像データをラスタ順、つまり水平歪み補正部１０１ａがメモリ４２に書き込んだ順番で画像データを読み出せばよいため、複雑な処理を行うことなく、画像データを読み出すことが可能となる。
【符号の説明】
【０１８０】
２１ａ  水平歪み補正部
２２  垂直歪み補正部
１０１ａ  水平歪み補正部
１０２  垂直歪み補正部
２０１ａ  水平歪み補正部
２０２  垂直歪み補正部
【図１】
2014086845.tif 000003
【図２】
2014086845.tif 000004
【図３】
2014086845.tif 000005
【図４】
2014086845.tif 000006
【図５】
2014086845.tif 000007
【図６】
2014086845.tif 000008
【図７】
2014086845.tif 000009
【図８】
2014086845.tif 000010
【図９】
2014086845.tif 000011
【図１０】
2014086845.tif 000012
【図１１】
2014086845.tif 000013
【図１２】
2014086845.tif 000014
【図１３】
2014086845.tif 000015
【図１４】
2014086845.tif 000016
【図１５】
2014086845.tif 000017
【図１６】
2014086845.tif 000018
【図１７】
2014086845.tif 000019
【図１８】
2014086845.tif 000020
【図１９】
2014086845.tif 000021
【図２０】
2014086845.tif 000022
【図２１】
2014086845.tif 000023
【図２２】
2014086845.tif 000024
【図２３】
2014086845.tif 000025
【図２４】
2014086845.tif 000026
【図２５】
2014086845.tif 000027
【図２６】
2014086845.tif 000028
【図２７】
2014086845.tif 000029