(57)【要約】【課題】バスの転送量やメモリの容量を大きく増大させることなく、歪補正処理を実現できる画像処理装置及び画像処理方法を提供すること。【解決手段】画像データに対して歪補正処理を行う歪補正処理部８を有する画像処理装置において、前記歪補正処理部８は、前記画像データの一部を格納するメモリ部８３と、前記メモリ部に対するデータの書き込みおよび読み込みを制御するメモリ制御部８３と、を有し、前記メモリ部８２から読み出した画像データに対する補間演算を行うようにしたものである。この構成では、内部バッファとしてのメモリ部８２に画像データの一部を格納して、そのデータを利用して歪補正処理のための補間演算を行うことができる。さらに、メモリ部８２に対してＵＬを単位として書き込み、読み出しを行うので、バスの転送量やメモリの容量を大きく増大させることなく、少ない容量で歪補正処理を実現できる。【選択図】  図２
2005045514.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対して歪補正処理を行う歪補正手段を有する画像処理装置において、
前記歪補正手段は、
前記画像データの一部を格納するメモリ部と、
前記メモリ部に対するデータの書き込みおよび読み込みを制御するメモリ制御部と、
を有し、
前記メモリ部から読み出した画像データに対する補間演算を行うことを特徴とする画像処理装置。
【請求項２】
前記メモリ制御部は、
前記メモリ部への書き込みの際は、列方向に一列に並んだ一定数分の画素からなる画像データ（ユニットライン：ＵＬ）を単位として書き込むように制御し、前記メモリ部からの読み出しの際は、歪補正処理後の画像が前記ＵＬを単位として出力されるように、前記メモリ部に格納された画像データに対して読み出し制御することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記メモリ制御部は、前記ＵＬの最初に処理される画素の座標位置に対して、行方向に対して前側および後側に所定幅の領域（それぞれｐｒｅＵＬＢ、ｐｏｓｔＵＬＢ）を設け、前記ＵＬの処理中は他の処理によって前記領域が上書きされないよう制御することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記メモリ制御部は、さらに、
前記ＵＬの処理中に、前記歪補正手段の前段からのデータを入力するために開放可能なバッファ量を算出するバッファ開放量算出回路と、
前記歪補正手段の後段に対するデータ送信の可否を判定するデータ送信可否判定回路とを有し、
前記バッファ開放量算出回路には、前記ＵＬの処理における最初の画素に対する補間座標を中心として前記ｐｏｓｔＵＬＢが入力され、データ送信可否判定回路には前記ｐｒｅＵＬＢが入力され、バッファ開放量算出回路は前記バッファ開放量を前記ｐｏｓｔＵＬＢの値を参照して算出し、データ送信可否判定回路は前記ｐｒｅＵＬＢの値を参照してデータ送信可否の判定を行うことを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記ｐｒｅＵＬＢ値、ｐｏｓｔＵＬＢ値は、それぞれ歪中心に対して前側と後側とで異なる値を設定可能であることを特徴とする請求項３又は４に記載の画像処理装置。
【請求項６】
前記画像処理装置は、さらにバッファの空き領域を検出するバッファ空き容量監視回路を有し、
該バッファ空き容量監視回路によりバッファ内の空き領域が検出されると、該空き領域へのデータの書き込みを可能とすることを特徴とする請求項１〜４のいずれか１つに記載の画像処理装置。
【請求項７】
前記メモリ部は、データのリード動作とライト動作が同時に可能な複数のメモリからなり、
前記メモリ制御部は、さらに、
前記メモリ部へのデータ書込み制御を行う書込みアドレス生成回路と、
前記メモリ部に格納されている画像データから補間演算に必要なデータを同時に読み出すためのアドレスを生成する読出しアドレス生成回路と、
を有し、
前記データ書込み制御は、同時に読み出すデータをそれぞれ異なるメモリに書き込むものであることを特徴とする請求項１記載の画像処理装置。
【請求項８】
前記画像処理装置は、さらに、歪補正処理された座標が前記ＵＬの処理における最初の画像に対する補間座標に対し、列方向に前記ｐｒｅＵＬＢ、ｐｏｓｔＵＬＢを逸脱する座標が生成された時、若しくは、歪補正された座標が前段から入力されない座標となった時にエラーを検出して出力するエラー検出回路を有することを特徴とする請求項３〜５のいずれか１つに記載の画像処理装置。
【請求項９】
前記エラー出力がなされたときはレジスタを再設定して画像処理を再実行することが可能であることを特徴とする請求項３〜５のいずれか１つに記載の画像処理装置。
【請求項１０】
１ＵＬの処理終了後、次の１ＵＬまたはさらにその次の１ＵＬの処理を開始する際の最初の補間座標が演算された後に１ＵＬ単位の処理を終了することを特徴とする請求項２〜６のいずれか１つに記載の画像処理装置。
【請求項１１】
画像データに対して歪補正処理を行う画像処理方法において、
前記歪補正処理を行うに際は、データの書き込みおよび読み込みが制御されるメモリ部に、前記画像データの一部を格納し、該メモリ部から読み出した画像データに対して補間演算を行うことを特徴とする画像処理方法。
【請求項１２】
前記画像処理装置は、さらに、前記歪補正手段が歪補正処理を行う入力画像範囲を算出する歪補正範囲算出部を有すること、
を特徴とする請求項３〜５のいずれか１つに記載の画像処理装置。
【請求項１３】
前記歪補正範囲算出部は、所定の歪補正式を適用して座標変換可能であり、歪補正後の出力画像範囲において、
周辺４辺の各辺に対応する画素を座標変換して生成した変換座標の最大値と最小値、および４頂点に対応する画素を座標変換して生成した変換座標、の少なくともいずれかを算出し、前記ｐｒｅＵＬＢおよびｐｏｓｔＵＬＢは、前記歪補正範囲算出部の出力結果から算出すること、を特徴とする請求項１２記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、主に、デジタルカメラ等の電子的撮像装置に用いられる画像処理装置及び画像処理方法に関し、特に、回路規模やデータ転送量を増大させること無く、歪補正機能を実現する画像処理装置及び画像処理方法に関する。
【０００２】
【従来の技術】
デジタルカメラ，銀塩カメラを問わず、一般的にカメラの光学系においては歪曲収差が現れる。また、現在発売されているカメラでは、光学ズームが可能な機種が殆どであり、その場合、ワイド端からテレ端にかけて、歪曲収差の状態が変化する。ワイド端では樽型歪が多く、テレ端では糸巻き型歪が多い。
【０００３】
歪曲収差は、例えば格子状の被写体を撮影すると、樽型歪、糸巻き型歪として観測される。
【０００４】
図２３（ａ）は格子状の被写体、（ｂ）は樽型歪を生じた撮影画像、（ｃ）は糸巻き型歪を生じた撮影画像である。
【０００５】
ところで、デジタルカメラにおいては、ＣＣＤ等の撮像素子のデータに対し、様々な画像処理を行なった後、ＪＰＥＧ等の圧縮方式で圧縮したデータをメモリカード等の記録媒体に記録する。
【０００６】
図２４（ａ）は一般的なデジタルカメラで行われている画像処理手順の概念を示している。ＣＣＤから取り込まれた撮像信号は、プリプロセスで画素欠陥処理やＡ／Ｄ変換等の処理が行われ、ＳＤＲＡＭ等のフレームメモリに記憶される。次に、フレームメモリに記憶された画像データが読み出されて、イメージプロセス１、イメージプロセス２、…、イメージプロセスＮにより各種の画像処理が行われる。画像処理後の画像データは、さらにＪＰＥＧ等の圧縮方式で圧縮されて、記録媒体としてのメモリカード等へ記録される。
【０００７】
図２４（ｂ）は従来のデジタルカメラの画像処理装置のブロック図（例えば特開２０００−３１２３２７号公報での従来例）を示している。
【０００８】
図２４（ｂ）において、従来の画像処理装置は、バス１０３にＣＰＵ１０４と共にプリプロセス回路１０２，複数のイメージプロセス回路１０６−１〜１０６−ｎ，ＪＰＥＧ処理部１０７，フレームメモリ１０５及び記録媒体としてのメモリカード等１０８が接続されている。そして、ＣＰＵ１０４の制御により、ＣＣＤ１０１からの撮像信号がプリプロセス回路１０２で画素欠陥処理やＡ／Ｄ変換等が施された後、バス１０３を通してフレームメモリ１０５に一旦記憶される。次に、フレームメモリ１０５から画像データを読み出し、バス１０３を通してイメージプロセス回路１０６−１に入力して所定の画像処理を行い、再びバス１０３を通してフレームメモリ１０５に書き直す。以下同様にして、バス１０３を介してフレームメモリ１０５とイメージプロセス回路１０６−２〜１０６−ｎとの間でデータのやり取りを順次行って、最後にＪＰＥＧ処理部１０７でＪＰＥＧ圧縮処理を行い、画像処理したデータをフレームメモリ１０５に一旦記憶し、フレームメモリ１０５から読み出した処理データをメモリカード等１０８に記録するようになっている。以上の各段のイメージプロセス及びＪＰＥＧ処理では、小領域（ブロックライン）を単位として画像処理が行われる。
【０００９】
一方、従来、この画像処理の一部として歪補正を行う先行技術が開示されている。例えば、特開６−１８１５３０号公報、特開１０−２２４６９５号公報がある。
【００１０】
特開６−１８１５３０号公報には、撮影時における撮像ズームレンズの撮像ポジションが歪曲収差の大きいポジション内であることが検出手段にて検出されている場合には、この撮像ズームレンズによって生じた像の幾何学的歪みを、固体撮像素子の撮像データを幾何学的変形に基づき読み出すことにより補正することが記載されている。
【００１１】
特開１０−２２４６９５号公報には、光学系を経由した光を受光する固体撮像デバイスで撮像したデータをランダムアクセスビデオメモリに記憶し、ランダム読み出しタイミング発生回路は光学系によって生ずる収差を補正するための収差補正データを有し、この収差補正データに基づいて固体撮像デバイスによって生成された信号を所定の順に読み出してビデオ信号を生成することで、光学系の歪曲収差を補正することが記載されている。
【００１２】
【特許文献１】
特開２０００−３１２３２７号公報（第３頁、図１９）
【００１３】
【特許文献２】
特開６−１８１５３０号公報（第１，２頁、図２）
【００１４】
【特許文献３】
特開１０−２２４６９５号公報（第１−３頁、図１）
【００１５】
【発明が解決しようとする課題】
しかしながら、特許文献１の従来例では、フレームメモリと各イメージプロセス回路間のデータのやり取りが多く、バスのデータ転送量が増大する。
【００１６】
特許文献２では、１ラインを処理するのに、大容量バッファメモリが必要である。また、バッファメモリの容量で処理できる画像サイズが制限されてしまう。
【００１７】
また、特許文献３では、ランダムアクセスで処理するのに、バッファメモリは必要ないが、一般的にＳＤＲＡＭ等のランダムアクセスビデオメモリをランダムアクセスすると、転送時間がかかる。
【００１８】
そこで、本発明は上記の問題に鑑み、バスの転送量やメモリの容量を大きく増大させることなく、歪補正処理を実現できる画像処理装置及び画像処理方法を提供することを目的とするものである。
【００１９】
【課題を解決するための手段】
請求項１の発明は、画像データに対して歪補正処理を行う歪補正手段を有する画像処理装置において、前記歪補正手段は、前記画像データの一部を格納するメモリ部と、前記メモリ部に対するデータの書き込みおよび読み込みを制御するメモリ制御部と、を有し、前記メモリ部から読み出した画像データに対する補間演算を行うことを特徴とする。
【００２０】
この構成では、内部バッファとしてのメモリ部に画像データの一部を格納して、そのデータを利用して歪補正処理のための補間演算を行うことができる。
【００２１】
請求項２の発明は、請求項１の画像処理装置において、前記メモリ制御部は、前記メモリ部への書き込みの際は、列方向に一列に並んだ一定数分の画素からなる画像データ（ユニットライン：ＵＬ）を単位として書き込むように制御し、前記メモリ部からの読み出しの際は、歪補正処理後の画像が前記ＵＬを単位として出力されるように、前記メモリ部に格納された画像データに対して読み出し制御することを特徴とする。
【００２２】
この構成では、メモリ部に対してＵＬを単位として書き込み、読み出しを行うので、メモリ部のバッファ容量としては光学的歪量に応じて数ＵＬ分、すなわち少なくとも１ＵＬ分の容量があればよく、バスの転送量やメモリの容量を大きく増大させることなく、歪補正を実現できる。
【００２３】
請求項３の発明は、請求項２の画像処理装置において、前記メモリ制御部は、前記ＵＬの最初に処理される画素の座標位置に対して、行方向に対して前側および後側に所定幅の領域（それぞれｐｒｅＵＬＢ、ｐｏｓｔＵＬＢ）を設け、前記ＵＬの処理中は他の処理によって前記領域が上書きされないよう制御することを特徴とする。
【００２４】
この構成により、処理に必要なバッファとしてのメモリ部の前記ｐｒｅＵＬＢ、ｐｏｓｔＵＬＢの領域のデータが上書きされないよう確保できる。
【００２５】
請求項４の発明は、請求項２又は３の画像処理装置において、前記メモリ制御部は、さらに、前記ＵＬの処理中に、前記歪補正手段の前段からのデータを入力するために開放可能なバッファ量を算出するバッファ開放量算出回路と、前記歪補正手段の後段に対するデータ送信の可否を判定するデータ送信可否判定回路とを有し、前記バッファ開放量算出回路には、前記ＵＬの処理における最初の画素に対する補間座標を中心として前記ｐｏｓｔＵＬＢが入力され、データ送信可否判定回路には前記ｐｒｅＵＬＢが入力され、バッファ開放量算出回路は前記バッファ開放量を前記ｐｏｓｔＵＬＢの値を参照して算出し、データ送信可否判定回路は前記ｐｒｅＵＬＢの値を参照してデータ送信可否の判定を行うことを特徴とする。
【００２６】
この構成により、処理に必要なバッファとしてのメモリ部を少ない容量で効率的に使用することができる。
【００２７】
請求項５の発明は、請求項３又は４の画像処理装置において、前記ｐｒｅＵＬＢ値、ｐｏｓｔＵＬＢ値は、それぞれ歪中心に対して前側と後側とで異なる値を設定可能であることを特徴とする。
【００２８】
この構成では、図１４のように、歪中心の左右ではｐｒｅＵＬＢ、ｐｏｓｔＵＬＢの値が異なることに基づいて、これらの値を、どちらにも対応できるよう、図１５のように大きく取ると、処理に必要なバッファを広く確保しておかなければならず、バッファの無駄である。歪中心前後でｐｒｅＵＬＢ、ｐｏｓｔＵＬＢを変化することにより、内部バッファの使い方に無駄をなくし、小さなバッファ容量で比較的大きな歪補正を行うことが可能となる。
【００２９】
請求項６の発明は、請求項１〜４のいずれか１つの画像処理装置において、前記画像処理装置は、さらにバッファの空き領域を検出するバッファ空き容量監視回路を有し、該バッファ空き容量監視回路によりバッファ内の空き領域が検出されると、該空き領域へのデータの書き込みを可能とすることを特徴とする。
【００３０】
この構成により、データ出力中に入力も可能なパイプライン的な動作を可能とする。
【００３１】
請求項７の発明は、請求項１の画像処理装置において、前記メモリ部は、データのリード動作とライト動作が同時に可能な複数のメモリからなり、前記メモリ制御部は、さらに、前記メモリ部へのデータ書込み制御を行う書込みアドレス生成回路と、前記メモリ部に格納されている画像データから補間演算に必要なデータを同時に読み出すためのアドレスを生成する読出しアドレス生成回路と、を有し、前記データ書込み制御は、同時に読み出すデータをそれぞれ異なるメモリに書き込むものであることを特徴とする。
【００３２】
この構成によれば、バッファ内にある画像データから、補間演算に必要なデータとして任意の座標の周辺の複数の画素（例えば、１６画素）情報を同時に読み出すことが可能となり、演算処理を速やかに行える。
【００３３】
請求項８の発明は、請求項３〜５のいずれか１つの画像処理装置において、前記画像処理装置は、さらに、歪補正処理された座標が前記ＵＬの処理における最初の画像に対する補間座標に対し、列方向に前記ｐｒｅＵＬＢ、ｐｏｓｔＵＬＢを逸脱する座標が生成された時、若しくは、歪補正された座標が前段から入力されない座標となった時にエラーを検出して出力するエラー検出回路を有することを特徴とする。
【００３４】
この構成では、パラメータの誤入力や、歪補正量の見積もりが過少だった時にエラー検出回路が検知してＣＰＵに知らせる。特に、ｐｒｅＵＬＢ、ｐｏｓｔＵＬＢの設定オーバー（図１３参照）については、事前に正確な見積もりを行えない場合があるので、オーバーする量をＣＰＵに通知することで設定値を修正しやすくする。
【００３５】
請求項９の発明は、請求項３〜５のいずれか１つの画像処理装置において、前記エラー出力がなされたときはレジスタを再設定して画像処理を再実行することが可能であることを特徴とする。
【００３６】
請求項１０の発明は、請求項２〜６のいずれか１つの画像処理装置において、１ＵＬの処理終了後、次の１ＵＬまたはさらにその次の１ＵＬの処理を開始する際の最初の補間座標が演算された後に１ＵＬ単位の処理を終了することを特徴とする。
【００３７】
この構成では、１ＵＬ処理が終わった後に開放できるバッファの量は、次のＵＬ先頭座標が決まらなければ分からない（図１７参照）ことを利用する。内部バッファは小さいので、使わなくなったデータが格納されている部分をできるだけ早くに開放する為、次のＵＬ先頭座標を算出して開放量を取得（図１８参照）し、バッファを開放することで内部バッファを有効に利用することができる。
【００３８】
請求項１１の発明は、画像データに対して歪補正処理を行う画像処理方法において、前記歪補正処理を行うに際は、データの書き込みおよび読み込みが制御されるメモリ部に、前記画像データの一部を格納し、該メモリ部から読み出した画像データに対して補間演算を行うことを特徴とする。
【００３９】
この方法では、内部バッファとしてのメモリ部に画像データの一部を格納して、そのデータを利用して歪補正処理のための補間演算を行うことができる。
【００４０】
請求項１２の発明は、請求項３〜５のいずれか１つに記載の画像処理装置において、前記画像処理装置は、さらに、前記歪補正手段が歪補正処理を行う入力画像範囲を算出する歪補正範囲算出部を有することを特徴とする。
【００４１】
請求項１３の発明は、請求項１２記載の画像処理装置において、前記歪補正範囲算出部は、所定の歪補正式を適用して座標変換可能であり、歪補正後の出力画像範囲において、周辺４辺の各辺に対応する画素を座標変換して生成した変換座標の最大値と最小値、および４頂点に対応する画素を座標変換して生成した変換座標、の少なくともいずれかを算出し、前記ｐｒｅＵＬＢおよびｐｏｓｔＵＬＢは、前記歪補正範囲算出部の出力結果から算出することを特徴とする。
【００４２】
これらの構成では、前述したｐｒｅ，ｐｏｓｔＵＬＢはレジスタに設定されるが、それらの値を生成するためには、歪の変形を考慮して画像データの入力範囲を算出可能とするサポート機能が必要となる。このサポート機能は、歪補正手段の歪補正処理機能に対して歪補正範囲算出部として設けられる。
【００４３】
【発明の実施の形態】
発明の実施の形態について図面を参照して説明する。
図１は本発明の一実施の形態の画像処理装置の全体構成を示すブロック図である。図２は図１における歪補正処理部の構成を示すブロック図である。
【００４４】
図１の画像処理装置においては、バス３に接続された各部の制御を行うＣＰＵ４の制御により、ＣＣＤ１からの撮像信号をプリプロセス回路２で画素欠陥処理やＡ／Ｄ変換等を行い、得られた画像データを、バス３を介してフレームメモリ５に一旦記憶する。フレームメモリ５は、ＳＤＲＡＭ等で構成され、画像処理前のデータ及び画像処理後のデータを格納するメモリである。次いで、フレームメモリ５から読み出した画像データをバス３を介して、第１データ順序変換部６に入力する。第１データ順序変換部６は、後に図２６（ａ）で説明するように、ブロック単位のデータを記憶可能なメモリを複数、ここでは２つ備えている。第１データ順序変換部６は、  フレームメモリ５から行方向にデータを読み出して記憶した後、列方向にデータを順に読み出し、イメージプロセス回路７に出力する。
【００４５】
イメージプロセス回路７は入力したデータに対して所定の画像処理を行って次段の歪補正手段としての歪補正処理部８に転送する。歪補正処理部８は入力したデータに対して歪補正処理を行って次段の第２データ順序変換部９へ転送する。第２データ順序変換部９は、後に図２６（ｂ）で説明するように、ブロック単位のデータを記憶可能なメモリを複数、ここでは２つ備えている。第２データ順序変換部９は、  歪補正処理部８から列方向にデータを読み出して記憶した後、行方向にデータを順に読み出し、ＪＰＥＧ処理部１０に転送する。そして、ＪＰＥＧ処理部１０でＪＰＥＧ圧縮処理を行い、処理データをフレームメモリ５に一旦記憶し、フレームメモリ５から読み出した処理データをメモリカード等１１に記録するようになっている。
【００４６】
歪補正処理部８は、図２に示すように、歪補正後の補正画像の位置（補間位置という、Ｘ，Ｙ）とこれに対応した歪補正前の元の画像の位置（Ｘ’，Ｙ’）を生成する補間座標生成部８１と、歪補正処理部８の前段ブロックの回路からの画像データの一部を一時的に格納しておくバッファメモリ（以下、単にバッファ）としての内部メモリ部８２と、その内部メモリ部８２に対する書き込み及び読み出しの制御を行うメモリ制御部８３と、変換した歪補正前の画像位置の座標（Ｘ’，Ｙ’）に従って画像処理をしてデータの歪補正をする補間演算部８４と、を有して構成されている。
【００４７】
補間座標生成部８１は、図２に示すように、補間座標（Ｘ，Ｙ）を生成する座標生成部８１１と、生成された補間座標（Ｘ，Ｙ）に対して所定の歪補正式［式１］（後述する）を適用して変換した補正前の座標（Ｘ’，Ｙ’）を出力する歪補正座標変換部８１２と、座標生成部８１１からの補間座標（Ｘ，Ｙ）と歪補正座標変換部８１２からの変換座標（Ｘ’，Ｙ’）とを選択的に出力可能なセレクタ８１３と、で構成されている。歪補正処理部８における座標生成部８１１，歪補正座標変換部８１２，セレクタ８１３，メモリ制御部８３については、制御データを格納した制御レジスタ８５に設定された各ブロックに対する設定値に従って動作する。また、処理結果のステータスなどをＣＰＵから参照することができる。
【００４８】
以上のように構成された本発明による画像処理装置においては、上記第１データ順序変換部６からＪＰＥＧ処理部１０までは、バス３を介することなく、該バス３とは異なる情報伝達経路でパイプライン処理可能なように接続されていて、画像データを、２次元的な画素配列における所定のブロック単位で転送して処理するようになっている。このようにバス３を介したデータ転送は、フレームメモリ５から第１データ順序変換部６への転送と、ＪＰＥＧ処理部１０からフレームメモリ５への転送及びフレームメモリ５からメモリカード１１への転送だけとなり、したがってフレームメモリと各イメージプロセス回路との間でデータのやりとりを行っていた従来例（図２４（ｂ））と比べて、バス３によるデータ転送量を大幅に低減させることができ、バス３の負荷を大幅に軽減することが可能となる。また、この図１に示す例においては、画像処理を行うイメージプロセス回路７を１つのみ設けているが、複数あっても構わない。さらに、図では、イメージプロセス回路７の後段に歪補正処理部８が設けられているが、逆の構成であっても構わない。
【００４９】
初段のイメージプロセス回路７と２段目のイメージプロセス回路である歪補正処理部８で構成されるイメージプロセス回路部では、各イメージプロセス回路７，８の前段或いは内部にパイプラインレジスタとして、図示しない小容量のメモリが配置されていて、該小メモリを介して、各イメージプロセス回路７，８がパイプライン処理動作を行うように構成されている。これらの小容量のメモリは、各イメージプロセス回路７，８で空間的な画像処理を行う場合、画像処理に必要な周辺データの記憶をするために、また画像データをブロック単位で読み出して配列換えなどを行って処理する必要があるために、設けられている。
【００５０】
イメージプロセス回路７からイメージプロセス回路８へのデータ転送は、後段のイメージプロセス回路である歪補正処理部８の内部メモリ部８２に空きがあると、歪補正処理部８から前段のイメージプロセス回路７に対してリクエスト（ＲＥＱ）を送信し、これに対して前段のイメージプロセス回路７からリクエスト受付（ＧＲＡＮＴ）を受信すると同時にバッファである内部メモリ部８２の空き情報を１つ減らす。後段ブロックの歪補正処理部８でこのリクエストとリクエスト受付を繰り返し、空きが０になったらリクエストを取り下げる。後段ブロックである歪補正処理部８は、前段ブロックからのリクエスト受付（ＧＲＡＮＴ）と同時もしくはリクエスト受付（ＧＲＡＮＴ）の後に前段ブロックのイメージプロセス回路７からデータが流入し、内部メモリ部８２へ書込みをする。複数段のイメージプロセス回路がパイプライン処理可能なように接続されている場合は、上記のようにして前段から後段へデータが転送され、各イメージプロセス回路のメモリ部にデータが書き込まれ、所定の画像処理が行われた後、後段からのリクエストに基づいて前段ブロックから後段へと画像処理を行いながら順次データが転送されていくことになる。
【００５１】
図３は歪補正処理部８における座標変換の概念図を示している。図３（ａ）は元データである撮像画像データ、同図（ｂ）は補正画像、同図（ｃ）は（ｂ）の補正画像の座標位置（Ｘ，Ｙ）に対して（ａ）の元データの座標上に変換された座標位置Ｐでのデータの座標（Ｘ’，Ｙ’）（この座標は元データを実際に構成する複数の画素の位置には必ずしも正確には一致しない座標位置にある）を示している。そのＰ点での座標位置（Ｘ’，Ｙ’）はそのＰ点の周辺の画素１６点の座標を使って算出されると共にＰ点での画像データはその周囲の前記１６点の画素データを用いて補間演算される。補間演算部８４にて点Ｐの位置のデータをその周囲の１６点の画素値（輝度データ）から補間演算するべく処理が行われる。図２の補間位置生成部８１１で補間座標を生成するというのは、図３（ｂ）の補正画像側でどこの画素位置（Ｘ，Ｙ）を指し示すか、ということである。
【００５２】
［式１］では、歪補正後の画素位置（Ｘ，Ｙ）に対する歪補正前の画素位置（Ｘ’，Ｙ’）を算出することができる。但し、歪補正前の画素位置（Ｘ’，Ｙ’）は元画像データ上の画素位置に対応した整数値になるとは限らないことは前述した通りである。
【００５３】
［式１］に従うと、図３（ｂ）の座標（Ｘ，Ｙ）が同図（ａ）のように座標（Ｘ’，Ｙ’）に変換される。これにより、元データの中のどこの座標位置のデータを作成すれば、よいかを知ることができ、その位置（Ｘ’，Ｙ’）のデータを後述する１６点補間処理を行う補間式［式２］を用いて周囲１６点の既知の画素値（図５の黒丸印の入力画像データ）から算出して得ることができる。
【００５４】
【式１】
2005045514.tif 000003
［式１］におけるＺは、歪中心（Ｘｄ，Ｙｄ）から今注目している点（Ｘ，Ｙ）までの距離である。［式１］によって、補正画像の点（Ｘ，Ｙ）に対して歪んでいる元画像の方の座標（Ｘ’，Ｙ’）が算出される。［式１］について補足説明すると、Ｍは光学系のデータを用いて理論的に補正した際、補正後に画像がはみ出したり、不足したりする現象を補正するための補正倍率である。Ｓｘ，Ｓｙは間引き取込みなど、縦横で空間的なサンプリング間隔が異なる現象の補正をするためのサンプリング比である。Ｘｏｆｆ，Ｙｏｆｆは歪補正処理によって、歪補正処理後に、被写体位置が撮影時の位置とはずれてしまう現象の補正をする中心ずれの値である。
【００５５】
本発明に係る［式１］では、高次項（具体的にはＺ４、Ｚ６、…）を考慮することで、より複雑な陣笠型の歪（図４参照）にも対応できるようにしている。また、中心が一致していても撮像素子の一部しかデータを取り込まない場合や、光軸中心と撮像素子中心がずれている場合など、歪中心（Ｘｄ，Ｙｄ）を考慮する必要がある。さらに、歪補正処理により被写体位置が撮影時の位置からずれる現象を補正するため、中心ずれ補正値（Ｘｏｆｆ，Ｙｏｆｆ）を考慮する必要がある。間引き取込みの場合や輝度データ（Ｙ）と色データ（Ｃｂ，Ｃｒ）からなるＹＣ画像を処理する場合は、Ｘ，Ｙで空間的なサンプリングが異なる。そこで係数としてサンプリング比（ＳＸ，Ｓｙ）を導入して、座標変換を補正するようにしている。
【００５６】
次に、図２５，図２６を参照して画像データの書き込み及び読み出しの処理及び順序について説明する。
図２５は、本実施の形態におけるフレームメモリからの画像データの読み出し順序を説明する図である。
【００５７】
画像データは、通常は、ライン方向、つまり行方向にスイープさせて書き込まれていて、読み出し時は行方向に読み出されるようになっており、１ラインの画像データを全て読み出して、次に隣接するラインの画像データを全て読み出すといった動作を繰り返して行うのが普通である。
【００５８】
これに対して、本発明に係る画像処理装置は、行方向にスイープさせて書き込まれた画像データを、列方向にある一定の長さを単位に、行方向の画像データを順番にイメージプロセス部７に入力し、以降、順次隣の列をイメージプロセス部７に入力して、画像の右端まで繰り返して得られる小領域（矩形状の画像データ）をブロックライン（ＢＬ）と呼ぶ。
【００５９】
こうした画像データの読み出しを可能にするための第１データ順序変換部６と、第２データ順序変換部９との構成を、図２６を参照して説明する。図２６は、第１，第２データ順序変換部の構成を示すブロック図である。
【００６０】
第１データ順序変換部６は、図２６（ａ）に示すように、ブロック単位の画像データを記憶可能なメモリを複数、ここでは２つ備えており、この２つのメモリ６ａとメモリ６ｂが書き込み側，読み出し側の各スイッチにて書き込み，読み出しが交互に切り換えられるようになっている。すなわち、フレームメモリ５は、書き込み側のスイッチにて、これらメモリ６ａとメモリ６ｂとに切換可能に接続されているとともに、イメージプロセス部７も読み出し側のスイッチにてこれらのモリ６ａとメモリ６ｂとに切換可能に接続されていて、フレームメモリ５がメモリ６ａとメモリ６ｂとの一方に接続されているときには、該メモリ６ａとメモリ６ｂとの他方がイメージプロセス部７に接続されるように切り換えられる。すなわち、メモリ６ａ，６ｂは、フレームメモリ５とイメージプロセス部７との両方に同時に接続されることがないようにスイッチングされ、交互に書き込み，読み出しが行われるようになっている。
【００６１】
フレームメモリ５に記憶されているフレーム画像の一部は、ブロック単位でライン方向に読み出され、一方のメモリ、ここでは例えばメモリ６ａに記憶される。
【００６２】
これと並行して、メモリ６ｂからは、既にフレームメモリ５から読み出されて記憶されているブロック単位の画像データが、列方向（縦方向）に順に読み出されて、イメージプロセス部７へ出力される。
【００６３】
フレームメモリ５からメモリ６ａへの書き込みと、メモリ６ｂからイメージプロセス部７への読み出しが終了すると、書き込み側のスイッチおよび読み出し側のスイッチが切り換えられて、次に、フレームメモリ５からメモリ６ｂへ次のブロック単位の画像データの書き込みが開始されるとともに、メモリ６ａからイメージプロセス部７へのブロック単位の画像データの読み出しが開始される。
【００６４】
第２データ順序変換部９も、図２６（ｂ）に示すように、上記第１データ順序変換部６とほぼ同様に構成されていて、ほぼ同様に動作するようになっている。
【００６５】
すなわち、第２データ順序変換部９は、メモリ９ａ，メモリ９ｂと、書き込み側スイッチ，読み出し側スイッチとを有して構成されている。
【００６６】
そして、該第２データ順序変換部９の動作時には、歪補正処理部８からの書き込みがメモリ９ａとメモリ９ｂとの一方に対して列方向（縦方向）に行われ、メモリ９ａとメモリ９ｂとの他方からは行方向（横方向）に読み出しが行われて、ＪＰＥＧ処理部１０へ出力されるようになっている。
図６は、図２における歪補正処理部８の詳細な構成を示している。
図６の各部と図２の各部との対応関係を説明する。図６における補間位置算出回路２２が図２の補間位置生成部８１１に、セレクタ２４が図２のセレクタ８１３に、歪補正係数補正回路２１及び補間位置補正回路２３が図２の歪補正座標変換部８１２に、それぞれ対応している。また、図６における２ポートＳＲＡＭ２６が図２の内部メモリ部８２に対応し、書込みアドレス生成回路２８，バッファ空き容量監視回路２９，データ送信可否判定回路３０，バッファ開放量算出回路３１及び読出しアドレス生成回路２５が図２のメモリ制御部８３に、補間回路２７が図２の補間演算部８４に、それぞれ対応している。エラー検出回路３２は、図２には図示していないがメモリ制御部８３に接続して設けられている。エラー検出回路３２は、歪補正処理において歪量が大きくなり後述するｐｒｅＵＬＢ、ｐｏｓｔＵＬＢの設定値を越える歪が発生したときに、エラー（ＥＲＲＯＲ）としてＣＰＵ４に伝える機能を有するものである。
【００６７】
補間位置算出回路２２は、歪補正処理部８の後段回路からのリクエストに応じて後段回路へグラント（リクエスト受付）を返したときにそのグラントをトリガとして、１ユニットライン（以下、１ＵＬという）分の補間位置（Ｘ１，Ｙ１）を算出するものである。ここで、１ＵＬとは、前述したブロックライン処理において、メモリ部への書き込み，読み出しの際に、列方向に一列に並んだ一定数分の画像データを書き込んだり，読み出したりする際の一単位である。つまり、１ＵＬは、ブロックライン（ＢＬ）上の列方向に一列に並んだ一定画素数のデータを指している。
【００６８】
補間位置補正回路２３は、歪補正係数算出回路２１からの歪補正係数Ｆを補間位置（Ｘ１，Ｙ１）に乗算して、歪補正前の元データの座標位置（Ｘ’，Ｙ’）を計算する。セレクタ２４は、（Ｘ１，Ｙ１）と（Ｘ’，Ｙ’）を選択するもので、歪補正を行う場合は（Ｘ’，Ｙ’）を選択して出力し、拡大・縮小処理（リサイズ）のみを行う場合は（Ｘ１，Ｙ１）を選択して出力する。
【００６９】
２ポートＳＲＡＭ２６は、歪補正処理部８内におけるデータを格納するバッファである。
【００７０】
読出しアドレス生成回路２５は、補間位置に対応する２ポートＳＲＡＭ１６内のアドレス（ＡＤＲ）を生成したり、２ポートＳＲＡＭ２６からの出力を整列するための制御信号を出力したり、出力画像データに同期して書き込み制御信号ＷＥ＿Ｎを出力したり、図７及び［式２］に示すＤ０が２ポートＳＲＡＭ上のどこの位置かを知らせるデータ列制御信号を出力したりする。
【００７１】
書き込みアドレス生成回路２８は、書き込み制御信号ＷＥに合わせて内部メモリである２ポートＳＲＡＭ２６のアドレス（ＡＤＤＲＥＳＳ）を生成したり、１ＵＬ分のデータ入力が完了したら、その内部カウンタ（ＢＬＣ）をカウントアップする。
【００７２】
データ送信可否判定回路３０は、ＢＬＣ値，本回路の動作状態，次のＵＬ先頭座標，歪補正処理部８の後段回路からのリクエスト（ＲＥＱ）状態とから、後段回路からのＲＥＱ信号に対してグラント（ＧＲＡＮＴ＿Ｎ）を送信できる状態にあるかを判定し、グラント送信可能ならＧＲＡＮＴ＿Ｎ＝１とする機能を有する。
【００７３】
補間回路２７は、補間位置に対応する画像データにつき、１６点補間を行う。バッファ開放量算出回路３１は、現在処理中のＵＬ先頭座標と、次に処理予定のＵＬ先頭座標の整数部の差をバッファ開放量（図１７参照）として算出する。
【００７４】
バッファ空き容量監視回路２９は、内部バッファとしての２ポートＳＲＡＭ２６に格納されているデータ（ＵＬ）量を保持し、バッファに空きがあれば、歪補正処理部８の前段回路に対してリクエスト（ＲＥＱ＝１）を送信する。
【００７５】
次に、図６の歪補正処理部８の回路動作を説明する。
まず、内部メモリ部（バッファ）である２ポートＳＲＡＭ２６に空きがある場合、バッファ空き容量監視回路２９から前段回路に対してデータ要求としてのリクエスト（ＲＥＱ）を送信すると、バッファ空き容量監視回路２９は前段回路からリクエスト受付としてのグラント（ＧＲＡＮＴ）を受信し、この受信と同時に２ポートＳＲＡＭ２６に格納可能なＵＬ数を記憶するカウンタ（回路２９内にある）を１つ減らす。１回のリクエストとグラントで１ＵＬを一動作単位としてデータ転送する。上記カウンタが０になったらリクエストを取り下げる。
【００７６】
そして、前段回路から書込みアドレス生成回路２８ヘデータが流入し、２ポートＳＲＡＭ２６への書込みが行われる。１ＵＬ入力毎に書込みアドレス生成回路１８の内部カウンタ（ＢＬＣ）がアップする。
【００７７】
２ポートＳＲＡＭ２６は、補間回路２７にて例えば１６点補間を行えるように、図８の如く読出しと書込みが同時に行える２ポートＳＲＡＭが４×４の計１６個で構成されている。
【００７８】
ここで、図８を用いて、２ポートＳＲＡＭ２６を説明するが、メモリの数や各メモリの大きさは異なっていても構わない。例えば、図８では、ブロックラインの幅（ＵＬの長さ）を９６としているが、もっと長くしても短くしても構わない。回路規模と補正性能とのバランスで決めればよい。また、４×４（計１６個）も、４点補間であれば２×２（計４個）で構わない。補間方式（何点で補間するか）に合わせて決めればよい。
【００７９】
図８は、１６個の２ポートＳＲＡＭからなるメモリ空間で、横方向は入力されるＵＬ順であるが、縦方向は各２ポートＳＲＡＭごとに付したアドレスである。Ｎを整数とし、処理のある時点での状態を説明する。縦方向に並んだ４つの各２ポートＳＲＡＭであるＮｏ．０，４，８，１２に格納するデータは、４Ｎ，４Ｎ＋４，４Ｎ＋８，４Ｎ＋１２番目のＵＬのデータであり、Ｎｏ．１，５，９，１３に格納するデータは、４Ｎ＋１，４Ｎ＋５，４Ｎ＋９，４Ｎ＋１３番目のＵＬのデータであり、Ｎｏ．２，６，１０，１４に格納するデータは、４Ｎ＋２，４Ｎ＋６，４Ｎ＋１０，４Ｎ＋１４番目のＵＬのデータであり、Ｎｏ．３，７，１１，１５に格納するデータは、４Ｎ＋３，４Ｎ＋７，４Ｎ＋１１，４Ｎ＋１５番目のＵＬのデータである。
【００８０】
横方向に並んだ４つの各２ポートＳＲＡＭであるＮｏ．０，１，２，３及びＮｏ．４，５，６，７及びＮｏ．８，９，１０，１１及びＮｏ．１２，１３，１４，１５の各組についても同様に格納されている。
【００８１】
図９を使って、各２ポートＳＲＡＭにデータが書き込まれる様子を説明する。図９では、図９（ａ）に示すように、幅８ライン（画素）のブロックラインを想定しており、データは、ＵＬ単位に「１，２，…，ｉ，ｍ」、「５，６，…，ｊ，ｎ」、「９，１０，…，ｋ，ｏ」、…という順序で入力される。図９（ｂ）は同図（ａ）  に示した書込み順番のデータが４×４の１６個の２ポートＳＲＡＭＮｏ．０〜Ｎｏ．１５上のどこに書き込まれていくかを示している。例えばＮｏ．０，Ｎｏ．４，Ｎｏ．８，Ｎｏ．１２には、図９（ａ）  の左側縦一列の１ＵＬ分の画像データ（順番１〜ｍで示されるデータ）が分散されて格納されていく。なお、図８に示される縦方向の２ポートＳＲＡＭＮｏ．０，Ｎｏ．４，Ｎｏ．８，Ｎｏ．１２の各縦ラインごとに付された表記０〜９２，１〜９３，２〜９４，３〜９５は、図９（ａ）  で示される各ユニットライン（１〜ｍ…、５〜ｎ…、９〜ｏ…、・・・・）の表記とは異なっている。これは、図９（ａ），（ｂ）では、４×４の１６個の画像データにつき書き込み順が分かるように１〜１６，ａ〜ｐ，Ａ〜Ｐ，…と１６個の塊ごとに符号を付してあるためである。図８の場合はその縦方向の２ポートＳＲＡＭＮｏ．０，Ｎｏ．４，Ｎｏ．８，Ｎｏ．１２の各縦ラインごとに付された表記は、縦方向の１つのＵＬにおけるデータ順に相当する。２ポートＳＲＡＭＮｏ．０，Ｎｏ．４，Ｎｏ．８，Ｎｏ．１２のそれぞれには１つのＵＬ画素データＮｏ．０〜９５が交互に分散して記載されている。従って、図８の縦方向に並んだ４つの各縦ラインには１つのユニットライン（ＵＬ）の画素順（０〜９５）の何番目の画素であるかを示す表記が付されている。図８の２ポートＳＲＡＭのＮｏ．０の縦方向にはＵＬの４の倍数の画素（０，４，８…９２）が格納してあり、２ポートＳＲＡＭのＮｏ．４の縦方向にはＵＬの（４の倍数）＋１の画素（１，５，９…９３）が格納してあり、２ポートＳＲＡＭのＮｏ．８の縦方向にはＵＬの（４の倍数）＋２の画素（２，６，１０…９４）が格納してあり、２ポートＳＲＡＭのＮｏ．１２の縦方向にはＵＬの（４の倍数）＋３の画素（３，７，１１…９５）が格納してある。さらに、２ポートＳＲＡＭのＮｏ．１，２，３及びＮｏ．５，６，７及びＮｏ．９，１０，１１及びＮｏ．１３，１４，１５の各組についても同様に格納してある。
【００８２】
再び図８に戻って、１ＵＬ分のデータは縦方向に並ぶ４つの２ポートＳＲＡＭに１画素づつ順に格納されている。最初のＵＬデータはＮｏ．０，４，８，１２（図８の４Ｎのライン）に書き込まれる。次のＵＬデータはＮｏ．１，５，９，１３（図８の４Ｎ＋１のライン）に書き込まれる。図８のバッファ形態では、歪補正処理によって補間位置がどのように移動しても、バッファ内の任意の座標周辺１６点を１回のアクセスで同時に抽出することができる構成としてある。
【００８３】
データ送信可否判定回路３０が後段回路からリクエスト（ＲＥＱ＿Ｎ）を受信し、次のＵＬデータが送れる状態にあればリクエスト受付（ＧＲＡＮＴ＿Ｎ）を出力する。このリクエスト受付（ＧＲＡＮＴ＿Ｎ）は自分自身へのトリガとなり、補間位置算出回路２２が動作を開始し、１ＵＬ分動作したら次のＵＬ先頭座標を算出して終了する。
【００８４】
補間位置算出回路２２が動作開始して補間位置（Ｘ１，Ｙ１）を出力するのと同期するようにデータ送信可否判定回路３０からは歪補正係数算出回路２１へ動作トリガ（ｔｒｉｇ）を送る。歪補正係数算出回路２１も補間位置算出回路２２と同様、１ＵＬ分動作したら次のＵＬ先頭座標を算出して終了する。
【００８５】
読み出しアドレス生成回路２５は、入力される補間座標から、２ポートＳＲＡＭ２６の１６個夫々に読み出しアドレスを発行する。
【００８６】
次に、読み出し及び補間の方法について説明する。
補間方法を図７に示す。図７は補間回路２７における補間演算のイメージ図である。補正座標位置Ｐの座標（Ｘ’，Ｙ’）は前出の［式１］で既に求めてある。この座標における画素値（輝度データ）を求めるのに、座標Ｐ（Ｘ’，Ｙ’）の周辺１６点の画素データＤ０〜Ｄ１５から求める。その内、Ｄ０が１６個のメモリのどのメモリから来ているかが分かれば、Ｄ１，Ｄ２…，Ｄ１５はＤ０に対する位置関係から分かる。後述するように、Ｄ０は補間位置の座標によって求まる。
【００８７】
図１０は１６個の２ポートＳＲＡＭからなるバッファからの読出し例を示している。今、補間位置（Ｘ’，Ｙ’）がＸ’＝１０．…，Ｙ’＝５０．…（…は小数点以下の数字）とすると、Ｘ’＝１０．…は（４×０＋１０）以上であるから、横方向には２ポートＳＲＡＭの４Ｎ＋１０番目のＵＬより若干右側に補間位置が来る。Ｙ’＝５０．…は（４×１２＋２）以上であり、４Ｎ＋１０番目のＵＬで、５０番目の画素が格納されているメモリ（Ｎｏ．１０）が図７における画素Ｄ５を出力するので、Ｄ０を出力するメモリは、その左上にあるＮｏ．５となる。
【００８８】
図７のＤ０〜Ｄ１５に対応する画素データは図１０の○部であるので、それらが出力されるようにアドレスを生成する。
【００８９】
Ｎｏ．０から出力される画像データがＤ０には対応しない。図１０の例では、Ｎｏ．５からの出力がＤ０に対応する。このため、どのメモリからどのデータが出力されているかを識別するため、読出しアドレス生成回路２５からデータ列制御信号を出力し、これによって、補間演算を行う補間回路２７はＤ０が２ポートＳＲＡＭ２６のどこから出ているかを認識して１６点補間を行う。
【００９０】
画素データＤ０〜Ｄ１５が分かれば、［式２］の補間式による補間処理を行うことによって、補正座標位置の画素データをＤｏｕｔとして求めることができる。
【００９１】
【式２】
2005045514.tif 000004
最後のＵＬデータ出力の後、バッファ開放量算出回路３１は今処理し終わったＵＬ先頭座標と次のＵＬ先頭座標との差を計算し（図１７参照）、必要なくなったデータの蓄積されているバッファを開放するため、バッファ開放量をバッファ空き容量監視回路２９へ出力する。ただし、歪中心を跨ぐ時のバッファ開放量は、図１６（ｂ）に示すようにｐｏｓｔＵＬＢ１，ｐｏｓｔＵＬＢ２の値変化も考慮した量を開放することが好ましい。  図１６（ａ）に示すｐｒｅＵＬＢ、ｐｏｓｔＵＬＢとは、ＵＬを形成する画素のうち、最初の画素の座標位置に対して、行方向に対して前側及び後側に所定幅の領域を設けたもので、これらをそれぞれｐｒｅＵＬＢ、ｐｏｓｔＵＬＢと定義している。歪中心を跨いだ時はバッファ開放量を通常のＵＬ先頭座標の差ではなく、参照値の変わるｐｏｓｔＵＬＢ（ＵＬＢ：Ｕｎｉｔ  Ｌｉｎｅ  Ｂｕｆｆｅｒの略、ユニットラインバッファ）の変化量を参照してバッファ開放量を調節する（調整量は、ｐｏｓｔＵＬＢ１−ｐｏｓｔＵＬＢ２で、図１６（ｂ）参照）。
【００９２】
（ＵＬ先頭座標の差）＋（調整量）がマイナスになる場合は、マイナス値を記憶しておく。処理が進んでバッファ開放量がマイナス値を超えるまでバッファの開放を行わない。
【００９３】
前述のバッファ開放量の算出と共に、バッファ開放量算出回路３１は次のＵＬ処理にあとどれだけ前段回路からデータが必要かをデータ送信可否判定回路３０へ送信する。
【００９４】
バッファ空き容量監視回路２９は前述のバッファ開放量の算出によってバッファに空きができたら、前述の前段回路へのリクエストを行う。
【００９５】
データ送信可否判定回路３０は書込みアドレス生成回路２８の内部カウンタ（ＢＬＣ）とバッファ開放量算出回路３１からの人力とｐｒｅＵＬＢ値とに基づいて、次のＵＬデータを送れるかどうかを判断する。データ送信可否判定回路３０は、後段回路のリクエストに対してリクエスト受付（ＧＲＡＮＴ＿Ｎ）を返す。
【００９６】
エラー検出回路３２は、読出しアドレス生成回路２５に入力される座標がブロックライン（ＢＬ）の左端（図１１参照）や右端を逸脱したり、ブロックライン（ＢＬ）の上下端（図１２参照）を逸脱したり、歪量がｐｒｅＵＬＢ、ｐｏｓｔＵＬＢの設定値を逸脱（図１３参照）した場合にエラーを出力する。これらのエラーの出力は、座標を判別して出力することになる。図１１及び図１２の場合には、エラーを出力するが、処理は継続する。図１３の場合も、エラーを出力するが、処理は継続する。図１３のｐｒｅＵＬＢ、ｐｏｓｔＵＬＢの場合については、エラーを出力するだけではなく、逸脱した量を記憶し、レジスタに設定してＣＰＵ４がデータとして取得できるようにしておく。
【００９７】
このように、ブロックライン処理で、出力側の画像に対して入力側の画像を補間算出しているときに入力画像の範囲からはみ出すようなときがある。その場合、入力範囲にデータがない部分で補間データを生成することになり、エラー検出回路３２から補間ができない旨のエラーを出力することになる。
【００９８】
図１４にあるように、歪の中心座標に対して、画像の歪み方は対照的になる。また、歪みは一般的に中心に近いほど小さく、離れるほど大きくなる。そこで、ＢＬの両端にあるＵＬの変形を考慮し、バッファを確保すれば、全てのＵＬにおいて、補間処理でデータが不足することは通常はない。そこで、補間する最初の座標（図ではブロックラインＢＬ内の画像データの一番上の×印にて示す先頭座標）に対して前方（図示右側）に所定の領域ｐｒｅＵＬＢを、後方（図示左側）に所定の領域ｐｏｓｔＵＬＢを設ける。
【００９９】
サポート機能については、本願と同日に出願した特願２００３‐２０２４９３号において、「歪補正範囲算出部」と称する部分に該当する。図２７（ａ）において、注目領域がＢＬとなるが、歪補正の座標変換で同図（ｂ）のように変形される。このとき、Ｘ’ＴＬ，Ｙ’ＴＬ，ＸＬｍｉｎ，ＸＬｍａｘからｐｒｅＵＬＢ１／ｐｏｓｔＵＬＢ１が決められる（図１６（ａ）参照）。同様に、Ｘ’ＴＲ，Ｙ’ＴＲ，ＸＲｍｉｎ，ＸＲｍａｘからｐｒｅＵＬＢ２／ｐｏｓｔＵＬＢ２が決められる。
【０１００】
さらに、ＵＬ処理において、歪の中心を通過すると、光学的歪の曲がり方が逆方向となる。すると、図１４のように、歪中心の左右ではｐｒｅＵＬＢ、ｐｏｓｔＵＬＢの値が異なる。この値を、左右どちらにも対応できるよう、図１５のように右側で最も大きいｐｏｓｔＵＬＢを採用し、左側で最も大きいｐｒｅＵＬＢを採用すると、左側又は右側の一方側の処理のときに必要もないのにもう一方側のデータを大きく（すなわち、バッファを広く）確保しておかなければならず、バッファの無駄である。
【０１０１】
そこで、ｐｒｅＵＬＢとｐｏｓｔＵＬＢで予め同じ大きな値で両方決めておくのではなくて、ｐｒｅＵＬＢとｐｏｓｔＵＬＢを変数としてそれぞれに値を入れるようにする。歪の中心座標を過ぎたら、これらの値を変えてやって確保量を変えるようにする。すなわち、歪中心前後でｐｒｅＵＬＢ、ｐｏｓｔＵＬＢを変化することにより、内部バッファの使い方に無駄をなくし、小さなバッファで比較的大きな歪補正を行える。
【０１０２】
ｐｒｅ，ｐｏｓｔＵＬＢをレジスタ８５に設定するが、それらの値を生成するためには、歪の変形を考慮して画像データの入力範囲を算出可能とするサポート機能が必要となる。このサポート機能は、歪補正処理部８の歪補正処理機能に付加するなどして設ければよい。メモリ制御部８３は、１ＵＬ処理中は他の処理によって前記領域ｐｒｅＵＬＢ，ｐｏｓｔＵＬＢが上書きされないように制御する。前記領域ｐｒｅＵＬＢ，ｐｏｓｔＵＬＢの設定は、ＣＰＵ４からレジスタ８５（図２参照）に設定しても構わないし、ＣＰＵで自動的に計算をして設定してもよい。
【０１０３】
歪補正処理において１６点補間すると前に述べたが、図１６（ａ）に示すように、歪補正によって補間位置は１ＵＬ処理の間にａ（ただし、ａ＞０）だけ動き得る。１６点補間する関係上、入力画像範囲としてはｐｒｅ側，ｐｏｓｔ側とも上記間隔ａに、補間に必要な画素分の間隔ｂＬ，ｂＲを加えた範囲が必要となる。
【０１０４】
歪中心を越えると、ｐｒｅ，ｐｏｓｔＵＬＢの値を変えることで、バッファを必要最小限に絞る。また、前述の「歪補正算出部」で、補間分を考慮して結果を出力させてもよい。
【０１０５】
歪補正処理部８の持っている内部バッファ８２は、図８の場合、最大で縦９６画素の横に１６ライン（画素）である。これを使って歪補正していくことになる。ブロックライン処理のデータは少なくとも１ＵＬずつ図示右方向にスイープしていく。一気に数ＵＬ開放されることもあるので、必ずしも１ＵＬずつスイープするわけでない。内部バッファ８２は、はじめは空の状態からスタートするので、１６ライン分入ってきて、歪補正処理を行う。これらのユニットラインを処理していくと、左側のラインに不要なデータ（１から数ＵＬ分のデータ）が生じることになる。なお、処理したら必ず不要になる訳ではなく、拡大率が大きい時は不要になるまで数ＵＬかかることもある。不要なデータ分はバッファを開放（すなわち、上書き許可）していって新しいデータを入れていくことにする。スイープしていく画像は右側にずれていく。最大１６ライン読み込めるサイズしかないので、要らなくなったデータ領域は開放して新しいデータを順次上書きしていくようにする。不要となったバッファ領域は全て一気に開放してしまう。その開放量は１ラインであるかもしれないし、５ラインであるかもしれない。例えば、はじめの３ライン分のデータがバッファに入っていたものを以降の処理に不要であるので開放してしまって次のデータを受け付けるようにして、次のデータが上書きされる。
【０１０６】
ところで、１ＵＬ処理が終わった後に開放できるバッファの量は、次のＵＬ先頭座標が決まらなければ分からない（図１７参照）。内部バッファは小さいので、使わなくなったデータが格納されている部分をできるだけ早くに開放する為、次のＵＬ先頭座標を算出して開放量を取得し、バッファを開放することで内部バッファを有効に利用できるようにする。ところが、歪補正に対して後段の回路ブロックからリクエストが来てそれに対するグラントを返して１ＵＬのデータを後段へ出力し、また次のリクエストが来てからグラントを返した後、座標を求めてというように動作させると、バッファの開放が遅れ、これに伴って、新しいデータの取り込みも遅れ、結果として、パイプライン動作に長い空きができてしまうことが起こり得る。そこで、図１８に示すように先の歪補正処理（図示の座標１〜ｎの処理）を行っている段階で、後段の回路ブロックからリクエストに関係なく、座標ｎの処理が終わったら次の先頭座標ｎ＋１を演算して開放量を求め、バッファを早期に開放してしまう。これにより、前段回路ブロックから新たなデータ入力が比較的早く行なわれ、パイプラインの空きを詰めることができる。しかしながら、図１８の場合であると、座標ｎの処理をした後、画素ｎ＋１を座標を計算してから処理を終了するので、図１９のようにバッファ内に次のＵＬ処理に必要なデータが揃っているのに、後段からのリクエストが連続するとパイプラインに空きが生じる。依然としてパイプラインの空きは存在するので、リクエストが連続した時は、装置全体の動作速度に悪影響を及ぼす恐れがある。
【０１０７】
そこで、図１８の改善策として、図２０のように、なるべく早くに次の座標が決まってバッファの開放量を求める方法がある。図１８のように一番最後に次の先頭座標を求めるよりももっと早い段階で次のＵＬ先頭座標を取得しておき、必要なデータが揃っていると判断されたら、次のＵＬ処理を連続して行うことで処理の空きを小さくする。すなわち、１ＵＬ処理が終了する前にＵＬのデータをレジスタ等に保持しておいて、次のＵＬの先頭の座標位置を算出することで、予め次のＵＬ処理の開放量を求めておく。図２０では、先の歪補正処理（図示の座標１〜ｎの処理）の２画素目に次のＵＬの先頭座標を求めておいてバッファ開放量を早い段階で取得する。これによって、バッファの開放を早くすることができ、図２１に示すように図１９に比べてパイプラインの空きをかなり少なくできる。しかしながら、回路的に複雑となり、制御も困難となる問題点がある。
【０１０８】
そこで、図２０をさらに改善したのが、図２２である。図２２では、現在処理中のＵＬが終わった時に開放する量（開放量１）は前のＵＬ処理中に既に分かっている。座標ｎを算出した後、２つ先のＵＬ先頭座標を計算し、次のＵＬ処理が終わった時に開放できる量（開放量２）を予め求めておく。このようにすると、図２０の場合のようにＵＬ処理中に例外的な座標生成（座標２の生成）を行う必要がない。このように、次のＵＬの先頭ではなくて次の次の２つ先のＵＬの先頭座標を求めておけば、図２０のような例外的な処理がなくなるので、回路的には簡単になる。
【０１０９】
【発明の効果】
以上述べたように本発明によれば、バスの転送量やメモリの容量を大きく増大させることなく、歪補正を実現することができる。すなわち、小さなバッファ容量で比較的大きな歪補正処理を行うことが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施の形態の画像処理装置の全体構成を示すブロック図。
【図２】歪補正処理部の構成を示すブロック図。
【図３】歪補正処理部における座標変換の概念図。
【図４】陣笠型歪を示す図。
【図５】入力画像データを示す図。
【図６】歪補正処理部の詳細な構成を示すブロック図。
【図７】補間回路における補間演算のイメージ図。
【図８】歪補正処理部における内部メモリ部を説明する図。
【図９】図８の補足説明をする、書き込み順番を示す図。
【図１０】図７の補正座標位置を算出するのに必要なＤ０を求めるための説明図。
【図１１】エラー処理例を示す図。
【図１２】他のエラー処理例を示す図。
【図１３】他のエラー処理例を示す図。
【図１４】歪補正処理に要するバッファ量について説明する図。
【図１５】歪補正処理に要するバッファ量について説明する図。
【図１６】歪補正処理に要するバッファ量について説明する図。
【図１７】ＵＬ処理に伴う開放量の算出方法について説明する図。
【図１８】ＵＬ処理に伴う開放量の算出方法について説明する図。
【図１９】図１８の処理に伴うパイプライン処理の空きについて説明する図。
【図２０】ＵＬ処理に伴う開放量の算出方法について説明する図。
【図２１】図２０の処理に伴うパイプライン処理の空きについて説明する図。
【図２２】ＵＬ処理に伴う開放量の算出方法について説明する図。
【図２３】格子状の被写体、樽型歪を生じた撮影画像、糸巻き型歪を生じた撮影画像を示す図。
【図２４】一般的なデジタルカメラの画像処理手順の概念、及び従来のデジタルカメラの画像処理装置におけるブロック構成を示す図。
【図２５】本発明に係る実施の形態におけるフレームメモリからの画像データの読み出し順序を説明する図。
【図２６】本発明に係る図１の第１，第２データ順序変換部の構成を示すブロック図。
【図２７】歪補正範囲算出部における、歪補正処理を行う際の入力画像範囲を算出する動作を説明する図。
【符号の説明】
１…ＣＣＤ
３…バス
４…ＣＰＵ
５…フレームメモリ
６…第１データ順序変換部
７…イメージプロセス回路
６…第１データ順序変換部
８…歪補正処理部（歪補正手段）
９…第２データ順序変換部
１０…ＪＰＥＧ処理部
１１…メモリカード（記録媒体）
８２…内部メモリ部（バッファ）
８３…メモリ制御部
８５…制御レジスタ
【図１】
2005045514.tif 000005
【図２】
2005045514.tif 000006
【図３】
2005045514.tif 000007
【図４】
2005045514.tif 000008
【図５】
2005045514.tif 000009
【図６】
2005045514.tif 000010
【図７】
2005045514.tif 000011
【図８】
2005045514.tif 000012
【図９】
2005045514.tif 000013
【図１０】
2005045514.tif 000014
【図１１】
2005045514.tif 000015
【図１２】
2005045514.tif 000016
【図１３】
2005045514.tif 000017
【図１４】
2005045514.tif 000018
【図１５】
2005045514.tif 000019
【図１６】
2005045514.tif 000020
【図１７】
2005045514.tif 000021
【図１８】
2005045514.tif 000022
【図１９】
2005045514.tif 000023
【図２０】
2005045514.tif 000024
【図２１】
2005045514.tif 000025
【図２２】
2005045514.tif 000026
【図２３】
2005045514.tif 000027
【図２４】
2005045514.tif 000028
【図２５】
2005045514.tif 000029
【図２６】
2005045514.tif 000030
【図２７】
2005045514.tif 000031