(57)【特許請求の範囲】
【請求項１】
複数の画素が互いに直交する垂直方向及び水平方向に２次元状に配列された画像データ内の各画素データに対する補正係数を算出する補正係数演算回路と、
前記各画素データを、対応する前記補正係数により補正する補正回路と、を有し、
前記補正係数演算回路は、
記憶部に格納され、前記画像データ内の所定サイズのブロック毎に対応して用意された係数値を読み出す読み出し回路と、
前記読み出し回路により読み出された補正対象の係数値に対する補正値を算出する補正値算出回路と、
前記補正値により前記補正対象の係数値を補正して補正後係数を算出する補正後係数算出回路と、
補正対象の画素データを含むブロックに対応する前記補正後係数と、前記補正対象の画素データの近傍に位置するブロックに対応する前記補正後係数とに基づいて、前記補正係数を算出する係数算出回路と、を有し、
前記補正値算出回路は、
前記補正対象の係数値と、該補正対象の係数値の水平方向における前後の係数値との大小関係に基づいて、前記補正値を算出することを特徴とする画像処理装置。
【請求項２】
前記補正値算出回路は、
前記補正対象の係数値に対応する第１ブロックと水平方向の前側で隣接する第２ブロックに対応する第１係数値と、
前記第２ブロックと水平方向の前側で隣接する第３ブロックに対応する第２係数値と、
前記第１ブロックと水平方向の後側で隣接する第４ブロックに対応する第３係数値と、
前記第４ブロックと水平方向の後側で隣接する第５ブロックに対応する第４係数値との４点の係数値と、前記補正対象の係数値との大小関係に基づいて前記補正値を算出することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記補正値算出回路は、
前記補正対象の係数値と前記第１係数値との差分と、前記補正対象の係数値と前記第３係数値との差分とを合算した値に、第１重み値を乗算して第１演算結果を算出し、
前記補正対象の係数値と前記第２係数値との差分と、前記補正対象の係数値と前記第４係数値との差分とを合算した値に、前記第１重み値よりも小さい第２重み値を乗算して第２演算結果を算出し、
前記第１演算結果と前記第２演算結果とを合算した判定値に基づいて、前記補正値を算出することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記補正値算出回路は、
前記判定値に対して、前記補正対象の係数値のビット精度の１／２となる値を乗算して前記補正値を算出することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記補正値算出回路は、
前記第１ブロックが前記画像データの水平方向における先頭のブロックである場合に、前記第１係数値及び前記第２係数値を前記補正対象の係数値に置き換えて、前記補正値を算出することを特徴とする請求項２〜４の何れか一項に記載の画像処理装置。
【請求項６】
前記補正値算出回路は、
前記第１ブロックが前記画像データの水平方向における最後のブロックである場合に、前記第３係数値及び前記第４係数値を前記補正対象の係数値に置き換えて、前記補正値を算出することを特徴とする請求項２〜５の何れか一項に記載の画像処理装置。
【請求項７】
前記係数算出回路は、
前記補正対象の画素データを含むブロックに対応する前記補正後係数と、
前記補正対象の画素データを含むブロックと水平方向の後側で隣接するブロックに対応する前記補正後係数と、
前記補正対象の画素データを含むブロックと垂直方向の後側で隣接する第６ブロックに対応する前記補正後係数と、
前記第６ブロックと水平方向の後側で隣接するブロックに対応する前記補正後係数との４点の前記補正後係数に基づいて、線形補間により前記補正係数を算出することを特徴とする請求項１〜６の何れか一項に記載の画像処理装置。
【請求項８】
内部メモリと、
前記記憶部から前記係数値を読み出し、読み出した前記係数値を前記内部メモリに格納する内部メモリ制御回路と、を有し、
前記読み出し回路は、前記補正値の算出に用いる複数の係数値を前記内部メモリから読み出すことを特徴とする請求項１〜７の何れか一項に記載の画像処理装置。
【請求項９】
複数の画素が互いに直交する垂直方向及び水平方向に２次元状に配列された画像データ内の所定サイズのブロック毎に対応して用意された係数値を読み出す工程と、
前記読み出された補正対象の係数値に対する補正値を算出する工程と、
前記補正値により前記補正対象の係数値を補正して補正後係数を算出する工程と、
補正対象の画素データを含むブロックに対応する前記補正後係数と、前記補正対象の画素データの近傍に位置するブロックに対応する前記補正後係数とに基づいて、補正係数を算出する工程と、
前記画像データ内の各画素データを、対応する前記補正係数により補正する工程と、を有し、
前記補正値を算出する工程では、
前記補正対象の係数値と、該補正対象の係数値の水平方向における前後の係数値との大小関係に基づいて、前記補正値を算出することを特徴とする画像処理方法。
【請求項１０】
撮像光学系と、前記撮像光学系を通過した光に応じた画像データを生成する撮像素子部とを含む撮像部と、前記画像データに対して１又は複数の画像処理を施す画像処理装置と、記憶部と、を有し、
前記画像処理装置は、
前記画像データ内の各画素データに対する補正係数を算出する補正係数演算回路と、
前記各画素データを、対応する前記補正係数により補正する補正回路と、を有し、
前記補正係数演算回路は、
前記記憶部に格納され、前記画像データ内の所定サイズのブロック毎に対応して用意された係数値を読み出す読み出し回路と、
前記読み出し回路により読み出された補正対象の係数値に対する補正値を算出する補正値算出回路と、
前記補正値により前記補正対象の係数値を補正して補正後係数を算出する補正後係数算出回路と、
補正対象の画素データを含むブロックに対応する前記補正後係数と、前記補正対象の画素データの近傍に位置するブロックに対応する前記補正後係数とに基づいて、前記補正係数を算出する係数算出回路と、を有し、
前記補正値算出回路は、
前記補正対象の係数値と、該補正対象の係数値の水平方向における前後の係数値との大小関係に基づいて、前記補正値を算出することを特徴とする撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及び撮像装置に関するものである。
【背景技術】
【０００２】
光学レンズを用いた撮像装置は、光学レンズによりフィルムや撮像素子などに被写体像を結像して撮像を行う。このとき、レンズの光学特性や撮像素子の撮像面積に応じてレンズの中心から周辺領域にかけて結像の輝度が徐々に低くなる、いわゆるシェーディング（輝度むら）という現象が発生する。そこで、撮像装置では、光学レンズに起因するシェーディングに合わせてゲイン補正を実施するシェーディング補正回路が画像処理装置に組み込まれている（例えば、特許文献１，２参照）。
【０００３】
シェーディング補正回路では、例えば、シェーディング補正（輝度補正）を行うための補正係数を格納する補正テーブルが設けられている。ここで、補正係数は、周辺領域における画素データの輝度の低下を補正する係数である。そして、シェーディング補正回路は、１フレームの画像データ内の各画素データに対して補正係数を乗算することにより、画像データの輝度むらを補正する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１８５９７１号公報
【特許文献２】特許第４７０４９１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上述した補正係数を各画素毎に用意すると、補正テーブルを設けるために大容量のメモリが必要になる。さらに、メモリから補正係数を読み出すときのデータ量が増加するため、メモリ帯域を圧迫するという問題もある。
【課題を解決するための手段】
【０００６】
本発明の一観点によれば、複数の画素が互いに直交する垂直方向及び水平方向に２次元状に配列された画像データ内の各画素データに対する補正係数を算出する補正係数演算回路と、前記各画素データを、対応する前記補正係数により補正する補正回路と、を有し、前記補正係数演算回路は、記憶部に格納され、前記画像データ内の所定サイズのブロック毎に対応して用意された係数値を読み出す読み出し回路と、前記読み出し回路により読み出された補正対象の係数値に対する補正値を算出する補正値算出回路と、前記補正値により前記補正対象の係数値を補正して補正後係数を算出する補正後係数算出回路と、補正対象の画素データを含むブロックに対応する前記補正後係数と、前記補正対象の画素データの近傍に位置するブロックに対応する前記補正後係数とに基づいて、前記補正係数を算出する係数算出回路と、を有し、前記補正値算出回路は、前記補正対象の係数値と、該補正対象の係数値の水平方向における前後の係数値との大小関係に基づいて、前記補正値を算出する。
【発明の効果】
【０００７】
本発明の一観点によれば、補正係数のデータ量の増加を抑制しつつも、補正精度を向上させるこができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】一実施形態の撮像装置を示すブロック図。
【図２】一実施形態のシェーディング補正部の内部構成例を示すブロック図。
【図３】（ａ），（ｂ）は、一実施形態の画像データのデータ構造を示す説明図。
【図４】一実施形態の画像データのデータ構造を示す説明図。
【図５】（ａ）は、輝度特性を示す特性図、（ｂ）は、補正特性を示す特性図。
【図６】一実施形態の補正特性を示す特性図。
【図７】（ａ），（ｂ）は、一実施形態の線形補間演算を示す説明図。
【図８】（ａ），（ｂ）は、一実施形態の線形補間演算を示す説明図。
【図９】一実施形態のリードイネーブル信号にかかる処理を示すフローチャート。
【図１０】一実施形態のリードアドレス信号にかかる処理を示すフローチャート。
【図１１】一実施形態の補正値算出回路及び線形補間回路の内部構成例を示すブロック図。
【図１２】（ａ），（ｂ）は、一実施形態の補正値算出処理を示す説明図。
【図１３】（ａ）〜（ｃ）は、一実施形態の補正値算出処理を示す説明図。
【図１４】一実施形態の補正値算出処理を示すフローチャート。
【図１５】一実施形態のシェーディング補正処理を示すタイミングチャート。
【図１６】一実施形態のシェーディング補正処理を示すタイミングチャート。
【図１７】一実施形態のシェーディング補正処理を示すタイミングチャート。
【発明を実施するための形態】
【０００９】
（第１実施形態）
以下、図１〜図１７に従って第１実施形態を説明する。
図１に示すように、撮像装置１は、撮像部１１と、画像処理プロセッサ（ＩＳＰ：Image Signal Processor）１２と、入力部１３と、メモリ１４と、メモリカード１５と、表示デバイス１６とを有している。
【００１０】
撮像部１１は、撮像光学系２１と、撮像素子部２２と、アナログフロントエンド（ＡＦＥ：Analog Front End）２３とを有している。
撮像光学系２１は、被写体からの光を集光する複数のレンズ（フォーカスレンズなど）や、これらのレンズを透過した光の量を調整する絞り等を含み、光学的な被写体像を撮像素子部２２に導く。撮像素子部２２は、例えば、ベイヤ配列のカラーフィルタと、撮像素子とを含む。撮像素子は、例えば、ＣＣＤ（Charge Coupled Device）イメージセンサやＣＭＯＳ（Complementary Metal Oxide Semiconductor）イメージセンサである。撮像素子は、カラーフィルタを介して入射する光の量に応じた撮像信号（アナログ信号）を出力する。ＡＦＥ２３は、撮像素子部２２から出力されるアナログの撮像信号をデジタルの撮像データＧＤに変換するＡ／Ｄ変換回路を含み、撮像データＧＤを画像処理プロセッサ１２に出力する。
【００１１】
画像処理プロセッサ１２は、撮像部１１から出力される撮像データＧＤ（例えば、ＲＧＢ形式の画像データ（ベイヤデータ））に対して各種画像処理を施す。例えば、画像処理プロセッサ１２は、所定の処理段階で画像データをメモリ１４に一時的に格納する。すなわち、メモリ１４は作業メモリとして機能する。このメモリ１４は、例えば同期式半導体メモリ（ＳＤＲＡＭ：Synchronous Dynamic Random Access Memory）などの書き換え可能なメモリである。また、画像処理プロセッサ１２は、メモリ１４に格納された各種画像処理後の画像データをメモリカード１５に格納したり、表示デバイス１６に表示したりする。
【００１２】
入力部１３は、ユーザにより操作されるシャッタボタンやメニューボタン等の各種スイッチを有している。この各種スイッチは、例えば、写真撮影、撮影条件の設定や表示方式の設定等を行うために使用される。
【００１３】
メモリカード１５は、例えばコンパクトフラッシュ（登録商標）やＳＤメモリカード（登録商標）などの携帯型メモリカードである。
表示デバイス１６としては、例えば、液晶表示装置（ＬＣＤ：Liquid Crystal Display）や有機ＥＬ（Electronic Luminescence）を用いることができる。また、表示デバイス１６としては、例えば、電子ビューファインダ（ＥＶＦ：Electronic View Finder）や、外部接続のためのインターフェース（例えば、ＨＤＭＩ（登録商標）：High-Definition Multimedia Interface）を用いることもできる。
【００１４】
次に、画像処理プロセッサ１２の内部構成例を説明する。
画像処理プロセッサ１２は、センサインターフェース（Ｉ／Ｆ）３１と、シェーディング補正部３２と、画像処理部３３と、コーデック部３４と、メモリカードＩ／Ｆ３５と、表示Ｉ／Ｆ３６と、ＤＭＡ調停部３７と、メモリコントローラ３８と、ＣＰＵ（Central Processing Unit）３９とを有している。
【００１５】
センサＩ／Ｆ３１、シェーディング補正部３２、画像処理部３３、コーデック部３４、メモリカードＩ／Ｆ３５、表示Ｉ／Ｆ３６及びＤＭＡ調停部３７は、内部バスＢＵＳを介して互いに接続されている。ＤＭＡ調停部３７は、メモリコントローラ３８を介してメモリ１４と接続されている。
【００１６】
センサＩ／Ｆ３１は、撮像部１１から出力される撮像データＧＤ（ＲＧＢ形式の画像データ（ベイヤデータ））を受け取り、その画像データＧＤをメモリ１４又はシェーディング補正部３２に出力する。
【００１７】
シェーディング補正部３２は、メモリ１４から読み出した画像データＧＤ又はセンサＩ／Ｆ３１から入力する画像データＧＤに対してシェーディング補正を施し、シェーディング補正後の画像データをメモリ１４に格納する。
【００１８】
画像処理部３３は、メモリ１４から読み出したシェーディング補正後の画像データに対して画像処理を施す１つ又は複数の処理部である。画像処理部３３は、画像処理後の画像データＧＤをメモリ１４に格納する。画像処理部３３が行う処理は、例えば、ＲＧＢ形式の画像データをＹＣｂＣｒ形式の画像データに変換する色空間変換処理、画素数を増減する解像度変換処理、画像の輪郭（エッジ）を強調するエッジ強調処理、画像データに含まれるノイズを除去するノイズ除去処理等が含まれる。
【００１９】
コーデック部３４は、メモリ１４に格納された画像処理後の画像データを読み出し、その画像データを所定の方式（例えば、ＪＰＥＧ（Joint Photographic Experts Group）方式）により符号化する。コーデック部３４は、符号化後の画像データ（符号化データ）をメモリ１４に格納する。また、当該撮像装置１が動画の撮影が可能であれば、コーデック部３４に、動画データを所定の方式（例えば、ＭＰＥＧ（Moving Picture Experts Group）方式）により符号化する機能を持たせてもよい。
【００２０】
なお、画像処理プロセッサ１２に含まれる処理部３１〜３４及び各処理部３１〜３４の処理内容は一例を示すものであり、画像処理プロセッサ１２が含む処理部の種類や処理内容は、適宜変更してもよい。
【００２１】
メモリカードＩ／Ｆ３５は、撮像装置１に装着されるメモリカード１５と接続される。メモリカードＩ／Ｆ３５は、メモリ１４に格納されたデータ（例えば、符号化された画像データ）をメモリカード１５に格納する。
【００２２】
表示Ｉ／Ｆ３６には、当該撮像装置１に設けられた表示デバイス１６が接続されている。表示デバイス１６は、撮像装置１の駆動源であるバッテリの残量、撮影モード、撮影フレーム、記憶された画像データの表示等に用いられる。例えば、表示Ｉ／Ｆ３６は、メモリ１４に格納された画像データを読み出し、その画像データに基づいて生成した表示データを表示デバイス１６に出力する。
【００２３】
センサＩ／Ｆ３１と、シェーディング補正部３２と、画像処理部３３と、コーデック部３４と、メモリカードＩ／Ｆ３５と、表示Ｉ／Ｆ３６とは、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ：Direct Memory Access Controller）３１ａ〜３６ａをそれぞれ有している。ＤＭＡＣ３１ａ〜３６ａは、各処理部３１〜３６が行う処理に応じたアクセス要求を出力する。例えば、センサＩ／Ｆ３１は、撮像部１１から入力した画像データＧＤを、メモリ１４に格納する。このため、センサＩ／Ｆ３１のＤＭＡＣ３１ａは、ＤＭＡ調停部３７に対して書き込み要求（ライトリクエスト）を出力する。また、シェーディング補正部３２は、画像データＧＤ及びシェーディング補正用の補正係数をメモリ１４から読み出すとともに、シェーディング補正後の画像データをメモリ１４に格納する。このため、シェーディング補正部３２のＤＭＡＣ３２ａは、ＤＭＡ調停部３７に対して読み出し要求（リードリクエスト）及びライトリクエストを出力する。
【００２４】
ＤＭＡ調停部３７は、各処理部３１〜３６のＤＭＡＣ３１ａ〜３６ａから出力され競合する要求（リクエスト）を、例えば各処理部３１〜３６に対応して設定された優先度に従って要求を調停し、１つの処理部に対するアクセスを許可する。アクセスが許可された処理部は、メモリ１４に対するアクセスのための制御信号を出力する。例えば、読み出し要求の場合、メモリコントローラ３８は、制御信号に応じてメモリ１４からデータを読み出し、その読み出したデータを要求元の処理部に出力する。また、メモリコントローラ３８は、書き込み要求と、その要求元の処理部から出力されるデータをメモリ１４に出力し、メモリ１４はそのデータを記憶する。
【００２５】
ＣＰＵ３９は、画像処理プロセッサ１２全体を統括制御する。ＣＰＵ３９は、処理に必要な情報の各処理部への設定及びデータの書き込み／読み出し制御等を行う。ＣＰＵ３９は、撮像素子部２２のリセットを指令する制御信号を、ＡＦＥ２３を通じて撮像素子部２２に出力する。ＣＰＵ３９は、上記入力部１３の操作に応じて動作モードや各処理において必要な情報（パラメータ）を設定する。
【００２６】
次に、シェーディング補正部３２の内部構成例について説明する。
図２に示すように、シェーディング補正部３２は、ＤＭＡＣ３２ａと、内部メモリ制御回路４２と、内部メモリ４３と、遅延回路４４と、水平カウンタ４５と、垂直カウンタ４６と、補正係数演算回路４７と、補正領域設定回路４８と、補正回路４９とを有している。
【００２７】
ＤＭＡＣ３２ａは、シェーディング補正を開始する信号に応答して、メモリ１４から補正係数を読み出すための要求信号ＲＥＱをメモリＩ／Ｆ４０に出力する。ＤＭＡＣ３２ａは、メモリ１４内の補正係数テーブル１４ａに格納されたシェーディング補正用の補正係数ＲＣを読み出す領域を示すアドレス信号ＡＤＤＲをメモリＩ／Ｆ４０に出力する。ここで、メモリＩ／Ｆ４０は、図１に示したＤＭＡ調停部３７及びメモリコントローラ３８に対応する。メモリＩ／Ｆ４０は、シェーディング補正部３２に対してアクセスを許可する際に、メモリ１４に対するアクセスを許可する許可信号ＡＣＫを出力する。メモリＩ／Ｆ４０は、シェーディング補正部３２に対してアクセスを許可した際に、アドレス信号ＡＤＤＲに応じたメモリ１４の領域に格納された補正係数ＲＣを読み出し、その補正係数ＲＣをリードデータＤＡＴＡとしてＤＭＡＣ３２ａに出力する。
【００２８】
ＤＭＡＣ３２ａは、内部メモリ制御回路４２からのデータ要求ＤＴＥＮに応答して、リードデータＤＡＴＡ（つまり、補正係数テーブル１４ａから読み出した補正係数ＲＣ）をリードデータＲＤＡＴＡとして内部メモリ制御回路４２に出力する。
【００２９】
内部メモリ制御回路４２は、ＤＭＡＣ３２ａから入力したリードデータＲＤＡＴＡを内部メモリ４３に一時的に格納する。これにより、内部メモリ４３には、補正係数テーブル１４ａから読み出された補正係数ＲＣが格納される。例えば、内部メモリ４３には、２ライン分の補正係数ＲＣが格納される。また、内部メモリ制御回路４２には、補正係数演算回路４７からリードアドレス信号ＲＡＤ及びリードイネーブル信号ＲＤＥＮが入力される。内部メモリ制御回路４２は、リードイネーブル信号ＲＤＥＮに応答して、リードアドレス信号ＲＡＤに応じた内部メモリ４３の領域から補正係数ＲＣを読み出し、読み出した補正係数ＲＣを補正係数ＲＤ１，ＲＤ２として補正係数演算回路４７に出力する。なお、内部メモリ４３は、例えば、ＲＡＭ（Random Access Memory）である。
【００３０】
遅延回路４４には、例えば、メモリ１４からメモリＩ／Ｆ４０及びＤＭＡＣ３２ａを介して画像データＧＤが入力される、又はセンサＩ／Ｆ３１からＤＭＡＣ３１ａ，３２ａを介して画像データＧＤが入力される。遅延回路４４は、画像データＧＤを所定時間だけ遅延させて画像データＧＤｄとして補正回路４９に出力する。例えば、遅延回路４４は、補正係数演算回路４７から補正係数ＰＡが出力されるタイミングに合致させるように、画像データＧＤを所定時間遅延させて補正回路４９に出力する。
【００３１】
ここで、画像データＧＤについて説明する。
図３（ａ）に示すように、１つのフレーム（１画面）の画像データＧＤは、撮像部１１（図１参照）において撮像した画像に対応する有効画像データ（画像データ）ＧＤＰと、撮像した画像に対応しないブランクデータＧＤＢと、を有する。
【００３２】
画像データＧＤＰは、複数の画素が２次元の行列状に配列された画像データである。画像データＧＤＰは、複数のラインデータを有している。各ラインデータは、複数の画素データＧＰを有している。図３（ａ）において左右方向に配列された画素データＧＰは、撮像素子部２２内の撮像素子の第１方向（例えば、水平方向）に配列された複数の受光部に対応する。また、図３（ａ）において上下方向に配列された画素データＧＰは、撮像素子部２２内の撮像素子の第１方向と直交する第２方向（例えば、垂直方向）に配列された複数の受光部に対応する。各画素データＧＰは、対応する受光部がそれぞれ受ける光の量に応じた値（画素値）を含む。
【００３３】
ここで、撮像素子部２２の受光部は、所定配列（例えば、ベイヤ配列）のカラーフィルタを透過した光を受光する。したがって、各画素データＧＰに含まれる画素値は、対応するカラーフィルタの配列及び色に応じた色情報を含む。例えば、ベイヤ配列のカラーフィルタは、赤色（Ｒ）のフィルタと、２つの緑色（Ｇｒ，Ｇｂ）のフィルタと、青色（Ｂ）のフィルタとを含む。例えば、図３（ｂ）に示すように、撮像素子の奇数段の行に対応するラインデータには、赤色（Ｒ）成分の色情報を持つ画素データと緑色（Ｇｒ）成分の色情報を持つ画素データとが交互に含まれる。また、撮像素子の偶数段の行に対応するラインデータには、緑色（Ｇｂ）成分の色情報を持つ画素データと青色（Ｂ）成分の色情報を持つ画素データとが交互に含まれる。
【００３４】
図３（ａ）に示すように、画像データＧＤＰを含むラインデータよりも前のラインデータを垂直前ブランクデータと称し、画像データＧＤＰを含むラインデータの後のラインデータを垂直後ブランクデータと称する。また、画像データＧＤＰを含むラインデータにおいて、画像データＧＤＰよりも前のデータを水平前ブランクデータと称し、画像データＧＤＰの後のデータを水平後ブランクデータと称する。垂直前ブランクデータのライン数を垂直前ブランク数ＶＳＢ、有効画像データＧＤＰを含むライン数を垂直有効画素数ＶＷ、垂直後ブランクデータのライン数を垂直後ブランク数ＶＥＢとする。水平前ブランクデータの水平方向のデータ数を水平前ブランク数ＨＳＢ、有効画像データＧＤＰを含む水平方向の画素数を水平有効画素数ＨＷ、水平後ブランクデータの水平方向の画素数を水平後ブランク数ＨＥＢとする。
【００３５】
図４は、有効画像データＧＤＰにおける画素データＧＰの配列の一例を示している。図４に示した有効画像データＧＤＰは、説明の簡略化のために、単色の画像データとする。以下では、図４に示した有効画像データＧＤＰを用いて各種処理を説明する。
【００３６】
図４に示した画像データＧＤＰは、複数の画素（ここでは、２４画素×４８画素）が水平方向（行方向：図中の左右方向）及び垂直方向（列方向：図中の上下方向）に２次元状に配列された画像データである。すなわち、画像データＧＤＰは、２４本のラインデータＬ１〜Ｌ２４を有し、各ラインデータＬ１〜Ｌ２４は、４８個の画素データＧＰ（画素）を有している。換言すると、画像データＧＤＰでは、所定サイズ（ここでは、８画素×８画素）のブロックＭＢが水平方向に６個配列され、ブロックＭＢが垂直方向に３個配列されている。
【００３７】
図２に示すように、水平カウンタ４５は、クロック信号ＣＬＫと、１フレームの区切り（フレームの開始）を示す垂直同期信号ＶＤと、１ラインの区切り（各ラインの開始）を示す水平同期信号ＨＤとを入力し、画素データＧＰの水平方向の位置を示す水平カウント値ＨＣＴを出力する。例えば、水平カウンタ４５は、クロック信号ＣＬＫの立ち上がりエッジに応答して水平カウント値ＨＣＴをカウントアップし、垂直同期信号ＶＤがアサートされる（例えば、論理Ｈレベルになる）、又は水平同期信号ＨＤがアサートされると、水平カウント値ＨＣＴを初期値（ここでは、１）にリセットする。
【００３８】
垂直カウンタ４６は、垂直同期信号ＶＤと、水平同期信号ＨＤとを入力し、画素データＧＰの垂直方向の位置を示す垂直カウント値ＶＣＴを出力する。例えば、垂直カウンタ４６は、垂直同期信号ＶＤがアサートされると、垂直カウント値ＶＣＴを初期値（ここでは、０）にリセットし、その後、水平同期信号ＨＤがアサートされる度に垂直カウント値ＶＣＴをカウントアップする。
【００３９】
水平カウント値ＨＣＴ及び垂直カウント値ＶＣＴは、補正係数演算回路４７に供給されるとともに、補正領域設定回路４８に供給される。補正係数演算回路４７には、垂直同期信号ＶＤと、水平同期信号ＨＤとが入力されるとともに、内部メモリ４３から読み出された補正係数ＲＤ１，ＲＤ２が内部メモリ制御回路４２を介して入力される。
【００４０】
補正係数演算回路４７は、内部メモリ４３から読み出した補正係数ＲＤ１，ＲＤ２に基づいて補正係数ＰＡを算出し、その補正係数ＰＡを補正回路４９に出力する。
補正領域設定回路４８は、水平カウント値ＨＣＴと、垂直カウント値ＶＣＴと、水平有効画素数ＨＷと、垂直有効画素数ＶＷとを入力し、補正係数ＰＡにより補正された画素データの出力を許可する出力イネーブル信号ＯＵＴＥＮを生成する。補正領域設定回路４８は、例えば、水平カウント値ＨＣＴと、垂直カウント値ＶＣＴと、水平有効画素数ＨＷと、垂直有効画素数ＶＷとに基づいて、画像データＧＤのうち有効画像データＧＤＰ内の画素データＧＰが遅延回路４４に入力される期間のみ論理Ｈレベル（Ｈレベル）となる出力イネーブル信号ＯＵＴＥＮを補正回路４９に出力する。
【００４１】
補正回路４９は、遅延回路４４からの画像データＧＤｄを、補正係数演算回路４７からの補正係数ＰＡを用いて補正し、補正後の画像データＧＤｃを出力する。例えば、補正回路４９は、画像データＧＤｄ内の各画素データＧＰに対して、当該画素データＧＰに対応する補正係数ＰＡを乗算して、補正後の画素データを生成する。そして、補正回路４９は、出力イネーブル信号ＯＵＴＥＮがＨレベルのときに、補正後の画素データを画像データＧＤｃとして出力する。一方、補正回路４９は、出力イネーブル信号ＯＵＴＥＮがＬレベルのときには、補正後の画素データを出力せずに、画像データＧＤｄを画像データＧＤｃとして出力する。
【００４２】
次に、補正係数演算回路４７における処理の概要を説明する。
まず、図４に示した画像データＧＤＰ内の各画素データＧＰの画素値（輝度）には、シェーディングが含まれている。詳述すると、光学レンズの結像では、画角の中心から周辺領域に向かって同心円状に輝度が減衰するシェーディングが発生しているため、画像データＧＤＰ内の各画素データＧＰにもシェーディングが含まれている。
【００４３】
図５（ａ）は、画像データＧＤＰの水平方向の画素数（例えば、撮像光学系２１内の光学レンズ（図示略）の直径方向における画素数）を横軸に示し、各画素データＧＰの輝度を縦軸に示している。ここでは、均一な輝度の被写体を撮像したときの輝度が示されている。図５（ａ）に示すように、各画素データＧＰの輝度は、シェーディングを内包しているため、撮像光学系２１内の光学レンズの中心（画角の中心）から左右両端部に向かって減衰する曲線を描く。以下の説明では、画角の中心からの距離に応じた中心の輝度に対する輝度の減衰率を、シェーディング特性（輝度特性）という。
【００４４】
シェーディング補正部３２では、まず、メモリ１４内の補正係数テーブル１４ａに格納された補正係数ＲＣから補正係数ＰＡが補正係数演算回路４７で算出される。そして、シェーディング補正部３２では、算出した補正係数ＰＡに基づいて、画像データＧＤＰのシェーディング特性の補正が行われる。以下に、シェーディング補正部３２によるシェーディング補正処理の概要について説明する。
【００４５】
図５（ｂ）は、画像データＧＤＰの水平方向の画素数を横軸に示し、画素データＧＰに対する補正係数を縦軸に示している。ここでは、理想的な補正係数の特性（補正特性）として、各画素データＧＰ毎に補正係数が用意された補正特性ＳＰ１（破線参照）が示されている。補正特性ＳＰ１は、画像データＧＤＰのシェーディング特性に対応して、画角の中心から周辺領域に向かって補正係数が増加する曲線を描く。この補正特性ＳＰ１に基づいて、画像データＧＤＰの各画素データＧＰの輝度を補正すると、画像データＧＤＰ内の全ての画素データＧＰの輝度を画角の中心と同等の輝度に補正することができる。しかし、補正特性ＳＰ１を用いる場合には、１フレームの画像データＧＤＰの全ての画素データＧＰに対する補正係数が必要となるため、それら補正係数を格納するためにメモリ１４が大容量化するという問題がある。
【００４６】
そこで、本実施形態では、画像データＧＤＰの画素数よりも少ない数の補正係数、つまり画像データＧＤＰから所定数の画素データＧＰを間引いた後の画素データＧＰに対する補正係数のみを補正係数テーブル１４ａ（メモリ１４）に格納している。そして、間引いた所定数の画素データＧＰに対する補正係数は、例えば、当該画素データＧＰの近傍４点の補正係数を用いて線形補間して算出する。ここで、線形補間法について簡単に説明する。
【００４７】
図７（ａ）に示すように、補正係数テーブル１４ａには、例えば、３×６個の補正係数ＲＣが格納されている。ここで、有効画像データＧＤＰは、２４×４８画素の画像データである。このため、２４×４８画素の画素データＧＰの各々に対応する補正係数を用意するためには、３×６個の補正係数ＲＣから２４×４８個の補正係数を線形補間法によって補間する必要がある。図７（ａ）及び図７（ｂ）において、黒丸及び白丸はそれぞれ１つの補正係数を表わし、黒丸は補正係数テーブル１４ａに格納された補正係数ＲＣを表わし、白丸は補正係数ＲＣに基づいて線形補間法によって補間された補正係数ＲＬを表わしている。また、図７（ｂ）では、有効画像データＧＤＰの各画素データＧＰと補正係数ＲＣ，ＲＬとの位置関係を示している。
【００４８】
上述した線形補間法では、補正係数ＲＣの配置間隔を所定の間隔（ここでは、８倍）に拡大し、各補正係数ＲＣ間の係数値が滑らかに遷移するように補正係数ＲＣを補間する。具体的には、本例の線形補間法では、補正係数ＲＣの水平方向における配置間隔を８倍に拡大し、補正係数ＲＣの垂直方向における配置間隔を８倍に拡大する。これにより、水平方向に隣接して配置される補正係数ＲＣ間に、線形補間法によって補間された７個の補正係数ＲＬが配置され、垂直方向に隣接して配置される補正係数ＲＣ間に、線形補間法によって補間された７個の補正係数ＲＬが配置される。換言すると、補正係数テーブル１４ａには、有効画像データＧＤＰにおける各ブロックＭＢの左上（１行１列目）の画素データＧＰに対応する補正係数ＲＣのみが格納されている。すなわち、補正係数テーブル１４ａには、ブロックＭＢ毎に対応して用意された補正係数ＲＣのみが格納されている。そして、各ブロックＭＢの１行１列目の画素データＧＰ以外の画素データＧＰに対応する補正係数は、線形補間法により補間された補正係数ＲＬとなる。
【００４９】
詳述すると、図８（ａ）及び図８（ｂ）に示すように、各ブロックＭＢの１行１列目の画素データＧＰ以外の画素データＧＰに対応する補正係数ＲＬは、処理対象の画素データＧＰの近傍に位置する４つの補正係数ＲＣから線形補間によって算出される。具体的には、上記線形補間演算には、処理対象の画素データＧＰ（白丸の配置された画素データ）を含むブロックＭＢ１の左上の画素データＧＰに対応する補正係数ＲＣ１と、ブロックＭＢ１と水平方向の後側で隣接する（図中右隣の）ブロックＭＢ２に対応する補正係数ＲＣ２とが利用される。また、上記線形補間演算には、ブロックＭＢ１と垂直方向の後側で隣接する（図中直下の）ブロックＭＢ３（第６ブロック）に対応する補正係数ＲＣ３と、ブロックＭＢ３と水平方向の後側で隣接する（図中右隣の）ブロックＭＢ４に対応する補正係数ＲＣ４とが利用される。すなわち、各ブロックＭＢの１行１列目の画素データＧＰ以外の画素データＧＰに対応する補正係数ＲＬは、４つの補正係数ＲＣ１，ＲＣ２，ＲＣ３，ＲＣ４から線形補間によって算出される。以下の説明では、水平方向の線形補間間隔を水平線形補間間隔ＳＵＢＨとし、垂直方向の線形補間間隔を垂直線形補間間隔ＳＵＢＶとする。この水平線形補間間隔ＳＵＢＨがブロックＭＢの水平サイズとなり、垂直線形補間間隔ＳＵＢＶがブロックＭＢの垂直サイズとなる。換言すると、ブロックＭＢは、水平線形補間間隔ＳＵＢＨ及び垂直線形補間間隔ＳＵＢＶによって規定されるサイズに設定されている。なお、本例の水平線形補間間隔ＳＵＢＨ及び垂直線形補間間隔ＳＵＢＶは共に「８」となる。
【００５０】
図５（ｂ）には、補正係数テーブル１４ａに格納された補正係数ＲＣと線形補間法により補間された補正係数ＲＬとを含む補正特性ＳＰ２が図中に実線で示されている。線形補間法では、補間後の各補正係数ＲＬ間の係数値が滑らかに遷移するように、各補正係数ＲＣ間を直線で結び、この直線上に等間隔に配置するように補正係数ＲＬを補間する。このような線形補間法により、補正係数テーブル１４ａの６４倍（＝８×８倍）のサイズを持つ画像データＧＤＰの各画素データＧＰに対応する補正係数を生成することができる。
【００５１】
但し、上述した補正特性ＳＰ２では、所定数の画素データＧＰを間引いた分だけ、理想の補正特性ＳＰ１に対してずれが生じている。このずれが大きくなると、画像データＧＤＰに対して違和感のある（例えば、段差の目立つ）画像補正が行われることになる。
【００５２】
そこで、本例の補正係数演算回路４７では、さらに、線形補間演算に用いる補正係数ＲＣ１〜ＲＣ４を補正するための補正値ＣＲが算出される。これら補正係数ＲＣ１〜ＲＣ４に対する補正値ＣＲは、例えば、補正対象の補正係数とその補正係数の水平方向における前後の補正係数ＲＣとの大小に基づいて算出される。また、補正係数演算回路４７では、各補正係数ＲＣ１〜ＲＣ４が補正値ＣＲにより補正される。そして、補正係数演算回路４７は、補正後の補正係数ＲＣ１〜ＲＣ４を用いて線形補間して、処理対象の画素データＧＰに対する補正係数ＰＡを算出する。この補正係数ＰＡは、補正回路４９に供給される。
【００５３】
図６に示すように、以上説明した補正係数ＲＣ１〜ＲＣ４の補正処理により、補正特性ＳＰ２が補正特性ＳＰ３のように補正され、理想の補正特性ＳＰ１に近づく。これにより、画像データＧＤＰに対して違和感のない画像補正を行うことができ、シェーディング補正の精度を向上させることができる。
【００５４】
次に、補正係数演算回路４７の内部構成例について説明する。
図２に示すように、補正係数演算回路４７は、読み出し回路５１と、補正値算出回路５２と、線形補間回路５３とを有している。読み出し回路５１には、水平カウンタ４５からの水平カウント値ＨＣＴと、垂直カウンタ４６からの垂直カウント値ＶＣＴと、水平同期信号ＨＤと、垂直同期信号ＶＤと、水平線形補間間隔ＳＵＢＨと、垂直線形補間間隔ＳＵＢＶとが入力される。読み出し回路５１は、入力した各種信号に基づいて、処理対象の画素データＧＰの画像データＧＤＰにおける座標位置に応じた補正係数ＲＣを内部メモリ４３から読み出すためのリードイネーブル信号ＲＤＥＮ及びリードアドレス信号ＲＡＤを生成する。そして、読み出し回路５１は、リードイネーブル信号ＲＤＥＮ及びリードアドレス信号ＲＡＤを内部メモリ制御回路４２に出力する。内部メモリ制御回路４２は、Ｈレベルのリードイネーブル信号ＲＤＥＮに応答して、リードアドレス信号ＲＡＤに応じた内部メモリ４３の領域から補正係数ＲＣを読み出し、読み出した補正係数ＲＣを補正係数ＲＤ１，ＲＤ２として補正値算出回路５２に出力する。
【００５５】
次に、図９に従って、読み出し回路５１におけるリードイネーブル信号ＲＤＥＮにかかる処理の一例について説明する。
読み出し回路５１は、まず、水平同期信号ＨＤがアサートした（例えば、Ｈレベルになった）か否かを判定する（ステップＳ１）。例えば、読み出し回路５１は、水平同期信号ＨＤがアサートされた場合には、内部メモリ４３からの補正係数ＲＣの読み出しを許可するＨレベルのリードイネーブル信号ＲＤＥＮを生成する（ステップＳ２）。その一方で、水平同期信号ＨＤがアサートされていない場合には、次のステップＳ３に移行する。
【００５６】
続いて、読み出し回路５１は、水平カウント値ＨＣＴが１以上３以下であるか否かを判定する（ステップＳ３）。例えば、読み出し回路５１は、水平カウント値ＨＣＴが１以上３以下である場合にはＨレベルのリードイネーブル信号ＲＤＥＮを生成する（ステップＳ２）。すなわち、読み出し回路５１は、水平同期信号ＨＤがアサートされてから画像データＧＤＰの各ラインデータの１〜３列目の画素データを処理するまでの間、Ｈレベルのリードイネーブル信号ＲＤＥＮを生成する。その一方で、ステップＳ３において、水平カウント値ＨＣＴが１未満又は４以上である場合には、次のステップＳ４に移行する。
【００５７】
次いで、読み出し回路５１は、水平カウント値ＨＣＴが水平線形補間間隔ＳＵＢＨの倍数に所定画素数（ここでは、４）を加算した値と等しいか否かを判定する（ステップＳ４）。例えば、読み出し回路５１は、ＨＣＴ＝ＳＵＢＨ×Ｙ（Ｙは１以上の整数）＋４の関係式を満たす場合には、Ｈレベルのリードイネーブル信号ＲＤＥＮを生成する。すなわち、読み出し回路５１は、各ブロックＭＢの４列目の画素データＧＰを処理する際に、Ｈレベルのリードイネーブル信号ＲＤＥＮを生成する。その一方で、ステップＳ４において、ＨＣＴ＝ＳＵＢＨ×Ｙ＋４の関係式を満たさない場合には、読み出し回路５１は、Ｌレベルのリードイネーブル信号ＲＤＥＮを生成する。
【００５８】
次に、図１０に従って、読み出し回路５１におけるリードアドレス信号ＲＡＤにかかる処理の一例について説明する。
読み出し回路５１は、まず、水平同期信号ＨＤがアサートしたか、又は１ラインの処理終了を示す終了信号ＨＷＩがＬレベルであるか否かを判定する（ステップＳ１１）。例えば、読み出し回路５１は、水平同期信号ＨＤがアサートされた場合には、リードアドレス信号ＲＡＤを初期値（ここでは、１）にリセットする（ステップＳ１２）。また、読み出し回路５１は、終了信号ＨＷＩが１ラインの処理終了を示すＬレベルである場合には、リードアドレス信号ＲＡＤを初期値にリセットする（ステップＳ１２）。その一方で、水平同期信号ＨＤがアサートされていない場合であって、且つ終了信号ＨＷＩがＨレベルである場合には、次のステップＳ１３に移行する。
【００５９】
続いて、読み出し回路５１は、水平カウント値ＨＣＴが１以上３以下であるか否かを判定する（ステップＳ１３）。例えば、読み出し回路５１は、水平カウント値ＨＣＴが１以上３以下である場合には、水平カウント値ＨＣＴがカウントアップされる度にリードアドレス信号ＲＡＤをインクリメントする（ステップＳ１５）。その一方で、ステップＳ１３において、水平カウント値ＨＣＴが１未満又は４以上である場合には、次のステップＳ１４に移行する。
【００６０】
次いで、読み出し回路５１は、水平カウント値ＨＣＴが以下の２つの式（１）、（２）を満たすか否かを判定する（ステップＳ１４）。
ＨＣＴ＝ＳＵＢＨ×Ｙ＋４        …（１）
ＨＣＴ＜ＨＷ−ＳＵＢＨ×４      …（２）
例えば、読み出し回路５１は、水平カウント値ＨＣＴが式（１）を満たし、且つ式（２）を満たす場合には、リードアドレス信号ＲＡＤをインクリメントする。すなわち、水平カウント値ＨＣＴが、有効画像データＧＤＰの水平有効画素数ＨＷから水平線形補間間隔ＳＵＢＨの４倍の画素数を引いた値よりも小さく、且つ、水平カウント値ＨＣＴが水平線形補間間隔ＳＵＢＨの倍数に所定画素数（ここでは、４）を加算した値と等しい場合に、リードアドレス信号ＲＡＤをインクリメントする。その一方で、水平カウント値ＨＣＴが式（１）、（２）のうち一方でも満たさない場合には、ステップＳ１１に戻る。
【００６１】
図２に示すように、補正値算出回路５２には、内部メモリ制御回路４２からの補正係数ＲＤ１，ＲＤ２と併せて、リードイネーブル信号ＲＤＥＮが入力される。補正値算出回路５２は、補正係数ＲＤ１，ＲＤ２に基づいて、線形補間演算に使用する４点の補正係数ＲＣ１〜ＲＣ４（図８参照）の各々に対する補正値ＣＲを生成する。そして、補正値算出回路５２は、入力した複数の補正係数ＲＤ１，ＲＤ２のうち線形補間演算に使用する補正係数を補正係数ＲＤＰ３，ＲＤＱ３として線形補間回路５３に出力するとともに、補正値ＣＲを線形補間回路５３に出力する。
【００６２】
ここで、補正値算出回路５２の内部構成の一例について説明する。
図１１に示すように、補正値算出回路５２は、保持回路６１，６２と、補正値算出回路６３，６４と、フリップフロップ（ＦＦ）回路６５〜６８とを有している。
【００６３】
保持回路６１は、内部メモリ４３から読み出された補正係数ＲＣ（補正係数ＲＤ１）を順次読み込み、複数個（ここでは、５個）の補正係数ＲＤ１を順番に保持する。この保持回路６１に保持される補正係数は、線形補間演算に使用する４つの補正係数ＲＣ１〜ＲＣ４のうち、上側の補正係数ＲＣ１，ＲＣ２に対する補正値ＣＲａを算出するために必要な補正係数である。例えば、保持回路６１は、補正対象の補正係数ＲＣ１（又は、補正係数ＲＣ２）と、その補正対象の補正係数の水平方向における前後２つずつの補正係数ＲＣとの５つの補正係数を補正係数ＲＤＰ１〜ＲＤＰ５として保持する。
【００６４】
保持回路６１は、保持した５つの補正係数ＲＤＰ１〜ＲＤＰ５を補正値算出回路６３に出力する。補正値算出回路６３は、５つの補正係数ＲＤＰ１〜ＲＤＰ５に基づいて、補正対象の補正係数ＲＣ１（又は、補正係数ＲＣ２）に対する補正値ＣＲａを算出し、その補正値ＣＲａをＦＦ回路６５の入力端子に出力する。ＦＦ回路６５，６６のクロック端子には、クロック信号ＣＬＫが入力される。ＦＦ回路６５は、例えば、クロック信号ＣＬＫの立ち上がりエッジに応答して、補正値ＣＲａをラッチし、ラッチしたレベルと等しい補正値ＣＲ２を出力する。ＦＦ回路６６は、例えば、クロック信号ＣＬＫの立ち上がりエッジに応答して、入力端子に供給される補正値ＣＲ２をラッチし、ラッチしたレベルと等しい補正値ＣＲ１を出力する。
【００６５】
同様に、保持回路６２は、内部メモリ４３から読み出された補正係数ＲＣ（補正係数ＲＤ２）を順次読み込み、複数個（ここでは、５個）の補正係数ＲＤ２を順番に保持する。この保持回路６２に保持される補正係数は、線形補間演算に使用する４つの補正係数ＲＣ１〜ＲＣ４のうち、下側の補正係数ＲＣ３，ＲＣ４に対する補正値ＣＲｂを算出するために必要な補正係数である。例えば、保持回路６２は、補正対象の補正係数ＲＣ３（又は、補正係数ＲＣ４）と、その補正対象の補正係数の水平方向における前後２つずつの補正係数ＲＣとの５つの補正係数を補正係数ＲＤＱ１〜ＲＤＱ５として保持する。
【００６６】
保持回路６２は、保持した５つの補正係数ＲＤＱ１〜ＲＤＱ５を補正値算出回路６４に出力する。補正値算出回路６４は、５つの補正係数ＲＤＱ１〜ＲＤＱ５に基づいて、補正対象の補正係数ＲＣ３（又は、補正係数ＲＣ４）に対する補正値ＣＲｂを算出し、その補正値ＣＲｂをＦＦ回路６７の入力端子に出力する。ＦＦ回路６７，６８のクロック端子には、クロック信号ＣＬＫが入力される。ＦＦ回路６７は、例えば、クロック信号ＣＬＫの立ち上がりエッジに応答して、補正値ＣＲｂをラッチし、ラッチしたレベルと等しい補正値ＣＲ４を出力する。ＦＦ回路６８は、例えば、クロック信号ＣＬＫの立ち上がりエッジに応答して、入力端子に供給される補正値ＣＲ４をラッチし、ラッチしたレベルと等しい補正値ＣＲ３を出力する。
【００６７】
次に、図１２（ｂ）に示すように、ハッチングで示した位置の画素データＧＰが処理対象（シェーディング補正対象）の画素データＧＰｃである場合の補正値算出回路５２の処理の概要について説明する。なお、図１２（ａ）は、図１２（ｂ）に示したラインデータＬ１〜Ｌ８の画素データＧＰに対してシェーディング補正処理を施す際に内部メモリ４３に格納される補正係数ＲＣを示している。また、図１２（ｂ）では、図１２（ａ）に示した補正係数ＲＣ（補正係数Ｖ１〜Ｖ１２）と有効画像データＧＤＰの各画素データＧＰとの位置関係を示している。
【００６８】
図１２（ｂ）に示した例では、処理対象の画素データＧＰｃが含まれるブロックＭＢ１に対応する補正係数ＲＣ１（ここでは、補正係数Ｖ３）と、ブロックＭＢ２〜ＭＢ４にそれぞれ対応する補正係数ＲＣ２〜ＲＣ４（ここでは、補正係数Ｖ４，Ｖ９，Ｖ１０）とを、補正値ＣＲにより補正する。さらに、補正後の補正係数ＲＣ１〜ＲＣ４を利用した線形補間演算により、画素データＧＰｃに対応する補正係数ＰＡを算出する。このため、補正係数演算回路４７では、線形補間演算を実施する前に、補正値算出回路５２において補正値ＣＲの算出が行われる。
【００６９】
まず、保持回路６１には、ブロックＭＢ１に対応する補正対象の補正係数ＲＣ１（ここでは、補正係数Ｖ３）と、その補正対象の補正係数Ｖ３の水平方向の前後２つずつの補正係数Ｖ１，Ｖ２，Ｖ４，Ｖ５とが保持される。具体的には、保持回路６１には、補正係数Ｖ１，Ｖ２，Ｖ３，Ｖ４，Ｖ５がこの順番で入力される。保持回路６１は、例えば、入力した補正係数Ｖ１〜Ｖ５を、各保持部６１Ａ〜６１Ｅに保持部６１Ｅ，６１Ｄ，６１Ｃ，６１Ｂ，６１Ａという順番で保持する。
【００７０】
詳述すると、まず、補正係数Ｖ１が補正係数ＲＤ１として保持回路６１に入力されると、その補正係数Ｖ１が保持部６１Ｅに保持される。続いて、補正係数Ｖ２が保持回路６１に入力されると、保持部６１Ｅから出力されている補正係数Ｖ１（補正係数ＲＤＰ５）が保持部６１Ｄに保持されるとともに、補正係数Ｖ２が保持部６１Ｅに保持される。次いで、補正係数Ｖ３が保持回路６１に入力されると、保持部６１Ｄから出力されている補正係数Ｖ１（補正係数ＲＤＰ４）が保持部６１Ｃに保持され、保持部６１Ｅから出力されている補正係数Ｖ２（補正係数ＲＤＰ５）が保持部６１Ｄに保持されるとともに、補正係数ＲＤ１として入力される補正係数Ｖ３が保持部６１Ｅに保持される。以後も同様に、新たに入力される補正係数ＲＤ１が保持部６１Ｅに保持され、その他の保持部６１Ｄ〜６１Ａには直前の保持部６１Ｅ〜６１Ｂから出力されている補正係数ＲＤＰ５〜ＲＤＰ２が保持される。すなわち、保持回路６１に入力された補正係数ＲＤ１は、保持部６１Ｅ→６１Ｄ→６１Ｃ→６１Ｂ→６１Ａという順番で順次保持される。これにより、補正係数Ｖ５が保持部６１Ｅに保持されると、保持部６１Ｄには補正係数Ｖ４、保持部６１Ｃには補正係数Ｖ３、保持部６１Ｂには補正係数Ｖ２、保持部６１Ａには補正係数Ｖ１がそれぞれ保持される。具体的には、保持部６１Ｃには補正対象の補正係数Ｖ３が保持され、保持部６１Ｂには、補正対象の補正係数Ｖ３に対応するブロックＭＢＣ１（第１ブロック）と水平方向の前側で隣接するブロックＭＢＣ２（第２ブロック）に対応する補正係数Ｖ２が保持される。保持部６１Ａには、ブロックＭＢＣ２と水平方向の前側で隣接するブロックＭＢＣ３（第３ブロック）に対応する補正係数Ｖ１が保持される。保持部６１Ｄには、ブロックＭＢＣ１と水平方向の後側で隣接するブロックＭＢＣ４（第４ブロック）に対応する補正係数Ｖ４が保持される。保持部６１Ｅには、ブロックＭＢＣ４と水平方向の後側で隣接するブロックＭＢＣ５（第５ブロック）に対応する補正係数Ｖ５が保持される。そして、保持部６１Ａ〜６１Ｅは、保持した補正係数Ｖ１〜Ｖ５を補正係数ＲＤＰ１〜ＲＤＰ５としてそれぞれ出力する。
【００７１】
このとき、保持部６１Ｃから出力される補正係数ＲＤＰ３（ここでは、補正係数Ｖ３）、つまり補正対象の補正係数ＲＤＰ３は、線形補間回路５３にも出力される。なお、保持部６１Ａ〜６１Ｅにおける補正係数Ｖ１〜Ｖ５の保持タイミングは、例えば、リードイネーブル信号ＲＤＥＮがＨレベルであるときにクロック信号ＣＬＫが立ち上がるタイミングである。
【００７２】
補正値算出回路６３は、補正係数Ｖ１〜Ｖ５を入力し、補正対象の補正係数Ｖ３と、その他の補正係数Ｖ１，Ｖ２，Ｖ４，Ｖ５との差分に基づいて、補正係数Ｖ３に対する補正値ＣＲａを算出する。すなわち、補正値算出回路６３は、補正係数ＲＤＰ１〜ＲＤＰ５を入力し、補正対象の補正係数ＲＤＰ３と、その他の補正係数ＲＤＰ１，ＲＤＰ２，ＲＤＰ４，ＲＤＰ５との差分に基づいて、補正係数ＲＤＰ３に対する補正値ＣＲａを算出する。以下に、補正値ＣＲａの算出方法の一例について説明する。
【００７３】
図１３（ａ）に示すように、補正値算出回路６３は、補正係数ＲＤＰ３を基準として、補正係数ＲＤＰ３とその前後の補正係数ＲＤＰ１，ＲＤＰ２，ＲＤＰ４，ＲＤＰ５との差分に基づいて、以下の式で示す判定値Ｈ１を算出する。
【００７４】
Ｈ１＝α１×Ｒ１＋α１×Ｒ２＋α２×Ｒ３＋α２×Ｒ４
Ｈ１＝α１（Ｒ１＋Ｒ２）＋α２（Ｒ３＋Ｒ４）          …（３）
但し、１＞α１＞α２
Ｒ１＝ＲＤＰ２−ＲＤＰ３
Ｒ２＝ＲＤＰ４−ＲＤＰ３
Ｒ３＝ＲＤＰ１−ＲＤＰ３
Ｒ４＝ＲＤＰ５−ＲＤＰ３
上記式（３）におけるα１は、補正係数ＲＤＰ３と、その補正係数ＲＤＰ３と隣接する補正係数ＲＤＰ２，ＲＤＰ４との差分Ｒ１，Ｒ２に対する重み値である。また、式（３）におけるα２は、補正係数ＲＤＰ３と、補正係数ＲＤＰ１，ＲＤＰ５との差分Ｒ３，Ｒ４に対する重み値である。すなわち、補正値算出回路６３は、差分Ｒ１，Ｒ２に対して重み値α１で重み付けした値と、差分Ｒ３，Ｒ４に対して重み値α２で重み付けした値とを加算することにより、判定値Ｈ１を算出する。さらに、補正値算出回路６３は、以下の式から補正値ＣＲａを算出する。
【００７５】
ＣＲａ＝Ｈ１×Ｄ        …（４）
上記式（４）における係数Ｄは、補正係数ＲＤＰ３のビット精度の１／２となる係数である。なお、重み値α１（第１重み値）及び重み値α２（第２重み値）は、任意の値に設定可能である。また、上記式（３）における右辺の第１項は第１演算結果の一例であり、式（３）における右辺の第２項は第２演算結果の一例である。
【００７６】
例えば、図１３（ｂ）に示した例では、補正係数ＲＤＰ３と補正係数ＲＤＰ２，ＲＤＰ４，ＲＤＰ５とが等しいため、差分Ｒ１，Ｒ２，Ｒ４がゼロになる。したがって、判定値Ｈ１及び補正値ＣＲａは、以下の式で表わされる。
【００７７】
Ｈ１＝α１（０＋０）＋α２（Ｒ３＋０）
ＣＲａ＝α２×Ｒ３×Ｄ
また、図１３（ｃ）に示した例では、補正係数ＲＤＰ３と補正係数ＲＤＰ４，ＲＤＰ５とが等しいため、差分Ｒ２，Ｒ４がゼロになる。したがって、判定値Ｈ１及び補正値ＣＲａは、以下の式で表わされる。
【００７８】
Ｈ１＝α１（Ｒ１＋０）＋α２（Ｒ３＋０）
ＣＲａ＝（α１×Ｒ１＋α２×Ｒ３）×Ｄ
このように算出された補正値ＣＲａはＦＦ回路６５の入力端子に供給され、クロック信号ＣＬＫの立ち上がりエッジに応答して補正値ＣＲａがＦＦ回路６５にラッチされる。その後、補正係数Ｖ３の右隣の補正係数Ｖ４に対する補正値ＣＲａが同様に算出される。詳述すると、まず、補正係数Ｖ６が補正係数ＲＤ１として保持回路６１に入力され、その補正係数Ｖ６が保持部６１Ｅに保持される。このとき、保持部６１Ａ〜６１Ｄには、直前の保持部６１Ｂ〜６１Ｅからそれぞれ出力されていた補正係数Ｖ２〜Ｖ５が保持される。そして、補正係数Ｖ２〜Ｖ６がそれぞれ補正係数ＲＤＰ１〜ＲＤＰ５として補正値算出回路６３に供給される。このとき、補正対象の補正係数ＲＤＰ３（ここでは、補正係数Ｖ４）は、線形補間回路５３にも供給される。補正値算出回路６３では、補正係数ＲＤＰ１〜ＲＤＰ５（つまり、補正係数Ｖ２〜Ｖ６）に基づいて、補正係数Ｖ４に対する補正値ＣＲａが算出される。すると、その補正値ＣＲａがＦＦ回路６５にラッチされるとともに、ＦＦ回路６５から出力されていた補正値ＣＲ２（ここでは、補正係数Ｖ３に対する補正値ＣＲａ）がＦＦ回路６６にラッチされる。このため、ＦＦ回路６６から出力される補正値ＣＲ１は、処理対象の画素データＧＰｃの左上に位置する補正係数ＲＣ１（ここでは、補正係数Ｖ３）に対する補正値となる。また、ＦＦ回路６５から出力される補正値ＣＲ２は、処理対象の画素データＧＰｃの右上に位置する補正係数ＲＣ２（ここでは、補正係数Ｖ４）に対する補正値となる。
【００７９】
補正値算出回路５２では、上述した処理と並行して、保持回路６２、補正値算出回路６４及びＦＦ回路６７，６８において以下の処理が実施される。なお、保持回路６２、補正値算出回路６４及びＦＦ回路６７，６８における処理は、保持回路６１、補正値算出回路６３及びＦＦ回路６５，６６における上記処理と略同様であるため、簡略化して説明する。
【００８０】
まず、保持回路６２には、ブロックＭＢ３に対応する補正係数ＲＣ３（ここでは、補正係数Ｖ９）と、その補正対象の補正係数Ｖ９の前後２つずつの補正係数Ｖ７，Ｖ８，Ｖ１０，Ｖ１１とが保持される。具体的には、保持回路６２には、補正係数Ｖ７，Ｖ８，Ｖ９，Ｖ１０，Ｖ１１がこの順番で補正係数ＲＤ２として入力される。保持回路６２に入力された補正係数Ｖ７〜Ｖ１１は、保持部６２Ｅ→６２Ｄ→６２Ｃ→６２Ｂ→６２Ａという順番で順次保持される。これにより、補正係数Ｖ１１が保持部６２Ｅに保持されると、保持部６２Ｄには補正係数Ｖ１０、保持部６２Ｃには補正係数Ｖ９、保持部６２Ｂには補正係数Ｖ８、保持部６２Ａには補正係数Ｖ７がそれぞれ保持される。そして、保持部６２Ａ〜６２Ｅは、保持した補正係数Ｖ７〜Ｖ１１を補正係数ＲＤＱ１〜ＲＤＱ５としてそれぞれ補正値算出回路６４に出力する。このとき、保持部６２Ｃから出力される補正係数ＲＤＱ３（ここでは、補正係数Ｖ９）、つまり補正対象の補正係数ＲＤＱ３は、線形補間回路５３にも出力される。
【００８１】
補正値算出回路６４は、補正対象の補正係数ＲＤＱ３（ここでは、補正係数Ｖ９）と、その他の補正係数ＲＤＱ１，ＲＤＱ２，ＲＤＱ４，ＲＤＱ５（ここでは、補正係数Ｖ７，Ｖ８，Ｖ１０，Ｖ１１）との差分に基づいて、以下の式で示す判定値Ｈ２を算出する。
【００８２】
Ｈ２＝α１×Ｒ５＋α１×Ｒ６＋α２×Ｒ７＋α２×Ｒ８
Ｈ２＝α１（Ｒ５＋Ｒ６）＋α２（Ｒ７＋Ｒ８）          …（５）
但し、１＞α１＞α２
Ｒ５＝ＲＤＱ２−ＲＤＱ３
Ｒ６＝ＲＤＱ４−ＲＤＱ３
Ｒ７＝ＲＤＱ１−ＲＤＱ３
Ｒ８＝ＲＤＱ５−ＲＤＱ３
さらに、補正値算出回路６４は、判定値Ｈ２に対して、補正係数ＲＤＱ３のビット精度の１／２となる係数Ｄを乗算して、補正係数ＲＤＱ３（ここでは、補正係数Ｖ９）に対する補正値ＣＲｂを算出する。そして、補正値算出回路６４は、補正値ＣＲｂをＦＦ回路６７の入力端子に供給する。
【００８３】
補正値ＣＲｂは、クロック信号ＣＬＫの立ち上がりエッジに応答してＦＦ回路６７にラッチされる。その後、補正係数Ｖ９の右隣の補正係数Ｖ１０に対する補正値ＣＲｂが同様に算出される。詳述すると、まず、補正係数Ｖ１２が補正係数ＲＤ２として保持回路６１に入力され、その補正係数Ｖ１２が保持部６２Ｅに保持される。このとき、保持部６２Ａ〜６２Ｄには、直前の保持部６２Ｂ〜６２Ｅからそれぞれ出力されていた補正係数Ｖ８〜Ｖ１１が保持される。そして、補正係数Ｖ８〜Ｖ１２がそれぞれ補正係数ＲＤＱ１〜ＲＤＱ５として補正値算出回路６４に供給される。このとき、補正対象の補正係数ＲＤＱ３（ここでは、補正係数Ｖ１０）は、線形補間回路５３にも供給される。補正値算出回路６４では、補正係数ＲＤＱ１〜ＲＤＱ５（つまり、補正係数Ｖ８〜Ｖ１２）に基づいて、補正係数Ｖ１０に対する補正値ＣＲｂが算出される。すると、その補正値ＣＲｂがＦＦ回路６７にラッチされるとともに、ＦＦ回路６７から出力されていた補正値ＣＲ４（ここでは、補正係数Ｖ９に対する補正値ＣＲｂ）がＦＦ回路６８にラッチされる。このため、ＦＦ回路６８から出力される補正値ＣＲ３は、処理対象の画素データＧＰｃの左下に位置する補正係数ＲＣ３（ここでは、補正係数Ｖ９）に対する補正値となる。また、ＦＦ回路６７から出力される補正値ＣＲ４は、処理対象の画素データＧＰｃの右下に位置する補正係数ＲＣ４（ここでは、補正係数Ｖ１０）に対する補正値となる。
【００８４】
以上説明した処理により、線形補間演算に使用する４つの補正係数ＲＣ１〜ＲＣ４（ここでは、補正係数Ｖ３，Ｖ４，Ｖ９，Ｖ１０）に対する補正値ＣＲ１〜ＣＲ４（以下、総称する場合は「補正値ＣＲ」という。）が算出される。
【００８５】
線形補間回路５３には、補正値ＣＲ１〜ＣＲ４と、補正係数ＲＤＰ３，ＲＤＱ３と、水平カウント値ＨＣＴと、垂直カウント値ＶＣＴと、リードイネーブル信号ＲＤＥＮと、水平線形補間間隔ＳＵＢＨと、垂直線形補間間隔ＳＵＢＶとが入力される。線形補間回路５３には、入力された補正係数ＲＤＰ３，ＲＤＱ３が、線形補間演算に使用する４つの補正係数ＲＣ１〜ＲＣ４として保持される。先の図１２の例を用いて具体的に説明すると、線形補間回路５３には、補正係数Ｖ３，Ｖ４がこの順番で補正係数ＲＤＰ３として入力されるとともに、補正係数Ｖ９，Ｖ１０がこの順番で補正係数ＲＤＱ３として入力される。線形補間回路５３は、例えば、入力した補正係数Ｖ３，Ｖ４を、各保持部５３Ａ，５３Ｂに保持部５３Ｂ，５３Ａという順番で保持するとともに、入力した補正係数Ｖ９，Ｖ１０を、各保持部５３Ｃ，５３Ｄに保持部５３Ｄ，５３Ｃという順番で保持する。
【００８６】
詳述すると、まず、補正係数Ｖ３が補正係数ＲＤＰ３として線形補間回路５３に入力されると、その補正係数Ｖ３が保持部５３Ｂに保持される。続いて、補正係数Ｖ４が補正係数ＲＤＰ３として線形補間回路５３に入力されると、保持部５３Ｂから出力されている補正係数Ｖ３（補正係数ＲＣ１）が保持部５３Ａに保持されるとともに、補正係数Ｖ４（補正係数ＲＣ２）が保持部５３Ｂに保持される。一方、上記補正係数Ｖ３の入力と並行して、補正係数Ｖ９が補正係数ＲＤＱ３として線形補間回路５３に入力されると、その補正係数Ｖ９が保持部５３Ｄに保持される。続いて、上記補正係数Ｖ４の入力と並行して、補正係数Ｖ１０が補正係数ＲＤＱ３として線形補間回路５３に入力されると、保持部５３Ｄから出力されている補正係数Ｖ９（補正係数ＲＣ３）が保持部５３Ｃに保持されるとともに、補正係数Ｖ１０（補正係数ＲＣ４）が保持部５３Ｄに保持される。これにより、保持部５３Ａには補正係数ＲＣ１（ここでは、補正係数Ｖ３）、保持部５３Ｂには補正係数ＲＣ２（ここでは、補正係数Ｖ４）、保持部５３Ｃには補正係数ＲＣ３（ここでは、補正係数Ｖ９）、保持部５３Ｄには補正係数ＲＣ４（ここでは、補正係数Ｖ１０）がそれぞれ保持される。
【００８７】
線形補間回路５３は、保持部５３Ａに保持されている補正係数ＲＣ１に補正値ＣＲ１を加算して、補正係数ＲＣ１を補正した補正後係数ＰＡ１を生成する。同様に、線形補間回路５３は、保持部５３Ｂに保持されている補正係数ＲＣ２に補正値ＣＲ２を加算して補正後係数ＰＡ２を生成し、保持部５３Ｃに保持されている補正係数ＲＣ３に補正値ＣＲ３を加算して補正後係数ＰＡ３を生成し、保持部５３Ｄに保持されている補正係数ＲＣ４に補正値ＣＲ４を加算して補正後係数ＰＡ４を生成する。
【００８８】
線形補間回路５３は、４つの補正後係数ＰＡ１〜ＰＡ４と、水平カウント値ＨＣＴと、垂直カウント値ＶＣＴと、水平線形補間間隔ＳＵＢＨと、垂直線形補間間隔ＳＵＢＶとに基づいて、画素データＧＰｃに対する補正係数ＰＡを線形補間にて算出する。線形補間回路５３は、例えば、以下の式を用いて補正係数ＰＡを算出する。
【００８９】
【数１】
0006318894.tif 000002
図２に示すように、線形補間回路５３（補正係数演算回路４７）で算出された補正係数ＰＡは、補正回路４９に供給される。なお、上述したように、補正回路４９は、遅延回路４４から供給される画像データＧＤｄ内の各画素データＧＰに対して、当該画素データＧＰに対応する補正係数ＰＡを乗算して、シェーディング補正後の画素データを生成する。
【００９０】
なお、本実施形態において、線形補間回路５３は、補正後係数算出回路及び係数算出回路の一例、補正係数ＲＣは係数値の一例、補正係数ＲＤＰ１，ＲＤＱ１は第２係数値の一例、補正係数ＲＤＰ２，ＲＤＱ２は第１係数値の一例である。また、補正係数ＲＤＰ４，ＲＤＱ４は第３係数値の一例、補正係数ＲＤＰ５，ＲＤＱ５は第４係数値の一例である。
【００９１】
次に、シェーディング補正部３２の動作について詳述する。
まず、図１５に示す時刻ｔ１において、ＤＭＡＣ３２ａは、シェーディング補正を開始する信号に応答して、Ｈレベルの要求信号ＲＥＱと、メモリ１４内の補正係数テーブル１４ａに格納された２ライン分の補正係数ＲＣを読み出すためのアドレス信号ＡＤＤＲとをメモリＩ／Ｆ４０に出力する。続いて、メモリＩ／Ｆ４０からＨレベルの許可信号ＡＣＫがＤＭＡＣ３２ａに供給されると、アドレス信号ＡＤＤＲに応じたメモリ１４の領域から２ライン分の（具体的には、ラインデータＬ１〜Ｌ１６を含むブロックＭＢに対応する）補正係数ＲＣがリードデータＤＡＴＡとして読み出される。その後、内部メモリ制御回路４２からＨレベルのデータ要求ＤＴＥＮが入力されると、ＤＭＡＣ３２ａは、リードデータＤＡＴＡをリードデータＲＤＡＴＡとして内部メモリ制御回路４２に出力する。そして、リードデータＲＤＡＴＡ、つまり２ライン分の補正係数ＲＣ（図１２（ａ）に示した補正係数Ｖ１〜Ｖ１２）が内部メモリ４３に格納される。
【００９２】
一方、時刻ｔ１において、フレームの開始を示す垂直同期信号ＶＤがＨレベルに遷移すると（アサインされると）、垂直カウント値ＶＣＴが「０」にリセットされ、水平カウント値ＨＣＴが１にリセットされ、リードアドレス信号ＲＡＤが１にリセットされる。
【００９３】
続いて、時刻ｔ２において、水平同期信号ＨＤがＨレベルに遷移すると（アサインされると）、Ｈレベルのリードイネーブル信号ＲＤＥＮが出力される。また、水平同期信号ＨＤのアサインに応答して、垂直カウント値ＶＣＴが「１」にカウントアップされ、水平カウント値ＨＣＴが「１」にリセットされる。なお、時刻ｔ２の直後に、画像データＧＤの左上（１行１列目）の画素データＰ１が遅延回路４４に入力される。その後、遅延回路４４には、クロック信号ＣＬＫの立ち上がりエッジ毎に画像データＧＤの画素データＧＰが１画素単位で、ラスタスキャン順に入力される。
【００９４】
水平同期信号ＨＤのアサインに応答してＨレベルに遷移したリードイネーブル信号ＲＤＥＮは、水平同期信号ＨＤがＨレベルの期間、及び水平カウント値ＨＣＴが「１」〜「３」までの期間にＨレベルとなる。すなわち、リードイネーブル信号ＲＤＥＮは、時刻ｔ２〜ｔ６の期間、Ｈレベルとなる。このようにリードイネーブル信号ＲＤＥＮがＨレベルの期間にクロック信号ＣＬＫが立ち上がると（時刻ｔ３参照）、リードアドレス信号ＲＡＤのアドレス値（ここでは、「１」）で指定される内部メモリ４３の領域から２つ補正係数ＲＣ（ここでは、補正係数Ｖ１，Ｖ７）がそれぞれ補正係数ＲＤ１，ＲＤ２として読み出される。このとき、水平カウント値ＨＣＴが「１」であるため、リードアドレス信号ＲＡＤが「２」にカウントアップされる。
【００９５】
続いて、リードイネーブル信号ＲＤＥＮがＨレベルの期間にクロック信号ＣＬＫが立ち上がると（時刻ｔ４参照）、「２」のリードアドレス信号ＲＡＤに応じた２つの補正係数Ｖ２，Ｖ８がそれぞれ補正係数ＲＤ１，ＲＤ２として内部メモリ４３から読み出される。このとき、水平カウント値ＨＣＴが「１」であるため、リードアドレス信号ＲＡＤが「３」にカウントアップされる。なお、時刻ｔ４におけるクロック信号ＣＬＫの立ち上がりエッジに応答して、水平カウント値ＨＣＴが「２」にカウントアップされる。その後も同様に、水平同期信号ＨＤがＬレベルに遷移した後は、クロック信号ＣＬＫの立ち上がりエッジ毎に水平カウント値ＨＣＴがカウントアップされる。
【００９６】
次いで、リードイネーブル信号ＲＤＥＮがＨレベルの期間にクロック信号ＣＬＫが立ち上がると（時刻ｔ５参照）、「３」のリードアドレス信号ＲＡＤに応じた２つの補正係数Ｖ３，Ｖ９がそれぞれ補正係数ＲＤ１，ＲＤ２として内部メモリ４３から読み出される。このとき、水平カウント値ＨＣＴが「２」であるため、リードアドレス信号ＲＡＤが「４」にカウントアップされる。続いて、リードイネーブル信号ＲＤＥＮがＨレベルの期間にクロック信号ＣＬＫが立ち上がると（時刻ｔ６参照）、「４」のリードアドレス信号ＲＡＤに応じた２つの補正係数Ｖ４，Ｖ１０がそれぞれ補正係数ＲＤ１，ＲＤ２として内部メモリ４３から読み出される。このとき、水平カウント値ＨＣＴが「３」であるため、リードアドレス信号ＲＡＤが「５」にカウントアップされる。なお、リードイネーブル信号ＲＤＥＮがＬレベルの期間にクロック信号ＣＬＫが立ち上がると（時刻ｔ７）、補正係数ＲＣの読み出しは停止される。この時刻ｔ７では、水平カウント値ＨＣＴが「４」であるため、リードアドレス信号ＲＡＤはカウントアップされない（図１０のステップＳ１４参照）。
【００９７】
以上説明したように、水平同期信号ＨＤのアサイン直後には、「１」〜「４」のリードアドレス信号ＲＡＤに応じた４つの補正係数ＲＤ１（ここでは、補正係数Ｖ１〜Ｖ４）及び４つの補正係数ＲＤ２（ここでは、補正係数Ｖ７〜Ｖ１０）が連続して読み出される。
【００９８】
次に、図１４を併せ参照して、補正値算出回路５２における補正値算出処理について説明する。なお、説明の簡略化のために、補正係数ＲＤ１，ＲＤ２のうち補正係数ＲＤ１に関する処理についてのみ詳述する。ここでは、まず、補正係数ＲＤ１として入力される補正係数Ｖ１，Ｖ２に対する補正値ＣＲａを算出する方法について説明する。
【００９９】
図１４に示すように、水平同期信号ＨＤがアサートすると（ステップＳ２１：図１５の時刻ｔ２参照）、補正値算出回路５２は、初期化処理を開始する（ステップＳ２２）。初期化処理では、補正値算出回路５２は、補正係数Ｖ１が補正係数ＲＤ１として読み出された後のクロック信号ＣＬＫの立ち上がりエッジに応答して、補正係数Ｖ１を保持部６１Ａ〜６１Ｅに保持する（時刻ｔ４参照）。このため、補正係数Ｖ１が補正係数ＲＤＰ１〜ＲＤＰ５として出力される。
【０１００】
続いて、補正値算出回路５２は、次のクロック信号ＣＬＫの立ち上がりエッジ（時刻ｔ５参照）に応答して、直前の保持部６１Ｂ〜６１Ｅから出力されていた補正係数Ｖ１を保持部６１Ａ〜６１Ｄに保持するとともに、補正係数ＲＤ１として読み出された補正係数Ｖ２を保持部６１Ｅに保持する。次いで、補正値算出回路５２は、次のクロック信号ＣＬＫの立ち上がりエッジ（時刻ｔ６参照）に応答して、直前の保持部６１Ｂ〜６１Ｄから出力されていた補正係数Ｖ１を保持部６１Ａ〜６１Ｃに保持し、直前の保持部６１Ｅから出力されていた補正係数Ｖ２を保持部６１Ｄに保持する。さらに、上記立ち上がりエッジに応答して、補正係数ＲＤ１として読み出された補正係数Ｖ３を保持部６１Ｅに保持する。このように、補正値算出回路５２は、初期化処理の後に、直前の保持部６１Ｂ〜６１Ｅから出力されていた補正係数を後段の保持部６１Ａ〜６１Ｄに保持するシフト処理と、新たに補正係数ＲＤ１として読み出された補正係数を保持部６１Ｅに保持する処理とを２回行う前処理を実施する（ステップＳ２３）。この前処理により、補正係数Ｖ１が補正係数ＲＤＰ１〜ＲＤＰ３として出力され、補正係数Ｖ２，Ｖ３が補正係数ＲＤＰ４，ＲＤＰ５としてそれぞれ出力される。
【０１０１】
次に、補正値算出回路５２は、補正係数ＲＤＰ１〜ＲＤＰ５に基づいて、上記式（３），（４）から補正値ＣＲａを算出し、その補正値ＣＲａをＦＦ回路６６に保持する（ステップＳ２４）。すなわち、補正値算出回路５２は、補正係数Ｖ１，Ｖ１，Ｖ１，Ｖ２，Ｖ３に基づいて、補正係数Ｖ１に対する補正値Ｃｒ１を算出する（時刻ｔ７参照）。なお、ステップＳ２４では、補正係数Ｖ７，Ｖ７，Ｖ７，Ｖ８，Ｖ９に基づいて、補正係数Ｖ７に対する補正値ＣＲｂが算出され、その補正値ＣＲｂがＦＦ回路６７に保持される。
【０１０２】
続いて、補正値算出回路５２は、時刻ｔ７におけるクロック信号ＣＬＫの立ち上がりエッジに応答して、補正係数ＲＤＰ２〜ＲＤＰ５のシフト処理と、新たに補正係数ＲＤ１として読み出された補正係数Ｖ４を保持部６１Ｅに保持する処理とを実施する（ステップＳ２５）。
【０１０３】
次いで、補正値算出回路５２は、次のクロック信号ＣＬＫの立ち上がりエッジ（時刻ｔ８参照）に応答して、直前のＦＦ回路６５から出力されている補正値ＣＲ２（ここでは、補正係数Ｖ１に対する補正値Ｃｒ１）をＦＦ回路６６に保持する（ステップＳ２６）。このステップＳ２６では、直前のＦＦ回路６７から出力されている補正値ＣＲ４（ここでは、補正係数Ｖ７に対する補正値ＣＲｂ）がＦＦ回路６８に保持される。また、上記時刻ｔ８におけるクロック信号ＣＬＫの立ち上がりエッジに応答して、補正値算出回路５２は、補正係数Ｖ１，Ｖ１，Ｖ２，Ｖ３，Ｖ４に基づいて、補正係数Ｖ２に対する補正値Ｃｒ２を算出し、その補正値Ｃｒ２をＦＦ回路６５に保持する（ステップＳ２７）。このステップＳ２７では、補正係数Ｖ７，Ｖ７，Ｖ８，Ｖ９，Ｖ１０に基づいて、補正係数Ｖ８に対する補正値ＣＲｂが算出され、その補正値ＣＲｂがＦＦ回路６７に保持される。
【０１０４】
以上説明した処理により、補正係数Ｖ１に対する補正値Ｃｒ１がＦＦ回路６６から補正値ＣＲ１として出力され、補正係数Ｖ２に対する補正値Ｃｒ２がＦＦ回路６５から補正値ＣＲ２として出力される。また、補正係数Ｖ７に対する補正値ＣＲｂがＦＦ回路６８から補正値ＣＲ３として出力され、補正係数Ｖ８に対する補正値ＣＲｂがＦＦ回路６７から補正値ＣＲ４として出力される。
【０１０５】
なお、上記初期化処理及び前処理は、以下の理由から実施される。詳述すると、各ラインデータの先頭のブロックＭＢでは、その先頭のブロックＭＢに対応する補正係数、つまり補正対象となる補正係数ＲＤＰ３（ここでは、補正係数Ｖ１）よりも前の補正係数が存在しない。そこで、本例では、存在しない前の補正係数ＲＤＰ１，ＲＤＰ２を、各ラインデータの先頭のブロックＭＢに対応する補正係数（ここでは、補正係数Ｖ１）で置き換えるようにした。そして、この置き換えを行うために、初期化処理及び前処理を実施するようにした。
【０１０６】
また、以上説明したように、補正係数Ｖ１，Ｖ２に対する補正値Ｃｒ１，Ｃｒ２を算出する処理では、４つの補正係数Ｖ１，Ｖ２，Ｖ３，Ｖ４が必要となる。このため、各ラインデータの先頭における処理では、４つの補正係数ＲＤ１（ここでは、補正係数Ｖ１，Ｖ２，Ｖ３，Ｖ４）を連続して読み出している（時刻ｔ３〜ｔ７参照）。
【０１０７】
次に、時刻ｔ９におけるクロック信号ＣＬＫの立ち上がりエッジに応答して、保持部５３Ａ〜５３Ｄに補正係数Ｖ１，Ｖ２，Ｖ７，Ｖ８がそれぞれ保持される（図中の補正係数ＲＣ１〜ＲＣ４参照）。続いて、線形補間回路５３は、補正係数Ｖ１に補正値Ｃｒ１を加算して補正後係数ＰＡ１（ここでは、補正後係数ＶＣ１）を算出し、補正係数Ｖ２に補正値Ｃｒ２を加算して補正後係数ＰＡ２（ここでは、補正後係数ＶＣ２）を算出する。また、線形補間回路５３は、補正係数Ｖ７にその補正係数Ｖ７に対する補正値ＣＲｂを加算して補正後係数ＰＡ３（ここでは、補正後係数ＶＣ３）を算出し、補正係数Ｖ８にその補正係数Ｖ８に対する補正値ＣＲｂを加算して補正後係数ＰＡ４（ここでは、補正後係数ＶＣ４）を算出する。
【０１０８】
次いで、線形補間回路５３は、４つの補正後係数ＶＣ１〜ＶＣ４（補正後係数ＰＡ１〜ＰＡ４）を用いた線形補間演算により、画像データＧＤＰの左上の画素データＰ１に対する補正係数ＰＡ（ここでは、補正係数Ｃ１）を算出する。続いて、補正回路４９は、遅延回路４４から入力する画素データＰ１に補正係数Ｃ１を乗算することにより、シェーディング補正後の画素データＯ１を生成する。このとき、出力イネーブル信号ＯＵＴＥＮがＨレベルであるため、補正回路４９は、補正後の画素データＯ１を画像データＧＤｃとして出力する。なお、本例における遅延回路４４は、画像データＧＤを９クロック分だけ遅延させて、画像データＧＤｄとして補正回路４９に出力する。
【０１０９】
以後も同様に、画像データＧＤの左上のブロックＭＢ内の画素データＰ２〜Ｐ８に対する補正係数Ｃ２〜Ｃ８（補正係数ＰＡ）が、補正後係数ＶＣ１，ＶＣ２，ＶＣ７，ＶＣ８を用いた線形補間演算により算出される。そして、それら補正係数Ｃ２〜Ｃ８により画素データＰ２〜Ｐ８がシェーディング補正される。
【０１１０】
一方、図１４に示したステップＳ２８において、補正値算出回路５２は、ブロックＭＢ毎の更新タイミングが到来したか否かを判定する。例えば、補正値算出回路５２は、水平カウント値ＨＣＴが水平線形補間間隔ＳＵＢＨの倍数に所定画素数（ここでは、３）を加算した値と等しいか否かを判定する、つまりＨＣＴ＝ＳＵＢＨ×Ｙ（Ｙは１以上の整数）＋３の関係式を満たすか否かを判定する。このとき、上記関係式を満たさない場合には、補正値算出回路５２は、１ラインの補正値算出処理が終了したか否かを判定し（ステップＳ２９）、１ラインの補正値算出処理が終了していない場合にはステップＳ２８に戻る。すなわち、上記関係式を満たすまで、又は１ラインの補正値算出処理が終了するまで、ステップＳ２８とステップＳ２９とが繰り返される。
【０１１１】
続いて、時刻ｔ１０において、水平カウント値ＨＣＴが「１１」となって上記関係式が満たされると、ステップＳ２５に戻り、ステップＳ２５〜Ｓ２７の処理が実行される。すなわち、補正係数Ｖ３に対する補正値Ｃｒ３を算出する処理が開始される。
【０１１２】
次いで、水平カウント値ＨＣＴが「１２」になると、ＨＣＴ＝ＳＵＢＨ×Ｙ＋４という関係式が満たされるため、リードイネーブル信号ＲＤＥＮがＨレベルに遷移する。その後、リードイネーブル信号ＲＤＥＮがＨレベルである期間にクロック信号ＣＬＫが立ち上がると（時刻ｔ１１参照）、「５」のリードアドレス信号ＲＡＤに応じた２つの補正係数Ｖ５，Ｖ１１がそれぞれ補正係数ＲＤ１，ＲＤ２として内部メモリ４３から読み出される。このとき、水平カウント値ＨＣＴが「１２」であり、上記式（１），（２）を共に満たすため、リードアドレス信号ＲＡＤが「６」にカウントアップされる。
【０１１３】
続いて、補正値算出回路５２は、次のクロック信号ＣＬＫの立ち上がりエッジに応答して、直前の保持部６１Ｂ〜６１Ｅから出力されていた補正係数Ｖ１〜Ｖ４を保持部６１Ａ〜６１Ｄに保持するとともに、補正係数Ｖ５を保持部６１Ｅに保持する（ステップＳ２５）。次いで、補正値算出回路５２は、次のクロック信号ＣＬＫの立ち上がりエッジ（時刻ｔ１２参照）に応答して、直前のＦＦ回路６５から出力されている補正値ＣＲ２（ここでは、補正係数Ｖ２に対する補正値Ｃｒ２）をＦＦ回路６６に保持する（ステップＳ２６）。また、補正値算出回路５２は、補正係数Ｖ１〜Ｖ５に基づいて、補正係数Ｖ３に対する補正値Ｃｒ３を算出し、その補正値Ｃｒ３をＦＦ回路６５に保持する（ステップＳ２７）。これにより、補正係数Ｖ２に対する補正値Ｃｒ２が補正値ＣＲ１として出力され、補正係数Ｖ３に対する補正値Ｃｒ３が補正値ＣＲ２として出力される。
【０１１４】
また、線形補間回路５３は、上記時刻ｔ１２におけるクロック信号ＣＬＫの立ち上がりエッジに応答して、直前の保持部５３Ｂから出力されていた補正係数ＲＣ２（ここでは、補正係数Ｖ２）を保持部５３Ａに保持するとともに、新たに入力される補正係数ＲＤＰ３（ここでは、補正係数Ｖ３）を保持部５３Ｂに保持する。同様に、線形補間回路５３は、直前の保持部５３Ｄから出力されていた補正係数ＲＣ４（ここでは、補正係数Ｖ８）を保持部５３Ｃに保持するとともに、新たに入力される補正係数ＲＤＱ３（ここでは、補正係数Ｖ９）を保持部５３Ｄに保持する。
【０１１５】
続いて、線形補間回路５３は、補正係数Ｖ２に補正値Ｃｒ２を加算して補正後係数ＶＣ２を生成し、補正係数Ｖ３に補正値Ｃｒ３を加算して補正後係数ＶＣ３を生成する。また、線形補間回路５３は、補正係数Ｖ８，Ｖ９にそれらに対応する補正値ＣＲ３，ＣＲ４を加算して補正後係数ＶＣ８，ＶＣ９を生成する。
【０１１６】
続いて、時刻ｔ１３におけるクロック信号ＣＬＫの立ち上がりエッジに応答して、補正後係数ＶＣ２，ＶＣ３，ＶＣ８，ＶＣ９を用いた線形補間演算により、画素データＰ９に対する補正係数Ｃ９を算出する。以後も同様に、上記先頭のブロックの右隣のブロック（図１２（ｂ）において補正係数Ｖ２が配置されたブロック）内の画素データＰ１０〜Ｐ１６に対する補正係数Ｃ１０〜Ｃ１６が、補正後係数ＶＣ２，ＶＣ３，ＶＣ８，ＶＣ９を用いた線形補間演算により算出される。
【０１１７】
以上説明したように、各ラインデータの２番目以降のブロックＭＢに対するシェーディング補正処理では、直前のブロックＭＢに対する処理時に使用された補正係数ＲＣ２，ＲＣ４及び補正値ＣＲ２，ＣＲ４が補正係数ＲＣ１，ＲＣ３及び補正値ＣＲ１，ＣＲ３としてそれぞれ利用される。このため、各ラインデータの２番目以降のブロックＭＢに対するシェーディング補正処理では、２点の補正係数ＲＤ１，ＲＤ２のみが読み出される。
【０１１８】
以後も同様に、ブロックＭＢ毎に補正後係数ＰＡ１〜ＰＡ４が算出され、それら補正後係数ＰＡ１〜ＰＡ４に基づいてブロックＭＢ内の各画素データＧＰに対する補正係数ＰＡが算出される。そして、補正係数ＰＡによりブロックＭＢ内の各画素データＧＰがシェーディング補正される。
【０１１９】
その後、時刻ｔ１４の後に、水平カウント値ＨＣＴが「２０」となって、ＨＣＴ＝ＳＵＢＨ×Ｙ＋４の関係式が満たされると、リードイネーブル信号ＲＤＥＮがＨレベルに遷移する。このリードイネーブル信号ＲＤＥＮがＨレベルである期間にクロック信号ＣＬＫが立ち上がると、「６」のリードアドレス信号ＲＡＤに応じた２つの補正係数Ｖ６，Ｖ１２がそれぞれ補正係数ＲＤ１，ＲＤ２として内部メモリ４３から読み出される。このとき、水平カウント値ＨＣＴが「２０」であり、上記式（１）は満たすが、上記式（２）を満たさないため、リードアドレス信号ＲＡＤはインクリメントされずに「６」のまま維持される。
【０１２０】
続いて、図１６に示す時刻ｔ１５において、リードイネーブル信号ＲＤＥＮがＨレベルに遷移すると、「６」のリードアドレス信号ＲＡＤに応じた２つの補正係数Ｖ６，Ｖ１２が再度読み出される。すると、補正係数Ｖ５に対する補正値Ｃｒ５が、５つの補正係数Ｖ３，Ｖ４，Ｖ５，Ｖ６，Ｖ６（補正係数ＲＤＰ１〜ＲＤＰ５）を用いた上記式（３），（４）により算出される。
【０１２１】
このように各ラインの最後の補正係数（ここでは、補正係数Ｖ６）よりも後の補正係数が存在しない場合には、各ラインの先頭のブロックＭＢに対する処理と同様に、その存在しない補正係数（ここでは、補正係数ＲＤＰ５）を、各ラインの最後の補正係数（ここでは、補正係数Ｖ６）で置き換えるようにした。このため、その後もリードアドレス信号ＲＡＤが「６」に維持され、リードイネーブル信号ＲＤＥＮがＨレベルに遷移する度に、補正係数Ｖ６，Ｖ１２が再度読み出される。
【０１２２】
これにより、図１７の時刻ｔ１６に示すように、補正係数Ｖ６に対する補正値Ｃｒ６が、５つの補正係数Ｖ４，Ｖ５，Ｖ６，Ｖ６，Ｖ６を用いた上記式（３），（４）により算出される。
【０１２３】
その後、時刻ｔ１７において水平カウント値ＨＣＴが「４８」となって、終了信号ＨＷＩが１ラインの処理終了を示すＬレベルに遷移する（図１４に示したステップＳ２９でＹＥＳ）。すると、リードアドレス信号ＲＡＤが初期値である「１」にリセットされる。また、図１４に示したステップＳ３０において、１フレームの画像データＧＤに対する補正値算出処理が終了したか否かが判定される。このとき、１フレームの画像データＧＤＰに対する補正値算出処理が終了していない場合には、ステップＳ２１に戻り、水平同期信号ＨＤがアサインされるまで待つ。
【０１２４】
続いて、時刻ｔ１８において、水平同期信号ＨＤがアサインされ、ラインデータＬ２の処理が開始されると、垂直カウント値ＶＣＴが「２」にカウントアップされ、水平カウント値ＨＣＴが「１」にリセットされる。また、ラインデータＬ２の処理開始時には、４つの補正係数Ｖ１，Ｖ２，Ｖ３，Ｖ４が連続して読み出されるとともに、４つの補正係数Ｖ７，Ｖ８，Ｖ９，Ｖ１０が連続して読み出される。そして、ラインデータＬ１における処理と同様に、ブロックＭＢ毎に補正後係数ＰＡ１〜ＰＡ４が算出され、それら補正後係数ＰＡ１〜ＰＡ４に基づいてブロックＭＢ内の各画素データＧＰに対する補正係数ＰＡが算出される。そして、補正係数ＰＡによりブロックＭＢ内の各画素データＧＰがシェーディング補正される。
【０１２５】
なお、補正値算出回路５２における補正値算出処理では、１フレームの画像データＧＤに対する補正値算出処理が終了するまで、図１４に示したステップＳ２１〜Ｓ３０が繰り返し実行される。また、図示は省略するが、垂直カウント値ＶＣＴが「９」となって、ＶＣＴ＝ＳＵＢＶ×Ｙ＋１という関係式が満たされると、アドレス信号ＡＤＤＲがインクリメントされ、次の２ライン分の補正係数ＲＣ（例えば、補正係数Ｖ７〜Ｖ１８）が補正係数テーブル１４ａから読み出される。すなわち、垂直線形補間間隔ＳＵＢＶ毎に、内部メモリ４３に格納された補正係数ＲＣが更新される。
【０１２６】
なお、以上説明した処理では、画像データＧＤＰが単色の画像である場合を想定しているが、図３（ｂ）に示すように画像データＧＤＰが複数の色情報を持つカラー画像であっても、その画像データＧＤＰに対して同様にシェーディング補正処理を施すことができる。この場合のメモリ１４には、複数の色情報毎に異なる補正係数ＲＣが格納されている。すなわち、メモリ１４には、Ｒ成分の色情報を持つ画素データＧＰに対する補正係数ＲＣと、Ｇｒ成分の色情報を持つ画素データＧＰに対する補正係数ＲＣと、Ｂ成分の色情報を持つ画素データＧＰに対する補正係数ＲＣと、Ｇｂ成分の色情報を持つ画素データＧＰに対する補正係数ＲＣとが個別に格納されている。
【０１２７】
以上説明した本実施形態によれば、以下の効果を奏することができる。
（１）補正対象の画素データＧＰｃの近傍の４点の補正係数ＲＣ１〜ＲＣ４を補正値ＣＲ１〜ＣＲ４によりそれぞれ補正して補正後係数ＰＡ１〜ＰＡ４を生成するようにした。そして、それら４点の補正後係数ＰＡ１〜ＰＡ４に基づいて、線形補間により画素データＧＰｃに対する補正係数ＰＡを算出するようにした。また、補正値ＣＲ１を、補正対象の補正係数ＲＣ１と、その補正係数ＲＣ１の水平方向における前後２つずつの補正係数ＲＣとの大小関係に基づいて算出するようにした。なお、補正値ＣＲ２〜ＣＲ４についても補正値ＣＲ１と同様に算出するようにした。このように算出された補正値ＣＲ１〜ＣＲ４により補正係数ＲＣ１〜ＲＣ４を補正することで、補正係数ＲＣ１〜ＲＣ４の前後における補正特性の傾向（増加傾向や減少傾向等）を補正後係数ＰＡ１〜ＰＡ４に反映させることができる。このため、補正後係数ＰＡ１〜ＰＡ４による補正特性ＳＰ３（図６の実線参照）は、補正特性ＳＰ２（図５（ｂ）の実線参照）よりも理想の補正特性ＳＰ１（図６の破線曲線参照）に近づき、補正特性ＳＰ２よりも滑らかな特性となる。すなわち、曲線である補正特性ＳＰ１における補正係数の変化に近づくように、補正値ＣＲにより補正係数ＲＣが補正される。これにより、補正係数ＲＣに比べて、補正後係数ＰＡ１〜ＰＡ４のビット精度を擬似的に向上させることができる。したがって、その補正後係数ＰＡ１〜ＰＡ４を用いて画像データＧＤＰに対してシェーディング補正することにより、画像データＧＤＰに対して違和感の少ない画像補正を行うことができ、シェーディング補正の補正精度を向上させることができる。
【０１２８】
（２）また、メモリ１４の補正係数テーブル１４ａには、画像データＧＤＰから所定数の画素データＧＰを間引いた後の画素データＧＰに対する補正係数ＲＣのみを格納するようにした。このため、画像データＧＤＰの各画素データＧＰに対して補正係数を用意する場合に比べて、補正係数ＲＣのデータ量を減らすことができる。これにより、メモリ１４の大容量化を抑制することができる。さらに、メモリ１４から読み出す補正係数ＲＣのデータ量を減らすことができるため、補正係数ＲＣの読み出し処理に費やすメモリ帯域を減らすことができる。
【０１２９】
（３）上述したように、補正値ＣＲにより補正係数ＲＣを補正することにより、補正後係数ＰＡ１〜ＰＡ４のビット精度を擬似的に向上させることができる。このため、高い補正精度を維持しながら、補正係数ＲＣのビット精度を下げることができる。これにより、補正係数ＲＣの読み出し処理に費やすメモリ帯域をより減らすことができる。
【０１３０】
（４）上記式（３）により算出された判定値Ｈ１に対して、補正対象の補正係数ＲＣのビット精度の１／２となる係数Ｄを乗算して補正値ＣＲを算出するようにした。この係数Ｄを乗算することにより、補正後係数ＰＡ１〜ＰＡ４をビット精度の範囲から逸脱しない値に制限することができる。
【０１３１】
（他の実施形態）
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記実施形態では、画像データＧＤＰの水平方向における先頭のブロックＭＢに対応する補正係数ＲＣ（例えば、補正係数Ｖ１）が補正対象である場合には、補正係数ＲＤＰ１（第２係数値）と補正係数ＲＤＰ２（第１係数値）を補正対象の補正係数ＲＣで置き換えて、補正値ＣＲを算出するようにした。これに限らず、例えば、補正係数ＲＤＰ１，ＲＤＰ２を省略して、補正対象の補正係数ＲＣ（補正係数ＲＤＰ３）と、補正係数ＲＤＰ４，ＲＤＰ５との大小関係に基づいて補正値ＣＲを算出するようにしてもよい。
【０１３２】
・上記実施形態では、画像データＧＤＰの水平方向における最後のブロックＭＢに対応する補正係数ＲＣ（例えば、補正係数Ｖ６）が補正対象である場合には、補正係数ＲＤＰ４（第３係数値）と補正係数ＲＤＰ５（第４係数値）を補正対象の補正係数ＲＣで置き換えて、補正値ＣＲを算出するようにした。これに限らず、例えば、補正係数ＲＤＰ４，ＲＤＰ５を省略して、補正対象の補正係数ＲＣ（補正係数ＲＤＰ３）と、補正係数ＲＤＰ１，ＲＤＰ２との大小関係に基づいて補正値ＣＲを算出するようにしてもよい。
【０１３３】
・上記実施形態では、補正値ＣＲを算出する際に、比較対象の係数値として４個の補正係数ＲＤＰ１，ＲＤＰ２，ＲＤＰ４，ＲＤＰ５（又は、補正係数ＲＤＱ１，ＲＤＱ２，ＲＤＱ４，ＲＤＱ５）を使用するようにした。この比較対象の係数値の数は特に限定されない。例えば、比較対象の係数値を２個としてもよい。この場合には、例えば、上記実施形態における補正係数ＲＤＰ１，ＲＤＰ５（又は、補正係数ＲＤＱ１，ＲＤＱ５）を省略し、補正対象の補正係数ＲＤＰ３と、その補正係数ＲＤＰ３の水平方向における前後の補正係数ＲＤＰ２，ＲＤＰ３との大小関係に基づいて補正値ＣＲを算出する。また、例えば、比較対象の係数値を６個としてもよい。この場合には、例えば、補正対象の補正係数ＲＣと、補正対象の補正係数ＲＣの水平方向の前後３つずつの合計６個の補正係数ＲＣとの大小関係に基づいて補正値ＣＲを算出する。
【０１３４】
・上記実施形態では、垂直線形補間間隔ＳＵＢＶと水平線形補間間隔ＳＵＢＨとによって規定されるブロックＭＢのサイズは特に限定されない。すなわち、垂直線形補間間隔ＳＵＢＶ及び水平線形補間間隔ＳＵＢＨは、任意の値に設定可能である。但し、垂直線形補間間隔ＳＵＢＶ及び水平線形補間間隔ＳＵＢＨの少なくとも一方は、「２」以上の値に設定される。
【０１３５】
例えば、垂直線形補間間隔ＳＵＢＶと水平線形補間間隔ＳＵＢＨとを異なる値に設定するようにしてもよい。例えば、垂直線形補間間隔ＳＵＢＶを「１」に設定し、水平線形補間間隔ＳＵＢＨを「８」に設定してもよい。この場合に、補正後係数ＰＡ３，ＰＡ４を省略し、補正後係数ＰＡ１，ＰＡ２のみを用いた線形補間により補正係数ＰＡを算出するようにしてもよい。すなわち、この場合には、補正係数ＲＣ３，ＲＣ４の読み出し処理、及び補正値ＣＲ３，ＣＲ４の算出処理が省略される。
【０１３６】
・上記実施形態では、画像データＧＤＰに対する補正処理としてシェーディング補正処理に具体化した。これに限らず、例えば、シェーディング補正処理以外の補正処理に適用してもよい。
【符号の説明】
【０１３７】
１  撮像装置
１１  撮像部
１２  画像処理プロセッサ（画像処理装置）
１４  メモリ（記憶部）
２１  撮像光学系
２２  撮像素子部
４２  内部メモリ制御回路
４３  内部メモリ
４７  補正係数演算回路
４９  補正回路
５１  読み出し回路
５２  補正値算出回路
５３  線形補間回路
ＲＣ，ＲＣ１〜ＲＣ４  補正係数（係数値）
ＲＤＰ１〜ＲＤＰ５，ＲＤＱ１〜ＲＤＱ５  補正係数（係数値）
ＧＤＰ，ＧＤｃ，ＧＤｄ  画像データ
ＧＰ，ＧＰｃ  画素データ
ＭＢ，ＭＢ１〜ＭＢ４，ＭＢＣ１〜ＭＢＣ５  ブロック
ＰＡ１〜ＰＡ４  補正後係数
ＰＡ  補正係数
【図１】
0006318894.tif 000003
【図２】
0006318894.tif 000004
【図３】
0006318894.tif 000005
【図４】
0006318894.tif 000006
【図５】
0006318894.tif 000007
【図６】
0006318894.tif 000008
【図７】
0006318894.tif 000009
【図８】
0006318894.tif 000010
【図９】
0006318894.tif 000011
【図１０】
0006318894.tif 000012
【図１１】
0006318894.tif 000013
【図１２】
0006318894.tif 000014
【図１３】
0006318894.tif 000015
【図１４】
0006318894.tif 000016
【図１５】
0006318894.tif 000017
【図１６】
0006318894.tif 000018
【図１７】
0006318894.tif 000019