(57)【要約】【課題】バッファの管理を容易にすることができるようにする。【解決手段】メモリ１９に格納された画像データは、バス２４を介して水平歪補正部５１にラスタ入力され、水平歪補正部５１によって水平歪補正処理が施され、垂直歪補正部５２によって垂直歪補正処理が施され、バッファ５３に格納される。バッファ５３においては、歪補正処理が施された画像データにおける横方向の幅がバス出力単位の１以上の整数倍となるように複数のブロックに分割され、各ブロックの縦サイズが、歪補正処理が施された画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされており、バス出力単位の１以上の整数倍分溜まったとき、その溜まった分の画像データを出力することで、バッファの管理を容易にすることができる。本発明はデジタルスチルカメラに適用することができる。【選択図】図４
2010028758.tif 000002
【特許請求の範囲】
【請求項１】
画像全体又は画像の一部に対応する画像データに対し、所定の画像処理を行う第１の画像処理手段と、
前記画像処理が施された前記画像データを一時的に格納し、後段の処理を行う装置に接続されたバスに順次出力するバッファと
を備え、
前記バッファは、
前記画像処理が施された前記画像データにおける横方向の幅が複数のブロックに分割され、
各ブロックの縦サイズが、前記画像処理が施された前記画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされており、
前記画像処理が施された前記画像データの走査方向に前記バスの最小転送単位の１以上の整数倍分溜まったとき、その溜まった分の前記画像データを前記バスへ出力する
画像処理装置。
【請求項２】
前記複数のブロックは、前記横方向の幅が前記バスの最小転送単位の１以上の整数倍となるように分割される
請求項１に記載の画像処理装置。
【請求項３】
前記バッファにおいて、各ブロック内は、ライン単位でのリングバッファの構成となっている
請求項１に記載の画像処理装置。
【請求項４】
前記各ブロック毎に、ブロックの縦サイズが異なる
請求項１に記載の画像処理装置。
【請求項５】
前記各ブロック毎に、ブロックの横サイズが異なる
請求項１に記載の画像処理装置。
【請求項６】
前記第１の画像処理手段は、前記画像処理として、レンズに起因する歪を有する画像データに含まれる前記歪を補正する処理を行う
請求項１に記載の画像処理装置。
【請求項７】
前記第１の画像処理手段は、前記画像処理として、レンズに起因する色収差を有する画像データに含まれる前記色収差を補正する処理を行う
請求項１に記載の画像処理装置。
【請求項８】
前記バッファは、前記複数のブロックに分割された状態と、分割されていない１つのブロックの状態とで切り替え可能である
請求項１に記載の画像処理装置。
【請求項９】
画像全体又は画像の一部に対応する画像データに対し、所定の画像処理を行う第２の画像処理手段をさらに備え、
前記バスでの転送先が前記バッファの前記バスへの出力と異なる順序の入力を要求する前記第２の画像処理手段である場合、前記バッファは、前記分割されていない１つのブロックの状態となる
請求項８に記載の画像処理装置。
【請求項１０】
前記バッファは、
前記第１の画像処理手段からの入力を受ける第１のバッファと、
前記第１のバッファの出力を受け、前記バスへ出力する第２のバッファと
から構成され、
前記第１のバッファの入力単位は、第２のバッファの入力単位よりも小さくなる
請求項１に記載の画像処理装置。
【請求項１１】
画像全体又は画像の一部に対応する画像データに対し、所定の画像処理を行う画像処理手段と、画像処理が施された前記画像データを一時的に格納し、後段の処理を行う装置に接続されたバスに順次出力するバッファとを備える画像処理装置の画像処理方法において、
前記バッファは、前記画像処理が施された前記画像データにおける横方向の幅が複数のブロックに分割され、
各ブロックの縦サイズが、前記画像処理が施された前記画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされており、
前記画像処理が施された前記画像データの走査方向に前記バスの最小転送単位の１以上の整数倍分溜まったとき、その溜まった分の前記画像データを前記バスへ出力するように、前記画像データの書き込みと読み出しを制御する
ステップを含む画像処理方法。
【請求項１２】
画像全体又は画像の一部に対応する画像データに対し、所定の画像処理を行う画像処理手段と、画像処理が施された前記画像データを一時的に格納し、後段の処理を行う装置に接続されたバスに順次出力するバッファとを備える機器を制御するコンピュータに実行させるプログラムであって、
前記バッファは、前記画像処理が施された前記画像データにおける横方向の幅が複数のブロックに分割され、
各ブロックの縦サイズが、前記画像処理が施された前記画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされており、
前記画像処理が施された前記画像データの走査方向に前記バスの最小転送単位の１以上の整数倍分溜まったとき、その溜まった分の前記画像データを前記バスへ出力するように、前記画像データの書き込みと読み出しを制御する
ステップを含むプログラム。
【請求項１３】
被写体を撮像する撮像手段と、
撮像された画像全体又は画像の一部に対応する画像データに対し、所定の画像処理を行う第１の画像処理手段と、
前記画像処理が施された前記画像データを一時的に格納し、後段の処理を行う装置に接続されたバスに順次出力するバッファと
を備え、
前記バッファは、
前記画像処理が施された前記画像データにおける横方向の幅が複数のブロックに分割され、
各ブロックの縦サイズが、前記画像処理が施された前記画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされており、
前記画像処理が施された前記画像データの走査方向に前記バスの最小転送単位の１以上の整数倍分溜まったとき、その溜まった分の前記画像データを前記バスへ出力する
撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び方法、プログラム、並びに撮像装置に関し、特に、画像処理の効率を上げることができるようにした画像処理装置及び方法、プログラム、並びに撮像装置に関する。
【背景技術】
【０００２】
近年、CCD（Charge Coupled Device）センサやCMOS（Complementary Metal Oxide Semiconductor）センサ等の撮像素子によって画像を撮像する撮像装置が普及している。
【０００３】
撮像素子から取り込んだ画像は、レンズの歪などの影響により、理想的な画像から比べると収差を持っているため、通常、それを取り除くために収差の補正が行われる。
【０００４】
レンズに起因する画像の収差を補正する技術としては、たとえば、特許文献１及び２が知られている。
【特許文献１】特開２００１−１０１３９６号公報
【特許文献２】特開２００７−１８０８９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術であると、収差補正処理を実行するときのアドレスの管理に無駄が多いため、結果として、バッファの管理が複雑になるという問題があった。
【０００６】
たとえば、特許文献１に開示されている技術は、入力部にバッファを備えており、フィルタに必要となる部分や読み出しアドレスをDMAC（Direct Memory Access Controller）に設定しなければならない関係上、歪補正演算部と入力部の両方の設定アドレス計算において、同じ歪データを使用してアドレス計算をすることになるため、制御が複雑になるという問題がある。また、特許文献１の技術においては、フィルタに必要な余分なデータの保持量についても計算する必要があり、この計算をしない場合には、複数回の読み出しを行うか、あるいはメモリを余分に持つ必要が出てくる。
【０００７】
また、たとえば、特許文献２に開示されている技術では、入力アドレスを出力基準で設定する関係上、歪補正演算部と入力部の両方で歪アドレスが必要となるため、制御が複雑になるという問題がある。また、特許文献２の技術においては、入力部にバッファを備えており、フィルタに必要となる余分なデータの保持量を計算する必要があるため、この計算をしない場合には、複数回の読み出しを行うか、あるいはメモリを余分に持たなければならない。
【０００８】
本発明はこのような状況に鑑みてなされたものであり、バッファの管理を容易にすることができるようにするものである。
【課題を解決するための手段】
【０００９】
本発明の第１の側面の画像処理装置は、画像全体又は画像の一部に対応する画像データに対し、所定の画像処理を行う第１の画像処理手段と、前記画像処理が施された前記画像データを一時的に格納し、後段の処理を行う装置に接続されたバスに順次出力するバッファとを備え、前記バッファは、前記画像処理が施された前記画像データにおける横方向の幅が複数のブロックに分割され、各ブロックの縦サイズが、前記画像処理が施された前記画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされており、前記画像処理が施された前記画像データの走査方向に前記バスの最小転送単位の１以上の整数倍分溜まったとき、その溜まった分の前記画像データを前記バスへ出力する。
【００１０】
前記複数のブロックは、前記横方向の幅が前記バスの最小転送単位の１以上の整数倍となるように分割される。
【００１１】
前記バッファにおいて、各ブロック内は、ライン単位でのリングバッファの構成となっている。
【００１２】
前記各ブロック毎に、ブロックの縦サイズが異なる。
【００１３】
前記各ブロック毎に、ブロックの横サイズが異なる。
【００１４】
前記第１の画像処理手段は、前記画像処理として、レンズに起因する歪を有する画像データに含まれる前記歪を補正する処理を行う。
【００１５】
前記第１の画像処理手段は、前記画像処理として、レンズに起因する色収差を有する画像データに含まれる前記色収差を補正する処理を行う。
【００１６】
前記バッファは、前記複数のブロックに分割された状態と、分割されていない１つのブロックの状態とで切り替え可能である。
【００１７】
画像全体又は画像の一部に対応する画像データに対し、所定の画像処理を行う第２の画像処理手段をさらに備え、前記バスでの転送先が前記バッファの前記バスへの出力と異なる順序の入力を要求する前記第２の画像処理手段である場合、前記バッファは、前記分割されていない１つのブロックの状態となる。
【００１８】
前記バッファは、前記第１の画像処理手段からの入力を受ける第１のバッファと、前記第１のバッファの出力を受け、前記バスへ出力する第２のバッファとから構成され、前記第１のバッファの入力単位は、第２のバッファの入力単位よりも小さくなる。
【００１９】
本発明の第１の側面の画像処理方法は、画像全体又は画像の一部に対応する画像データに対し、所定の画像処理を行う画像処理手段と、画像処理が施された前記画像データを一時的に格納し、後段の処理を行う装置に接続されたバスに順次出力するバッファとを備える画像処理装置の画像処理方法において、前記バッファは、前記画像処理が施された前記画像データにおける横方向の幅が複数のブロックに分割され、各ブロックの縦サイズが、前記画像処理が施された前記画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされており、前記画像処理が施された前記画像データの走査方向に前記バスの最小転送単位の１以上の整数倍分溜まったとき、その溜まった分の前記画像データを前記バスへ出力するように、前記画像データの書き込みと読み出しを制御するステップを含む。
【００２０】
本発明の第１の側面のプログラムは、上述した本発明の第１の側面の画像処理方法に対応するプログラムである。
【００２１】
本発明の第１の側面においては、画像全体又は画像の一部に対応する画像データに対し、所定の画像処理が実行され、画像処理が施された画像データが一時的に格納され、後段の処理を行う装置に接続されたバスに順次出力される。このとき、画像処理が施された画像データにおける横方向の幅が複数のブロックに分割され、各ブロックの縦サイズが、画像処理が施された画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされ、画像処理が施された画像データの走査方向にバスの最小転送単位の１以上の整数倍分溜まったとき、その溜まった分の画像データが前記バスへ出力される。
【００２２】
本発明の第２の側面の撮像装置は、被写体を撮像する撮像手段と、撮像された画像全体又は画像の一部に対応する画像データに対し、所定の画像処理を行う第１の画像処理手段と、前記画像処理が施された前記画像データを一時的に格納し、後段の処理を行う装置に接続されたバスに順次出力するバッファとを備え、前記バッファは、前記画像処理が施された前記画像データにおける横方向の幅が複数のブロックに分割され、各ブロックの縦サイズが、前記画像処理が施された前記画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされており、前記画像処理が施された前記画像データの走査方向に前記バスの最小転送単位の１以上の整数倍分溜まったとき、その溜まった分の前記画像データを前記バスへ出力する。
【００２３】
本発明の第２の側面においては、被写体が撮像され、撮像された画像全体又は画像の一部に対応する画像データに対し、所定の画像処理が実行され、画像処理が施された画像データが一時的に格納され、後段の処理を行う装置に接続されたバスに順次出力される。このとき、画像処理が施された画像データにおける横方向の幅が複数のブロックに分割され、各ブロックの縦サイズが、画像処理が施された画像データの走査方向の１ライン分の入力の各ブロック内での縦方向の最大変位量以上とされ、画像処理が施された画像データの走査方向にバスの最小転送単位の１以上の整数倍分溜まったとき、その溜まった分の画像データが前記バスへ出力される。
【発明の効果】
【００２４】
以上のように、本発明の第１の側面によれば、画像データを格納するバッファの管理を容易にすることができる。
【００２５】
また、本発明の第２の側面によれば、撮像された画像データを格納するバッファの管理を容易にすることができる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照しながら本発明の実施の形態について説明する。
【００２７】
図１は、本発明を適用した撮像装置の一実施の形態の構成を示す図である。
【００２８】
撮像装置１は、たとえば、デジタルスチルカメラやカムコーダなどの被写体を撮像する機器である。本実施の形態においては、撮像装置１として、デジタルスチルカメラを一例にして説明する。
【００２９】
図１に示すように、撮像装置１は、レンズ部１１、撮像部１２、A/D変換部１３、カメラ信号処理部１４、CPU１５、ROM１６、RAM１７、操作部１８、メモリ１９、リサイズ歪補正部２０、ディスプレイ２１、画像圧縮部２２、及びストレージ２３を含むように構成される。また、カメラ信号処理部１４ないしストレージ２３は、バス２４を介して相互に接続される。
【００３０】
撮像部１２は、たとえばCCDセンサやCMOSセンサ等の撮像素子により構成され、レンズ部１１を介して入射する被写体からの光を受光して光電変換を行い、（光の）受光量に応じた電気信号としてのアナログの画像信号を、A/D変換部１３に供給する。なお、図示はしていないが、撮像部１２から出力されるアナログ画像信号は、増幅などの所定のアナログ信号処理が施された後、A/D変換部１３に入力される。
【００３１】
A/D変換部１３は、撮像部１２から供給されるアナログの画像信号をA/D（Analog/Digital）変換し、その結果得られるデジタル信号で示される画像データを、カメラ信号処理部１４に供給する。
【００３２】
カメラ信号処理部１４は、CPU１５の制御にしたがい、A/D変換部１３からの画像データに対し、たとえば、ホワイトバランス調整、ガンマ補正、シャープネス補正等の各種補正処理、及び、RGBデータをYC信号に変換するYC変換処理といった所定のデジタル信号処理を施す。カメラ信号処理部１４により所定のデジタル信号処理が施された画像データは、メモリ１９に一旦格納される。
【００３３】
メモリ１９には、たとえば、SRAM（Static Random Access Memory）やSDRAM（Synchronous DRAM）といった大容量のメモリを一般に用いることができる。
【００３４】
リサイズ歪補正部２０は、メモリ１９に格納された補正前の画像データを読み出して、光学歪を補正し、補正後の画像データをメモリ１９に書き込む。また、リサイズ歪補正部２０は、メモリ１９に格納された画像データに対し、必要に応じてリサイズ処理を行う。なお、メモリ１９とリサイズ歪補正部２０の詳細については後述する。
【００３５】
そして、メモリ１９に格納された補正後の画像データは、ディスプレイ２１に供給されて、表示される。
【００３６】
また、画像圧縮部２２は、メモリ１９に格納された補正後の画像データを読み出して、JPEG(Joint Photographic Experts Group)方式などで圧縮し、その結果得られる圧縮画像データを、ストレージ２３に供給して記録させる。また、画像圧縮部２２は、ストレージ２３に記録された圧縮画像データを所定の方式で伸張し、その結果得られる画像データを、ディスプレイ２１に供給して表示させる。
【００３７】
ストレージ２３は、たとえば、メモリカードなどの半導体メモリや、DVD（Digital Versatile Disc）などのリムーバブル記録媒体などであり、撮像装置１に対して、容易に着脱可能となっている。
【００３８】
CPU（Central Processing Unit）１５は、ROM（Read Only Memory）１６に記録されているプログラムを実行することにより、撮像装置１を構成する各部を制御し、また操作部１８からの操作信号に応じて、各種の処理を行う。操作部１８は、ユーザによって操作され、その操作に対応した操作信号を、CPU１５に供給する。
【００３９】
ROM１６は、CPU１５が実行するプログラム、さらには、CPU１５がプログラムを実行する上で必要なデータを記憶している。RAM（Random Access Memory）１７は、CPU１５が各種の処理を行う上で必要なプログラムやデータを一時的に記憶する。
【００４０】
なお、CPU１５に実行させるプログラムは、あらかじめROM１６にインストール、すなわち記録させておく他、ストレージ２３に記録しておき、パッケージメディアとしてユーザに提供して、そのストレージ２３からROM１６に記録させ、撮像装置１にインストールすることができる。また、CPU１５に実行させるプログラムは、ダウンロードサイトから撮像装置１に直接ダウンロードし、あるいは、図示せぬコンピュータでダウンロードして、撮像装置１に供給し、ROM１６に記録させ、撮像装置１にインストールすることも可能である。
【００４１】
以上のように構成される撮像装置１においては、撮像部１２が、レンズ部１１を介して入射する被写体からの光を受光して光電変換を行い、その結果得られるアナログの画像信号を出力する。撮像部１２が出力するアナログの画像信号は、A/D変換部１３を介することにより、デジタル信号の画像データとされ、カメラ信号処理部１４に供給される。
【００４２】
カメラ信号処理部１４は、A/D変換部１３からの画像データをメモリ１９に格納させ、リサイズ歪補正部２０に歪補正させた後、ディスプレイ２１に供給し、これにより、ディスプレイ２１では、いわゆるスルー画が表示される。
【００４３】
その後、ユーザが、操作部１８の一部であるシャッタボタンを操作すると、その操作に応じた信号が、操作部１８からCPU１５に供給される。CPU１５は、操作部１８からシャッタボタンに応じた操作信号が供給されると、そのときA/D変換部１３からカメラ信号処理部１４に供給された画像データをメモリ１９に格納させ、リサイズ歪補正部２０に歪補正させた後、画像圧縮部２２に供給して圧縮させ、その結果得られる圧縮画像データを、ストレージ２３に記録させる。
【００４４】
以上のようにして、いわゆる写真撮影が行われる。
【００４５】
ところで、上述したように、撮像部１２により取り込まれた画像データは、レンズ部１１を構成している各レンズの歪などの影響によって、理想的な画像データから比べると、歪（収差）を持っているため、それを取り除く必要がある。本実施の形態においては、そのような歪を取り除くために、リサイズ歪補正部２０によって、歪を補正する処理が行われる。
【００４６】
そこで、次に、かかる歪補正処理の詳細について説明する。
【００４７】
なお、本実施の形態のリサイズ歪補正部２０で実行される歪補正処理と、従来から行われている歪補正処理との違いを分かり易く説明するために、はじめに、図２及び図３を参照して、従来からの歪補正処理を説明し、その後、図４以降の図面を参照して、本実施の形態のリサイズ歪補正部２０で実行される歪補正処理について説明する。
【００４８】
図２は、従来の歪補正処理を説明するための図である。
【００４９】
従来の撮像装置において、メモリ３１には、カメラ信号処理部（図示せず）によって所定のデジタル信号処理が施された被写体の画像データが一旦格納される。リサイズ歪補正部３２は、メモリ３１に格納された補正前の画像データを読み出して歪を補正し、補正後の画像データをメモリ３１に書き込む。
【００５０】
具体的には、図２に示すように、リサイズ歪補正部３２において、メモリからラスタ入力された画像データは、水平歪補正部４１によって、水平方向に歪補正された後、内部のバッファ４３にラスタ走査順で書き込まれる。その後、バッファ４３に格納された画像データは、垂直歪補正部４２によって、垂直歪補正後にラスタとなるように歪に合わせて読み出され、垂直歪補正が行われる。そして、水平歪補正と垂直歪補正が施された画像データは、ラスタ走査順にメモリ３１に出力される。
【００５１】
この場合におけるバッファ４３のサイズであるが、画像の拡大縮小がなければ、横方向は出力横サイズとなり、縦方向は出力１ラインの垂直最大歪量となる。たとえば、水平方向対し、最大10％の垂直方向の歪がある場合には、横1920ピクセル、縦192ピクセル（1920ピクセル×10％）となるので、１ピクセル当たり16ビット必要であるとすると、バッファ量としては、1920×192×16ビット＝5760ｋビットが必要となる。
【００５２】
また、図３は、従来の撮像装置において、水平歪補正部４１による水平歪補正と、垂直歪補正部４２による垂直歪補正が施された画像データを、バッファ４３に格納して、ラスタ出力する構成を示すものである。この場合においても、垂直歪補正によって、ラスタ入力された画像データを歪に合わせて出力するため、画像の拡大縮小がなければ、上記の図２の場合と同様のバッファサイズが必要となる。
【００５３】
すなわち、図３の構成においても、バッファ４３のサイズは、横方向が出力横サイズで、縦方向が出力１ラインの垂直最大歪量となるので、たとえば、図２の場合と同様に、水平方向に対して最大10％の垂直方向の歪がある場合には、バッファ量としては、1920×192×16ビット＝5760ｋビットが必要となる。
【００５４】
以上のように、従来の歪補正処理では、画像全体に対する垂直方向の歪に応じてバッファサイズを確保する必要があるために、大きなサイズのバッファを用意しなければならなかった。
【００５５】
次に、図４を参照して、本発明の歪補正処理について説明する。
【００５６】
なお、図４では、説明の都合上、図１の撮像装置１を構成するブロックのうち、歪補正処理に関係しているメモリ１９及びリサイズ歪補正部２０のみを図示しており、図１に示したように実際には、メモリ１９とリサイズ歪補正部２０とは、バス２４を介して接続されている。
【００５７】
図４に示すように、リサイズ歪補正部２０は、水平歪補正部５１、垂直歪補正部５２、及びバッファ５３を含むようにして構成される。
【００５８】
メモリ１９に格納された補正前の画像データは、バス２４を介して水平歪補正部５１にラスタ入力される。水平歪補正部５１は、メモリ１９からラスタ入力される補正前の画像データに対して水平歪補正処理を施し、それにより得られる水平歪補正後の画像データを、垂直歪補正部５２に供給する。
【００５９】
垂直歪補正部５２は、水平歪補正部５１からラスタ入力される水平歪補正が施された画像データに対し、垂直補正処理を施し、それにより得られる垂直歪補正後の画像データを歪に合わせてバッファ５３に格納する。すなわち、バッファ５３に格納される補正後の画像データは、水平歪補正と垂直歪補正の両方が施されたものとなる。
【００６０】
バッファ５３は、たとえば、図５に示すように、書き込み制御部５４の制御にしたがって、垂直歪補正部５２から供給される補正後の画像データを格納する。バッファ５３に格納された補正後の画像データは、読み出し制御部５５によってバッファ５３が制御されることで、バス２４への出力単位（本実施の形態において、かかる出力単位はバス２４の最小転送単位を意味しており、以下、この単位のことを、バス出力単位とも称して説明する）で出力され、バス２４を経由してメモリ１９に書き込まれる。すなわち、図４のリサイズ歪補正部２０は、図２及び図３のリサイズ歪補正部３２のようにラスタ出力するのではなく、バス出力単位で出力を行う。
【００６１】
ここで、図６を参照して、バッファ５３の詳細な構成について説明する。
【００６２】
図６に示すように、バッファ５３は、画像データを格納するためのバッファ本体の領域の他に、外部メモリ書き込みライン数、先頭ライン位置、及び書き込み管理フラグを管理するための領域を有する。
【００６３】
図６において、バッファ本体は、複数のラインからなり、空いているラインを使いまわすことで、リングバッファとして構成される。また、それらのラインには、書き込み管理フラグが１ラインに対し複数対応付けられている。この書き込み管理フラグは、ライン全体が書き込まれたか否かを管理するためのフラグである。ここでは、たとえば、書き込み管理フラグとして、バッファ書き込み最小単位が１ビットで管理される。この場合、ライン全体のフラグが書き込み済みであることを示しているとき、バス出力単位となって、そのラインのバッファ本体に格納された画像データがバス２４に出力されることになる。
【００６４】
具体的には、図７の（ａ）に示すように、たとえば、４つのブロックに分割されたバッファ５３においては、図中のハッチングが施された領域を書き込み済みの部分であるとすると、書き込み済みの領域が順次増えるに従って、図７の（ｂ）のように、分割されたバッファ５３の１ラインがすべて書き込まれる（図７の（ｂ）の右側から１番目のブロック（以下、ブロックＡという。また同様に説明の都合上、右側から２，３，４番目のブロックをそれぞれ、ブロックＢ，ブロックＣ，ブロックＤという））。
【００６５】
そして、ブロックＡにおいて１ライン分の画像データが溜まると、そのライン全体の書き込み管理フラグがすべて立っているので、その１ライン分の画像データはバス２４に出力される。すなわち、バッファ５３は、補正後の画像データにおける横方向の幅がバス２４への出力単位の１以上の整数倍となるようにブロックＡ，Ｂ，Ｃ，Ｄに４分割されているので、たとえば、ブロックＡにおいて１ライン分の画像データが溜まると（バス出力単位（バス２４の最小転送単位）の１以上の整数倍分溜まると）、バス出力単位となり出力されることになる。
【００６６】
なお、分割された各ブロックの１ラインは、バス２４の最小転送単位の１以上の整数倍なので、複数回に分けてバス２４へ出力することも可能である。また、１つのブロックの１ラインは、バス２４の最小転送単位の１以上の整数倍でなくとも、複数のブロックを組み合わせてバスの最小転送単位で出力するようにしてもよい。
【００６７】
そして、これは、分割されたバッファ５３の横方向に対する最大垂直変位量を縦サイズとすることができることを意味する。すなわち、図８に示すように、横方向のバス出力単位に対する各ブロックの縦サイズには、そのバス出力単位内での縦方向の最大変位量以上のサイズが設定される。
【００６８】
その後、１ライン分を出力することで空いた領域は、図７の（ｃ）に示すように、ブロックＡの最後の領域に繋げて、リングバッファとして次に使いまわす。
【００６９】
同様にして、さらに、バッファ５３における書き込み済みの領域が増えると、図７の（ｄ）に示すようになる。すなわち、上記のブロックＡと同様にして、ブロックＢ，Ｃ，Ｄにおいても、それぞれ、１ライン分の画像データがバス出力単位でバス２４に順次出力され、出力後の空いた領域が対象のブロックの最後に繋げられて、それぞれのブロックは、リングバッファとして機能する。
【００７０】
このように、ブロックＡ，Ｂ，Ｃ，Ｄがそれぞれリングバッファとして機能してバス出力単位で画像データを出力することにより、たとえば、図９に示すようになる。すなわち、図９においては、出力画像全体が外側の大きい四角で表され、ブロックＡ，Ｂ，Ｃ，Ｄのそれぞれに格納された画像がその内部の小さな４つの四角で表される。たとえば、太線で囲まれた小さな四角で表されるブロックＡでは、「外部メモリ書き込みライン数」で示される範囲の画像に対応する画像データがバス２４を介してメモリ１９に出力された分の画像データとなる。
【００７１】
つまり、図９のブロックＡに対応する領域（図中の太線で囲まれた小さな四角）は、画像データを出力する度に図中下側にずれるので、「外部メモリ書き込みライン数」は、ブロックＡの先頭のラインが画像全体のどのラインとなるかを示す情報であるとも言える。この情報が、図６の外部メモリ書き込みライン数に相当する。
【００７２】
図６に戻り、外部メモリ書き込みライン数は、図９で説明したように、外部メモリ（メモリ１９）に書き込み済みのライン数、すなわち、先頭のラインが画像全体のどのラインとなるかを示す情報である。
【００７３】
また、先頭ライン位置は、リングバッファとして構成されるバッファ本体の先頭ラインの物理的な位置を示す情報である。なお、図６において、外部メモリ書き込みライン数から先頭ライン位置を判定できる場合には、先頭ライン位置に関する情報を保持する必要はなく、その外部メモリ書き込みライン数から先頭ライン位置に関する情報を取得すればよい。
【００７４】
以上のようにして、バッファ５３は構成される。
【００７５】
図４に戻り、上述したように、リサイズ歪補正部２０によって実行される歪補正処理で用いられるバッファ５３のサイズであるが、横方向は出力横サイズとなり、縦方向はバス出力単位の最大垂直変位量（垂直最大歪量）となる。すなわち、図２及び図３の従来の歪補正処理のバッファ４３であれば、縦方向は出力１ラインの垂直最大歪量となるため、図４の場合のバス出力単位の垂直最大歪量と比べて、そのサイズが大きくなる。
【００７６】
たとえば、バス出力単位（128ピクセル）に対し、最大20％の垂直方向の歪がある場合には、横1920ピクセル、横26ピクセル（≒128ピクセル×20％）となるので、バッファ量としては、1920×26×（16ビット＋1ビット）＝829ｋビットとなる。なお、垂直方向の歪の割合は、レンズ部１１により決定される値であって、ここでは、たとえば20％などの値が適宜設定される。
【００７７】
これは、図２及び図３を参照して説明した従来のリサイズ歪補正部３２で用いられるバッファ４３のサイズと比べて、明らかに必要なバッファ量が少なくて済むことを意味する。従って、図４の構成を採用することで、バッファ５３におけるバッファ量を削減することができる。
【００７８】
また、図４のリサイズ歪補正部２０においては、出力側にバッファ５３を設けて、図６に示したように、バッファ５３に格納された補正後の画像データを管理フラグ（書き込み管理フラグ）によって管理することで、歪補正部（水平歪補正部５１，垂直歪補正部５２）だけでアドレスを演算させることが可能となる。そして、リサイズ歪補正部２０では、バッファ５３にバス出力単位の画像データが溜まったとき、その溜まった分の画像データを指定されたアドレスに書き出すので、バッファ５３の管理が容易になる。これにより、同一の画像データを複数回に渡って読み出す必要もないし、さらに、その管理も必要ないといった利点も生じる。
【００７９】
なお、図４のバッファ５３においては、図１０に示すように、バッファ内での位置によって、縦方向のライン数を変えたり、あるいは、横方向の幅を変えたりすることも可能である。
【００８０】
たとえば、図１０の（ａ）に示すように、画像全体のうち、中央部に比べて左右両端の画像の歪が大きい場合、横方向の幅はバス出力単位で一定のままに、縦方向のライン数を左右両端ほど多くしてもよい。これにより、バッファ５３では、両端に歪のある画像にも対応可能となる。
【００８１】
また、画像全体のうち、中央部に比べて左右両端の画像の歪が大きい場合、図１０の（ｂ）に示すように、縦方向のライン数は一定のままで、横方向の幅を、歪の小さい中央部では広くし、他方、歪の大きい左右両端では狭くしてもよい。これにより、バッファ５３では、両端に歪のある画像にも対応可能となる。
【００８２】
逆に、図１０の（ｃ）に示すように、画像全体のうち、左右両端の画像に比べて中央部の画像の歪が大きい場合、横方向の幅はバス出力単位で一定のままに、縦方向のライン数を中央部ほど多くしてもよい。これにより、バッファ５３では、中央部に歪のある画像にも対応可能となる。
【００８３】
たとえば、デジタルスチルカメラ等の撮像装置１においては、ワイド端とテレ端では歪の出かたが異なるものであり、一般的に、テレ端では糸巻き型に歪み、ワイド端では樽型に歪む傾向がある。このような場合、たとえば、テレ端用のバッファ構成と、ワイド端用のバッファ構成のテーブルとを別にしてあらかじめ用意しておき、写真撮影時に、ユーザによって、操作部１８の一部であるズームボタンが操作されたとき、ワイド側へのズームか、あるいはテレ側へのズームかによって読み出すテーブルを切り替えることで、画像における歪の位置に応じたバッファ構成を実現できる。
【００８４】
また、本実施の形態においては、ラスタ入力の場合を説明するために、横方向にバッファ５３を分割している例について説明しているが、入力がラスタではなく、縦方向の場合には縦方向にバッファ５３を分割してもよい。さらに、本実施の形態においては、分割されたバッファ５３の１ライン毎に、バス２４を経由したメモリ１９への出力位置を管理することで、図６に示したようなリングバッファの構成ではなく、任意の位置のバッファとすることも可能である。
【００８５】
ところで、図４の例では、リサイズ歪補正部２０において、バッファ５３として、１つのバッファから構成される１段の例について説明したが、バッファの数は１段に限らず、図１１に示すように、２段以上とすることも可能である。
【００８６】
図１１において、水平歪補正部５１と、垂直歪補正部５２の後段には、バッファ５３Ａとバッファ５３Ｂの２つのバッファが２段で配置されている。簡単に説明すると、バッファ５３Ａは小さい単位での入出力、バッファ５３Ｂは大きい単位での入出力を行うバッファである。
【００８７】
すなわち、バッファ５３Ａの入力単位、バッファ５３Ａの出力単位（図１１のバッファ５３Ａ内に示されたバッファ５３Ｂへの出力単位）、バッファ５３Ｂの入力単位、及びバス出力単位（図１１のバッファ５３Ｂ内に示されたバス２４への出力単位）のそれぞれは、次の式（１）の関係を有する。
【００８８】
「バッファ５３Ａの入力単位」＜「バッファ５３Ａの出力単位」＝「バッファ５３Ｂの入力単位」＜「バス出力単位」      ・・・（１）
【００８９】
このように、リサイズ歪補正部２０においては、２段階のバッファにより画像データを分割し、バッファ５３Ａをいわばキャッシュのように用いることによって、小さい粒度で入出力する画像データのバッファ量を削減することが可能となる。また、共用や帯域向上を行いやすい粒度の大きいバッファ５３Ｂを他と共用したり、バス幅を広げて帯域を増やしたりすることで、バッファ量の削減し、さらには性能の向上を図ることが可能となる。
【００９０】
また、リサイズ歪補正部２０は、図１２に示すように、水平歪補正部５１と、垂直歪補正部５２の後段に、分割バッファ５３Ａと非分割バッファ５３Ｃの２つのバッファを２段で配置するといった構成を採用することもできる。この場合、分割バッファ５３Ａは、図１１のバッファ５３Ａと同様に、格納している画像データを、後段の非分割バッファ５３Ｃへの出力単位で出力する。非分割バッファ５３Ｃは、分割バッファ５３Ａから非分割バッファ５３Ｃへの出力単位で入力された画像データを一時的に格納し、その画像データを分割せずに、後段の画像処理部５６にラスタ出力する。これにより、画像処理部５６には、画像データがラスタ入力される。
【００９１】
すなわち、分割バッファ５３Ａの入力単位、分割バッファ５３Ａの出力単位（図１１の分割バッファ５３Ａ内に示された非分割バッファ５３Ｃへの出力単位）、及び非分割バッファ５３Ｃの入力単位のそれぞれは、次の式（２）の関係を有する。
【００９２】
「分割バッファ５３Ａの入力単位」＜「分割バッファ５３Ａの出力単位」＝「非分割バッファ５３Ｃの入力単位」      ・・・（２）
【００９３】
このように、リサイズ歪補正部２０においては、２段階のバッファのうち、一方のバッファを非分割のバッファとすることで、後段のブロックに対し、ラスタ出力をすることが可能となる。
【００９４】
また、図１３は、バッファの後段に、別のラスタ入力の画像処理部が接続される場合の例を示した図である。
【００９５】
図１３の（ａ）は、図４に対応しており、画像処理部６１は、図４の水平歪補正部５１及び垂直歪補正部５２に相当し、分割バッファ６２は、図４のバッファ５３に相当する。図１３の（ａ）において、仮に、分割バッファ６２の後段に、バス出力単位とは異なる順序での画像データの入力を要求する別の画像処理部が接続されるとすると、分割バッファ６２は、バス出力単位での出力ができなくなる。
【００９６】
この場合、図１３の（ｂ）に示すように、分割バッファ６２の代わりに、非分割バッファ６３を設けることで、非分割バッファ６３は、画像処理部６１からの入力を分割せずに１ライン分溜まってから、画像処理部６４（別の画像処理部）に出力するようにする。そして、画像処理部６４には１ライン分の画像データが入力されるので、画像処理部６４は、その画像データに対して、所定の画像処理を施し、出力する。
【００９７】
なお、図１３の（ｂ）のリサイズ歪補正部２０において、２段階以上のバッファから構成される場合には、最終段のバッファのみを非分割バッファとして分割を行わず、その他のバッファは、分割バッファとすることができる。この場合、最大歪量を小さくするか、あるいは処理を行うライン長を減らす必要があるものの、画像データを直接転送できる点において利点がある。
【００９８】
また、１つのバッファにおいて、図１３の（ａ）の分割バッファ６２の機能と、図１３の（ｂ）の非分割バッファの機能とを切り替えられるようにしてもよい。すなわち、リサイズ歪補正部２０において、画像処理部６１に接続されたバッファは、分割バッファ６２と非分割バッファ６３の両方の機能を有し、その出力先に応じて、分割バッファ６２として動作したり、非分割バッファ６３として動作したりする。
【００９９】
さらに、図１４の（ｂ）に示すように、画像処理部６１の前段に、別のラスタ出力を行う画像処理部６４が接続された場合、画像処理部６１は、画像処理部６４からの画像データを直接転送により取得し、バッファを経由して画像処理単位を小さくしたりせずに、所定の画像処理を行うことができる。なお、説明を省略した、図１４の（ａ）の構成は、図１３の（ａ）と同様に、図４の構成に対応するものである。
【０１００】
次に、図１５ないし図１７を参照して、リサイズ歪補正部２０において入出力される画像データの詳細について説明する。
【０１０１】
図１５に示すように、リサイズ歪補正部２０においては、画像全体がラスタ入力された場合、画像処理部６１によって所定の画像処理が施された画像データが分割バッファ６２に順次格納され、バス出力単位で順次出力される。
【０１０２】
また、図１６に示すように、画像全体のうちの一部の画像のみがラスタ入力された場合であっても、リサイズ歪補正部２０においては、画像処理部６１によって所定の処理が施された一部の画像データが分割バッファ６２に順次格納され、バス出力単位で順次出力される。
【０１０３】
さらに、図１７に示すように、リサイズ歪補正部２０において、画像全体のうちの一部の画像が複数個入力された場合には、画像処理部６１によって１ブロック分ずつ画像処理が施された画像データが、１ブロック分ずつ分割バッファ６２に順次格納される。そして、分割バッファ６２から出力された１ブロック分の画像データは、順次、非分割バッファ６３に格納される。このとき、非分割バッファ６３には、複数ブロック分の画像データが格納され、非分割バッファ６３は、格納された画像データを分割せずに１ライン分溜まってから出力する。
【０１０４】
このように、リサイズ歪補正部２０においては、画像処理部６１、分割バッファ６２、又は非分割バッファ６３によって、画像全体又は画像の一部などの入力される画像に応じた処理が適宜実行される。
【０１０５】
次に、図１８のフローチャートを参照して、リサイズ歪補正部２０で実行される歪補正処理について説明する。
【０１０６】
ステップＳ１において、水平歪補正部５１は、メモリ１９からラスタ入力される補正前の画像データに対し、水平歪補正処理を施し、それにより得られる画像データを、垂直歪補正部５２に供給する。
【０１０７】
ステップＳ２において、垂直歪補正部５２は、水平歪補正部５１から供給される画像データに対し、垂直補正処理を施し、それにより得られる画像データバッファ５３に格納する。
【０１０８】
ステップＳ３において、バッファ５３は、垂直歪補正部５２から供給される補正後の画像データを格納して、バス出力単位で出力する処理（以下、バッファ処理という）を実行する。
【０１０９】
ここで、図１９のフローチャートを参照して、バッファ５３で実行されるバッファ処理の詳細について説明する。
【０１１０】
ステップＳ１１において、書き込み制御部５４は、補正後の画像データを書き込むための水平方向のアドレス（以下、単に、水平アドレスという）から該当ブロック番号を決定する。これにより、たとえば、図７のバッファ５３の４分割されたブロックＡないしブロックＤの中から画像データを書き込むブロックが決定される。
【０１１１】
ステップＳ１２において、書き込み制御部５４は、該当ブロックの水平開始位置を取得する。たとえば、図７において、書き込み制御部５４によって、画像データを書き込むと決定されたブロックＡの水平開始位置として、ブロックＡとブロックＢとの境界の水平方向の位置が取得される。
【０１１２】
そして、書き込み制御部５４は、ステップＳ１３において、水平アドレスから、取得した該当ブロックの水平開始位置を引く演算をし、ステップＳ１４において、その減算結果を水平書き込みアドレスとする。
【０１１３】
これにより、該当ブロックにおける水平方向の書き込みアドレスが求められたことになる。次に、垂直方向の書き込みアドレスを求める。
【０１１４】
ステップＳ１５において、書き込み制御部５４は、該当ブロックの外部メモリ書き込みライン数（図６の外部メモリ書き込みライン数）を取得する。
【０１１５】
そして、書き込み制御部５４は、ステップＳ１６において、補正後の画像データを書き込むための垂直方向のアドレス（以下、単に、垂直アドレスという）から、取得した外部メモリ書き込みライン数を引く演算をし、その減算結果に先頭ライン位置（図６の先頭ライン位置）を加算する演算をし、さらに、その演算結果をバッファライン数で割った余りを算出する。書き込み制御部５４は、ステップＳ１７において、ステップＳ１６の処理で得られる演算結果を垂直書き込みアドレスとする。
【０１１６】
これにより、該当ブロックにおける水平方向と垂直方向の書き込みアドレスが求められたことになる。
【０１１７】
ステップＳ１８において、書き込み制御部５４は、水平書き込みアドレス（ステップＳ１４の処理結果）と、垂直書き込みアドレス（ステップＳ１７の処理結果）にしたがって、画像データを、バッファ５３の該当ブロックに書き込む。
【０１１８】
ステップＳ１９において、書き込み制御部５４は、書き込んだ画像データに対応する書き込み管理フラグを立てる。すなわち、図６においては、書き込み制御部５４によって、水平書き込みアドレスと垂直書き込みアドレスにしたがって、バッファ本体（図６のバッファ本体）に画像データが書き込まれ、さらに、その画像データに対応する書き込み管理フラグ（図６の書き込み管理フラグ）が立てられることになる。
【０１１９】
ステップＳ２０において、読み出し制御部５５は、図６の書き込み管理フラグを参照して、先頭ラインの書き込み管理フラグがすべて立っているか否かを判定する。
【０１２０】
ステップＳ２０において、先頭ラインの書き込み管理フラグがすべて立っていると判定された場合、読み出し制御部５５は、ステップＳ２１において、先頭ラインをバス２４にバス出力単位で出力し、ステップＳ２２において、その出力されたラインの書き込み管理フラグを消去する。そして、バス出力単位で出力された画像データは、メモリ１９の指定されたアドレスに書き込まれる。
【０１２１】
ステップＳ２３において、読み出し制御部５５は、先頭ライン位置（図６の先頭ライン位置）と、外部メモリ書き込みライン数（図６の外部メモリ書き込みライン数）の両方に１を加算し、さらに、先頭ライン位置のみバッファライン数で割った余りとする。そして、先頭ライン位置と外部メモリ書き込みライン数が変更された後、処理は、ステップＳ２４に進む。
【０１２２】
一方、ステップＳ２０において、先頭ラインの管理フラグがすべて立っていないと判定された場合、バス出力単位となるまでバッファ本体には画像データがたまっていないので、ステップＳ２１ないしステップＳ２３をスキップして、処理は、ステップＳ２４に進む。
【０１２３】
ステップＳ２４において、書き込み制御部５４は、補正後の画像データのすべての書き込みが終了したか否かを判定する。
【０１２４】
ステップＳ２４において、補正後の画像データのすべての書き込みが終了していないと判定された場合、ステップＳ１１に戻り、上述した、ステップＳ１１ないしステップＳ２４の処理が繰り返される。すなわち、ステップＳ１１ないしステップＳ２４の処理が繰り返されることで、補正後の画像データのすべての書き込みが終了するまで、バッファ５３には、垂直歪補正部５２から出力された補正後の画像データが順次格納され、バス出力単位で出力され、メモリ１９の指定されたアドレスに順次書き込まれる。
【０１２５】
そして、ステップＳ２４において、補正後の画像データのすべての書き込みが終了したと判定された場合、処理は、図１８のステップＳ３の処理に戻り、リサイズ歪補正部２０によって実行される歪補正処理は終了する。
【０１２６】
以上のように、リサイズ歪補正部２０においては、水平歪補正部５１による水平歪補正処理と、垂直歪補正部５２による垂直歪補正処理ともラスタ入力で歪補正処理が実行され、補正後の画像データがバッファ５３に歪に合わせて出力される。そして、バッファ５３では、図６のバッファ構成を採用することで、補正後の画像データは、バッファ内で分割された各ブロック（図７ではブロックＡ，Ｂ，Ｃ，Ｄ）の１ラインがすべて書き込まれると（図６の書き込み管理フラグがすべて立つと）、バス２４に出力され、空いた領域が使いまわされて、リングバッファとなる。これにより、図８に示したように、バッファ内で分割されたブロックの横方向に対する最大垂直変位を縦サイズとすることができるため、これは、画面全体に対する垂直方向の歪に応じて縦サイズを確保する場合（たとえば、図２，図３の場合）と比べて、明らかにバッファ量を削減することが可能となり、これは、バッファ５３のサイズを小さくすることに繋がるものである。
【０１２７】
換言すれば、バッファ５３は、出力画像の横方向の幅がバス２４への出力単位となるように複数のブロック（図７ではブロックＡ，Ｂ，Ｃ，Ｄ）に分割されており、バス２４の出力単位がラスタの一部となるようにメモリ１９に格納される。また、各ブロック内がライン単位でリングバッファ構成となっているため、各ブロックの縦サイズは、歪補正処理の１ラインの入力の処理結果における各ブロック内での縦方向の最大変位量以上となるのである。
【０１２８】
また、リサイズ歪補正部２０においては、出力側にバッファ５３を設けて、バッファ５３に格納される補正後の画像データを、図６の書き込み管理フラグによって管理するため、水平歪補正部５１や垂直歪補正部５２などの画像処理部のみでアドレスの計算をすることができる。そして、リサイズ歪補正部２０では、バッファ５３にバス出力単位の画像データが溜まったとき、その溜まった分の画像データを指定されたアドレスに書き出されるので、それ以外の制御を特に実行する必要がなく、バッファ５３の管理が容易になる。また、同一の画像データを複数回に渡って読み出す必要もないし、さらに、その管理も必要ないといった利点も生じる。
【０１２９】
なお、リサイズ歪補正部２０による歪補正処理としては、たとえば、レンズ部１１に起因する樽型歪曲収差や色収差などの歪を補正する処理が実行される。図２０には、樽型歪曲収差を補正する例が図示され、図２１には、色収差を補正する例が図示されている。
【０１３０】
図２０に示すように、リサイズ歪補正部２０によって、図中左側の樽型歪曲収差を有する画像に対応する画像データに対して、中心から縦横方向にずれるに従い拡大する補正処理が施されることで、図中右側の歪補正された画像が得られる。
【０１３１】
また、図２１に示すように、リサイズ歪補正部２０によって、図中左側の色収差を有する画像において、たとえば、Ｒの画像（赤：縦方向に３つ並んでいる画像のうち、上側の鎖線で人物が表された画像）、Ｇの画像（緑：真ん中の点線で人物が表された画像）、Ｂの画像（青：下側の実線で人物が表された画像）のそれぞれに対応する画像データに対し、所定の解像度変換処理を施す。そして、リサイズ歪補正部２０は、解像度変換処理により得られた画像データのそれぞれを合成することで、図中右側の色収差の補正された画像が得られる。
【０１３２】
このようにして、リサイズ歪補正部２０においては、たとえば、樽側歪曲収差や色収差などの補正処理が実行される。
【０１３３】
なお、本実施の形態においては、樽側歪曲収差や色収差などの補正処理が施された画像データを、バッファ５３に格納する例について説明したが、バッファ５３に格納する画像データは、他の画像処理が施された画像データであってもよい。その場合であっても、バッファ５３においては、上述した、図１９のフローチャートで説明した処理が実行されることになる。
【０１３４】
ところで、バッファ５３の構成であるが、図６に示した構成に限らず、それ以外の他の構成を採用することも可能である。そこで、次に、バッファ５３の他の構成例について説明する。
【０１３５】
バッファ５３は、図６に示した構成以外の構成として、たとえば、図２２の格納位置保持バッファと、図２３のデータ保持バッファから構成されるようにすることができる。
【０１３６】
図２２に示すように、格納位置保持バッファは、その名称の如く、図２３のデータ保持バッファに格納される画像データの格納位置を、リングバッファの機能により保持する。格納位置保持バッファは、先頭ライン番号、先頭ライン位置、及び格納位置情報に関する情報を格納する領域を有し、さらに、格納位置情報には、有効ビットが対応付けられている。
【０１３７】
ここで、先頭ライン番号は、リングバッファの先頭ラインの画像上の番号を示す情報である。また、先頭ライン位置は、リングバッファの先頭ラインのリングバッファ上の物理的位置を示す情報である。なお、先頭ライン番号から先頭ライン位置を判定できる場合には、先頭ライン位置に関する情報を保持する必要はなく、その先頭ライン番号から先頭ライン位置に関する情報を取得すればよい。すなわち、格納位置保持バッファは、先頭ライン番号及び先頭ライン位置に関する情報に基づいて、格納位置情報と有効ビットとを関連付けて格納することにより、リングバッファとして機能する。
【０１３８】
格納位置情報は、図２３のデータ保持バッファに書き込む画像データを格納する位置に関する情報である。上述したように、この格納位置情報には、有効ビットが対応付けて格納される。有効ビットは、格納位置情報の有効又は無効を示すビットである。なお、この無効を示すものとしては、ありえない格納位置番号で代用することも可能である。たとえば、格納位置番号が１から始まる場合、０を無効とすることができる。また、格納位置保持バッファにおいては、歪補正を実行する水平歪補正部５１及び垂直歪補正部５２、並びにその他の画像処理部からの書き込みライン番号と、先頭ライン番号から読み出し位置が決定される。
【０１３９】
また、図２３に示すように、データ保持バッファにおいては、ライン画像データに関する情報を格納する領域と、有効ビット群に関する情報を格納する領域とが対応付けられている。ライン画像データにおいては、図２２の格納位置保持バッファの格納位置情報に基づいて、書き込み位置が決定され、その決定された位置に、画像データが書き込まれる。そして、ライン画像データが書き込まれた場合には、書き込みラインを管理するためのフラグである有効ビット群のうちの対応するビットが立てられる。つまり、データ保持バッファにおいて、有効ビット群のすべての管理フラグの立っているライン画像データは、バス２４に出力されることになる。
【０１４０】
なお、図２２の格納位置保持バッファの格納位置の数と、図２３のデータ保持バッファのライン数との間には、次の式（３）の関係を有する。
【０１４１】
「格納位置保持バッファの格納位置の数」≧「データ保持バッファのライン数」      ・・・（３）
【０１４２】
言い換えれば、「格納位置保持バッファの格納位置の数」とは、同時に保持しなければならないラインの上端と下端の範囲の数であり、「データ保持バッファのライン数」とは、同時に保持しなければならないライン数となる。
【０１４３】
以上のように、バッファ５３においては、図２２の格納位置保持バッファによって、ライン画像データの格納位置が管理され、実際の画像データが、図２３のデータ保持バッファに保持される。
【０１４４】
図２２及び図２３のバッファ構成を採用した場合、たとえば、図２４に示すような画像処理を行う場合に特に有効である。
【０１４５】
図２４は、「ア」，「イ」，「ウ」からなる文字群が表示された左側の画像に対し、所定の画像処理を施すことで、右側の画像を取得する例を示している図である。この右側の画像に表示されている文字群は、所定の画像処理によって、「ア」と「ウ」は拡大され、「イ」の一部には、図中の点線で囲まれた領域で示すように、上下にミラー処理が施されている。
【０１４６】
ここで、「ア」と「ウ」の一部と、「イ」の全部の領域を担当するバッファにおいて、書き込みの途中の様子を図示すると、図２５のようになる。すなわち、図２５のバッファの例においては、横方向がバス出力単位、縦方向がライン数を示しており、空き部分（図中の横長の楕円で囲まれた「空き部分」で示された領域）を含めた上端と下端の間のライン数が、図２２の格納位置保持バッファの格納位置数と同じになる。このライン数は、図２５の例では、５ラインとなる。また、この５ラインは空き部分も含んでいるため、その空き部分を除けば、同時に使用される最大ライン数は、図中の縦長の楕円で示すように、４ライン（＝５ライン−空き部分の１ライン）となる。そして、この同時に使用される最大ライン数が、図２３のデータ保持バッファのライン数と同じになる。
【０１４７】
このように、かかる画像処理を行う場合には、上記の式（３）の関係、すなわち、空き部分を含めた上端と下端のライン数（格納位置保持バッファの格納位置の数）が、同時に使用される最大ライン数（データ保持バッファのライン数）以上となるような関係を満たしている。したがって、図２２の格納位置保持バッファと、図２３のデータ保持バッファからなるバッファ構成を採用すると好適である。
【０１４８】
次に、図２２の格納位置保持バッファと、図２３のデータ保持バッファからなるバッファ構成を採用した場合における画像処理の一例として、リサイズ歪補正部２０によって実行される歪補正処理について説明する。
【０１４９】
なお、リサイズ歪補正部２０によって実行される歪補正処理は、基本的に、上述した、図１８の歪補正処理と同様であり、ステップＳ３の処理で実行されるバッファ処理だけが異なる。すなわち、図２２及び図２３のバッファ構成を採用した場合においては、ステップＳ３の処理として、図６のバッファ構成を採用した場合に実行される図１９のバッファ処理の代わりに、図２６及び図２７のバッファ処理が実行される。
【０１５０】
したがって、図２６及び図２７のフローチャートを参照して、バッファ５３で実行されるバッファ処理の詳細について説明する。
【０１５１】
ステップＳ３１ないしステップＳ３４において、図１９のステップＳ１１ないしステップＳ１４の処理と同様に、書き込み制御部５４によって、水平書き込みアドレスが求められる。
【０１５２】
ステップＳ３５において、書き込み制御部５４は、該当ブロックの格納位置保持バッファの先頭ライン番号（図２２の先頭ライン番号）と、先頭ライン位置（図２２の先頭ライン位置）を読み出す。
【０１５３】
そして、書き込み制御部５４は、ステップＳ３６において、垂直アドレスから先頭ライン番号を引く演算をし、その減算結果に先頭ライン位置を加算する演算をし、さらに、その演算結果を格納位置保持バッファ数で割った余りを算出する。書き込み制御部５４は、ステップＳ３７において、ステップＳ３６の処理により得られる演算結果を位置として、格納位置保持バッファの管理フラグ（図２２の有効ビット）を読み出す。
【０１５４】
ステップＳ３８において、書き込み制御部５４は、読み出した格納位置保持バッファの管理フラグ（図２２の有効ビット）が有効であるか否かを判定する。
【０１５５】
ステップＳ３８において、格納位置保持バッファの管理フラグが有効ではないと判定された場合、図２７のステップＳ３９において、書き込み制御部５４は、データ保持バッファの管理フラグ（図２３の有効ビット群）から空いているラインを探す。
【０１５６】
ステップＳ４０において、書き込み制御部５４は、探索されたラインの格納位置を格納位置情報（図２２の格納位置情報）として、格納位置保持バッファに書き込む。さらに、書き込み制御部５４は、ステップＳ４１において、格納位置保持バッファに書き込んだ格納位置情報に対応する管理フラグ（図２２の有効ビット）を有効化する。そして、格納位置保持バッファに対して、格納位置情報と管理フラグを書き込んだ後、処理は、図２６のステップＳ４２に進む。これにより、画像データを書き込む準備ができたことになる。
【０１５７】
一方、ステップＳ３８において、格納位置保持バッファの管理フラグが有効であると判定された場合、画像データを書き込む準備は既にできているので、処理は、ステップＳ４２に進む。
【０１５８】
ステップＳ４２において、書き込み制御部５４は、格納位置保持バッファの格納位置情報（図２２の格納位置情報）に基づいて、データ保持バッファのライン画像データ（図２３のライン画像データ）に画像データを書き込む。さらに、書き込み制御部５４は、ステップＳ４３において、書き込んだ画像データに対応する管理フラグ（図２３の有効ビット群）を立てる。すなわち、図２３においては、書き込み制御部５４によって、格納位置情報にしたがって、データ保持バッファに画像データが書き込まれ、さらに、その画像データに対応する管理フラグが立てられることになる。
【０１５９】
ステップＳ４４において、読み出し制御部５５は、図２３の有効ビット群を参照して、データ保持バッファの書き込み管理フラグがすべて立っているか否かを判定する。
【０１６０】
ステップＳ４４において、データ保持バッファの書き込み管理フラグがすべて立っていると判定された場合、読み出し制御部５５は、ステップＳ４５において、データ保持バッファの該当ラインをバス２４に出力し、ステップＳ４６において、その出力されたラインの管理フラグ（図２３の有効ビット群）を消去する。
【０１６１】
ステップＳ４７において、読み出し制御部５５は、データ保持バッファの該当ラインに対応する格納位置保持バッファの格納位置情報の管理フラグ（図２２の有効ビット）を無効にする。
【０１６２】
ステップＳ４８において、読み出し制御部５５は、格納位置保持バッファの該当格納位置情報が、リングバッファの先頭であるか否かを判定する。
【０１６３】
ステップＳ４８において、格納位置保持バッファの該当格納位置情報がリングバッファの先頭であると判定された場合、ステップＳ４９において、読み出し制御部５５は、格納位置保持バッファの先頭ライン番号（図２２の先頭ライン番号）と、先頭ライン位置（図２２の先頭ライン位置）の両方に先頭ライン位置からの連続した管理フラグ無効の数を加算し、さらに、先頭ライン位置のみバッファ数で割った余りとする。そして、先頭ライン番号と先頭ライン位置が変更された後、処理は、ステップＳ５０に進む。
【０１６４】
一方、ステップＳ４８において、格納位置保持バッファの該当格納位置情報がリングバッファの先頭ではないと判定された場合、ステップＳ４９の処理をスキップして、先頭ライン番号と先頭ライン位置は変更せずに、処理は、ステップＳ５０に進む。また、上記のステップＳ４４において、データ保持バッファの書き込み管理フラグがすべて立っていないと判定された場合、バス出力単位となるまでデータ保持バッファには画像データがたまっていないので、ステップＳ４５ないしステップＳ４９の処理をスキップして、処理は、ステップＳ５０に進む。
【０１６５】
ステップＳ５０において、読み出し制御部５５は、補正後の画像データのすべての書き込みが終了したか否かを判定する。
【０１６６】
ステップＳ５０において、補正後の画像データのすべての書き込みが終了していないと判定された場合、ステップＳ３１に戻り、上述した、ステップＳ３１ないしステップＳ５０の処理が繰り返される。すなわち、ステップＳ３１ないしステップＳ５０の処理が繰り返されることで、補正後の画像データのすべての書き込みが終了するまで、バッファ５３には、垂直歪補正部５２から出力された補正後の画像データが順次格納され、バス出力単位で出力される。
【０１６７】
そして、ステップＳ５０において、補正後の画像データのすべての書き込みが終了したと判定された場合、処理は、図１８のステップＳ３の処理に戻り、リサイズ歪補正部２０によって実行される歪補正処理は終了する。
【０１６８】
以上のように、本発明によれば、バッファの管理を容易にし、画像処理の効率を上げることができる。また、本発明によれば、歪補正処理などの画像処理を行うためのバッファのサイズを小さくすることができるため、画像処理単位を大きくして処理効率を上げて、コストを下げることができる。
【０１６９】
また、前又は後の画像処理部と処理単位を合わせることが容易となるため、一旦外部メモリに書き込む必要がなくなり、たとえば、外部メモリ帯域、外部メモリ量、遅延時間、外部メモリ電力の削減を図ることができる。さらに、バッファを２段階とすることで、他の画像処理部と共用しにくく、アクセス速度を向上しにくい小さな粒度で入出力するメモリ量を削減することができるとともに、他の画像処理部と共用や入出力のビット幅を増やすなどのアクセス速度を向上させやすい大きな粒度で入出力するメモリの使用効率を高くすることが可能となる。
【０１７０】
なお、本実施の形態においては、所定の画像処理を実行する機器として、撮像装置１を例にして説明したが、本発明は、たとえば、パーソナルコンピュータ、画像記録装置、画像再生装置、ディスプレイ装置、携帯電話機、ゲーム機などの所定の画像処理を実行する機器にも適用することができる。
【０１７１】
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１７２】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１７３】
さらに、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１７４】
【図１】本発明を適用した撮像装置の一実施の形態の構成を示す図である。
【図２】従来の歪補正処理を説明するための図である。
【図３】従来の歪補正処理を説明するための図である。
【図４】本発明の歪補正処理を説明するための図である。
【図５】バッファの書き込みと読み出しの制御について説明するための図である。
【図６】バッファの詳細な構成例について説明するための図である。
【図７】バッファの書き込みの例を示す図である。
【図８】バス出力単位とバス出力単位内での最大変位量との関係を示す図である。
【図９】出力画像全体における外部メモリ書き込みライン数を説明するための図である。
【図１０】バッファ内の歪の大きさに応じたバッファ構成例を示す図である。
【図１１】バッファを２段とした場合のバッファ構成例を示す図である。
【図１２】バッファを２段とした場合の他のバッファ構成例を示す図である。
【図１３】バッファの他の構成例を示す図である。
【図１４】バッファの他の構成例を示す図である。
【図１５】画像全体のラスタ入力について説明する図である。
【図１６】画像一部のラスタ入力について説明する図である。
【図１７】画像一部のブロックを複数個入力する場合について説明する図である。
【図１８】歪補正処理について説明するフローチャートである。
【図１９】バッファ処理の詳細について説明するフローチャートである。
【図２０】樽型歪曲補正の結果を示す図である。
【図２１】色収差補正の結果を示す図である。
【図２２】バッファの他の構成例を示す図である。
【図２３】バッファの他の構成例を示す図である。
【図２４】図２２及び図２３のバッファを採用した場合の画像処理の例を示す図である。
【図２５】図２４の画像処理の詳細について説明するための図である。
【図２６】バッファ処理の詳細について説明するフローチャートである。
【図２７】バッファ処理の詳細について説明するフローチャートである。
【符号の説明】
【０１７５】
１  撮像装置，  １１  レンズ部，  １２  撮像部，  １３  A/D変換部，  １４  カメラ信号処理部，  １５  CPU，  １６  ROM，  １７  RAM，  １８  操作部，  １９  メモリ，  ２０  リサイズ歪補正部，  ２１  ディスプレイ，  ２２  画像圧縮部，  ２３  ストレージ，  ２４  バス，  ５１  水平歪補正部，  ５２  垂直歪補正部，  ５３  バッファ，  ５４  書き込み制御部，  ５５  読み出し制御部，  ５６  画像処理部，  ６１  画像処理部，  ６２  分割バッファ，  ６３  非分割バッファ，  ６４  画像処理部
【図１】
2010028758.tif 000003
【図２】
2010028758.tif 000004
【図３】
2010028758.tif 000005
【図４】
2010028758.tif 000006
【図５】
2010028758.tif 000007
【図６】
2010028758.tif 000008
【図７】
2010028758.tif 000009
【図８】
2010028758.tif 000010
【図９】
2010028758.tif 000011
【図１０】
2010028758.tif 000012
【図１１】
2010028758.tif 000013
【図１２】
2010028758.tif 000014
【図１３】
2010028758.tif 000015
【図１４】
2010028758.tif 000016
【図１５】
2010028758.tif 000017
【図１６】
2010028758.tif 000018
【図１７】
2010028758.tif 000019
【図１８】
2010028758.tif 000020
【図１９】
2010028758.tif 000021
【図２０】
2010028758.tif 000022
【図２１】
2010028758.tif 000023
【図２２】
2010028758.tif 000024
【図２３】
2010028758.tif 000025
【図２４】
2010028758.tif 000026
【図２５】
2010028758.tif 000027
【図２６】
2010028758.tif 000028
【図２７】
2010028758.tif 000029