(57)【特許請求の範囲】
【請求項１】
光学系を用いて被写体が撮像された画像データにおける前記光学系の歪曲収差を補正する画像処理装置であって、
前記画像データを補正前画像として記憶する第１の記憶手段と、
前記歪曲収差が補正された補正後画像の座標を生成する座標生成手段と、
前記座標生成手段によって生成された補正後画像の座標に対応する前記補正前画像の座標を演算する演算手段と、
前記演算手段によって演算された前記補正前画像における矩形領域の一部の座標を元に、前記第１の記憶手段から前記補正前画像を矩形領域ごとに読み出す読み出し制御手段と、
前記読み出し制御手段によって読み出された補正前画像を矩形領域ごとに一時的に記憶する第２の記憶手段と、
前記演算手段によって演算された前記補正前画像における矩形領域内の座標を元に、前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成する画像処理手段とを有し、
前記座標生成手段は、前記第１の記憶手段から前記補正前画像を読み出す座標を前記演算手段が演算するための座標を生成するとともに、前記第２の記憶手段から前記補正前画像を読み出す座標を前記演算手段が演算するための座標を生成し、
前記演算手段は、前記第１の記憶手段から前記補正前画像を読み出すための座標、または前記第２の記憶手段から前記補正前画像を読み出すための座標を演算し、
さらに前記演算手段は、
前記座標生成手段によって生成された補正後画像の座標が、前記補正後画像における矩形領域の一部の座標か否かを判定する判定手段と、
前記判定手段によって前記矩形領域の一部の座標と判定された場合に、前記補正後画像における当該矩形領域に対応する、前記補正前画像における矩形領域の一部の座標を一時的に保持する保持手段とを有し、
前記画像処理手段は、前記保持手段に保持されている座標に基づいて前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成することを特徴とする画像処理装置。
【請求項２】
前記演算手段は、前記第２の記憶手段に前記補正前画像における第１の矩形領域が記憶されている場合において、前記判定手段によって前記補正後画像の座標が前記第１の矩形領域とは異なる矩形領域と対応する矩形領域の一部の座標であると判定された場合に、前記演算手段は、前記補正後画像における当該矩形領域に対応する、前記補正前画像における第２の矩形領域の一部の座標を演算し、
前記画像処理手段は、前記保持手段に保持されている前記補正前画像における第１の矩形領域の座標に基づいて前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記演算手段は、前記第１の記憶手段から前記補正前画像を読み出すための座標の演算を、前記第２の記憶手段から前記補正前画像を読み出すための座標の演算よりも優先することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
光学系を用いて被写体が撮像された画像データにおける前記光学系の歪曲収差を補正する画像処理装置であって、
前記画像データを補正前画像として記憶する第１の記憶手段と、
前記歪曲収差が補正された補正後画像の座標を生成する座標生成手段と、
前記座標生成手段によって生成された補正後画像の座標に対応する前記補正前画像の座標を演算する演算手段と、
前記演算手段によって演算された前記補正前画像における矩形領域の一部の座標を元に、前記第１の記憶手段から前記補正前画像を矩形領域ごとに読み出す読み出し制御手段と、
前記読み出し制御手段によって読み出された補正前画像を矩形領域ごとに一時的に記憶する第２の記憶手段と、
前記演算手段によって演算された前記補正前画像における矩形領域内の座標を元に、前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成する画像処理手段とを有し、
前記座標生成手段は、前記第１の記憶手段から前記補正前画像を読み出す座標を前記演算手段が演算するための座標を生成するとともに、前記第２の記憶手段から前記補正前画像を読み出す座標を前記演算手段が演算するための座標を生成し、
前記演算手段は、前記第１の記憶手段から前記補正前画像を読み出すための座標、または前記第２の記憶手段から前記補正前画像を読み出すための座標を演算し、
前記矩形領域は正方形の領域であることを特徴とする画像処理装置。
【請求項５】
前記演算手段は、１つの回路によって構成されていることを特徴とする請求項１〜４の何れか１項に記載の画像処理装置。
【請求項６】
前記第１の記憶手段はＤＲＡＭであり、前記第２の記憶手段はＳＲＡＭであることを特徴とする請求項１〜５の何れか１項に記載の画像処理装置。
【請求項７】
光学系を用いて被写体が撮像された画像データを補正前画像として第１の記憶手段に記憶し、前記画像データにおける前記光学系の歪曲収差を補正する画像処理装置の画像処理方法であって、
前記歪曲収差が補正された補正後画像の座標を生成する座標生成工程と、
前記座標生成工程において生成された補正後画像の座標に対応する前記補正前画像の座標を演算する演算工程と、
前記演算工程において演算された前記補正前画像における矩形領域の一部の座標を元に、前記第１の記憶手段から前記補正前画像を矩形領域ごとに読み出し、第２の記憶手段に一時的に記憶する制御工程と、
前記演算工程において演算された前記補正前画像における矩形領域内の座標を元に、前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成する画像処理工程とを有し、
前記座標生成工程においては、前記第１の記憶手段から前記補正前画像を読み出す座標を前記演算工程において演算するための座標を生成するとともに、前記第２の記憶手段から前記補正前画像を読み出す座標を前記演算工程において演算するための座標を生成し、
前記演算工程においては、前記第１の記憶手段から前記補正前画像を読み出すための座標、または前記第２の記憶手段から前記補正前画像を読み出すための座標を演算し、
さらに前記演算工程においては、
前記座標生成工程において生成された補正後画像の座標が、前記補正後画像における矩形領域の一部の座標か否かを判定する判定工程と、
前記判定工程において前記矩形領域の一部の座標と判定された場合に、前記補正後画像における当該矩形領域に対応する、前記補正前画像における矩形領域の一部の座標を一時的に保持手段に保持する保持工程とを有し、
前記画像処理工程においては、前記保持手段に保持されている座標に基づいて前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成することを特徴とする画像処理方法。
【請求項８】
光学系を用いて被写体が撮像された画像データを補正前画像として第１の記憶手段に記憶し、前記画像データにおける前記光学系の歪曲収差を補正する画像処理装置の画像処理方法であって、
前記歪曲収差が補正された補正後画像の座標を生成する座標生成工程と、
前記座標生成工程において生成された補正後画像の座標に対応する前記補正前画像の座標を演算する演算工程と、
前記演算工程において演算された前記補正前画像における矩形領域の一部の座標を元に、前記第１の記憶手段から前記補正前画像を矩形領域ごとに読み出し、第２の記憶手段に一時的に記憶する制御工程と、
前記演算工程において演算された前記補正前画像における矩形領域内の座標を元に、前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成する画像処理工程とを有し、
前記座標生成工程においては、前記第１の記憶手段から前記補正前画像を読み出す座標を前記演算工程において演算するための座標を生成するとともに、前記第２の記憶手段から前記補正前画像を読み出す座標を前記演算工程において演算するための座標を生成し、
前記演算工程においては、前記第１の記憶手段から前記補正前画像を読み出すための座標、または前記第２の記憶手段から前記補正前画像を読み出すための座標を演算し、
前記矩形領域は正方形の領域であることを特徴とする画像処理方法。
【請求項９】
光学系を用いて被写体が撮像された画像データを補正前画像として第１の記憶手段に記憶し、前記画像データにおける前記光学系の歪曲収差を補正する画像処理装置を制御するためのプログラムであって、
前記歪曲収差が補正された補正後画像の座標を生成する座標生成工程と、
前記座標生成工程において生成された補正後画像の座標に対応する前記補正前画像の座標を演算する演算工程と、
前記演算工程において演算された前記補正前画像における矩形領域の一部の座標を元に、前記第１の記憶手段から前記補正前画像を矩形領域ごとに読み出し、第２の記憶手段に一時的に記憶する制御工程と、
前記演算工程において演算された前記補正前画像における矩形領域内の座標を元に、前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成する画像処理工程とをコンピュータに実行させ、
前記座標生成工程においては、前記第１の記憶手段から前記補正前画像を読み出す座標を前記演算工程において演算するための座標を生成するとともに、前記第２の記憶手段から前記補正前画像を読み出す座標を前記演算工程において演算するための座標を生成し、
前記演算工程においては、前記第１の記憶手段から前記補正前画像を読み出すための座標、または前記第２の記憶手段から前記補正前画像を読み出すための座標を演算し、
さらに前記演算工程においては、
前記座標生成工程において生成された補正後画像の座標が、前記補正後画像における矩形領域の一部の座標か否かを判定する判定工程と、
前記判定工程において前記矩形領域の一部の座標と判定された場合に、前記補正後画像における当該矩形領域に対応する、前記補正前画像における矩形領域の一部の座標を一時的に保持手段に保持する保持工程とを有し、
前記画像処理工程においては、前記保持手段に保持されている座標に基づいて前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成することを特徴とするプログラム。
【請求項１０】
光学系を用いて被写体が撮像された画像データを補正前画像として第１の記憶手段に記憶し、前記画像データにおける前記光学系の歪曲収差を補正する画像処理装置を制御するためのプログラムであって、
前記歪曲収差が補正された補正後画像の座標を生成する座標生成工程と、
前記座標生成工程において生成された補正後画像の座標に対応する前記補正前画像の座標を演算する演算工程と、
前記演算工程において演算された前記補正前画像における矩形領域の一部の座標を元に、前記第１の記憶手段から前記補正前画像を矩形領域ごとに読み出し、第２の記憶手段に一時的に記憶する制御工程と、
前記演算工程において演算された前記補正前画像における矩形領域内の座標を元に、前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成する画像処理工程とをコンピュータに実行させ、
前記座標生成工程においては、前記第１の記憶手段から前記補正前画像を読み出す座標を前記演算工程において演算するための座標を生成するとともに、前記第２の記憶手段から前記補正前画像を読み出す座標を前記演算工程において演算するための座標を生成し、
前記演算工程においては、前記第１の記憶手段から前記補正前画像を読み出すための座標、または前記第２の記憶手段から前記補正前画像を読み出すための座標を演算し、
前記矩形領域は正方形の領域であることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に、光学的要因による歪みを信号処理によって補正するために用いて好適な画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、デジタルカメラやビデオカメラ等の撮像装置では、撮像レンズにおける歪曲収差の特性の影響により、光学的要因による歪みが撮像画像に生じる。高価な高性能のレンズでは、歪曲収差の特性の影響が小さいため、このような歪みは目立たない。しかし、低コストのレンズや光学ズームレンズを使用した場合には、歪みが目立つようになり画質が劣化する。そこで、近年、光学的要因による歪みを信号処理によって補正する撮像装置が、例えば、特許文献１及び２に提案されている。
【０００３】
特許文献１には、歪補正処理部が歪補正処理を行うのに必要な歪補正前（入力）画像範囲を算出する歪補正範囲算出部を備えた技術が開示されている。この構成により、歪補正によって得られる補正画像（出力画像）は画像出力範囲に対して過不足なく出力することを可能としている。そして、元データである入力画像データを有効に活用した歪補正処理を行い、糸巻き型歪や、樽型歪、陣笠型歪などに対しても有効な歪補正処理を行うことが提案されている。
【０００４】
さらに特許文献２に記載の方法では、補正後画像座標系に対応する補正前座標を記憶し、補正後画像の各画素に対応する補正前座標を記憶部から読み出して座標を出力する。そして出力された補正前座標に対応する補正前画像のデータを、補正後画像の画素のデータとして出力する。ここで、座標出力部から出力された補正前座標が小数点以下の数値を含む場合には、補正前座標の近傍複数画素のデータを基に加重平均を算出することにより、その補正前座標に対応する補正後画像の画素のデータを出力している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−４４０９８号公報
【特許文献２】国際公開第２００８／１３９５７７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示されている技術では、補正後画像の座標を基準に補正前画像のどの位置から画素を取ってくるかの演算を行う関係上、入力部と歪補正演算部との両方で歪補正前座標が必要となる。そのため、座標演算回路が２つ必要となり、回路規模及び消費電力が増加してしまう。
【０００７】
また、光学ズーム倍率に応じて歪み率は異なってくるため、特許文献２に開示されている技術では、補正後画像座標系に対応する補正前座標を記憶することから、ズーム倍率に応じた補正前座標を記憶しておく必要がある。そのため、記憶容量が増大する可能性がある。そこで、特許文献２には、矩形ブロックに分けて頂点のみの座標を保持する技術が開示されているが、この場合、糸巻き型歪、樽型歪には対応できるが、陣笠型歪の対応が困難となる可能性がある。
【０００８】
さらに、補正前画像をブロックラインバッファに保持しているが、ブロックラインバッファは、補正前画像と補正後画像との間での座標の最大移動分の垂直ライン分必要となるため、次のことが懸念される。例えばブロックラインバッファをＳＲＡＭとした場合は、近年の画素数増加に伴い水平画素数が多くなっているため、膨大なデータ量に対応するための記憶容量が不足するという問題がある。また、ブロックラインバッファをＤＲＡＭとした場合は、記憶容量は十分に備えているが、補正前座標が小数点以下の場合は、補間用に近傍複数画素のデータをＤＲＡＭから読み出すことになるため、ランダムアクセスが発生して性能が低下するという問題がある。
【０００９】
本発明は前述の問題点に鑑み、記憶容量、回路規模及び消費電力を抑え、高性能に歪補正を行うことができるようにすることを目的としている。
【課題を解決するための手段】
【００１０】
本発明に係る画像処理装置は、光学系を用いて被写体が撮像された画像データにおける前記光学系の歪曲収差を補正する画像処理装置であって、前記画像データを補正前画像として記憶する第１の記憶手段と、前記歪曲収差が補正された補正後画像の座標を生成する座標生成手段と、前記座標生成手段によって生成された補正後画像の座標に対応する前記補正前画像の座標を演算する演算手段と、前記演算手段によって演算された前記補正前画像における矩形領域の一部の座標を元に、前記第１の記憶手段から前記補正前画像を矩形領域ごとに読み出す読み出し制御手段と、前記読み出し制御手段によって読み出された補正前画像を矩形領域ごとに一時的に記憶する第２の記憶手段と、前記演算手段によって演算された前記補正前画像における矩形領域内の座標を元に、前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成する画像処理手段とを有し、前記座標生成手段は、前記第１の記憶手段から前記補正前画像を読み出す座標を前記演算手段が演算するための座標を生成するとともに、前記第２の記憶手段から前記補正前画像を読み出す座標を前記演算手段が演算するための座標を生成し、前記演算手段は、前記第１の記憶手段から前記補正前画像を読み出すための座標、または前記第２の記憶手段から前記補正前画像を読み出すための座標を演算し、さらに前記演算手段は、前記座標生成手段によって生成された補正後画像の座標が、前記補正後画像における矩形領域の一部の座標か否かを判定する判定手段と、前記判定手段によって前記矩形領域の一部の座標と判定された場合に、前記補正後画像における当該矩形領域に対応する、前記補正前画像における矩形領域の一部の座標を一時的に保持する保持手段とを有し、前記画像処理手段は、前記保持手段に保持されている座標に基づいて前記第２の記憶手段から前記補正前画像を読み出して前記補正後画像を生成することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、記憶容量、回路規模及び消費電力を抑え、高性能に歪補正を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態に係る収差補正部の詳細な構成例を示すブロック図である。
【図２】実施形態に係るデジタルカメラの構成例を示すブロック図である。
【図３】第１の実施形態における補正前座標演算部の詳細な構成例を示すブロック図である。
【図４】画像の中心と補正前画像の画素位置と補正後画像の画素位置とを示した図である。
【図５】矩形画像保持部における入出力の関係を模式的に示した図である。
【図６】第１の実施形態において、座標演算部の処理状況と、矩形画像保持部へ矩形画像を書き込むタイミングとを説明するための図である。
【図７】収差により樽型歪が生じた補正前画像と補正後画像とを示す図である。
【図８】収差補正部による１矩形画像の補正前座標の演算処理手順の一例を示すフローチャートである。
【図９】収差により糸巻きが生じた補正前画像及び補正後画像の矩形分割を示した図である。
【図１０】第２の実施形態における補正前座標演算部の詳細な構成例を示すブロック図である。
【図１１】第２の実施形態において、座標演算部の処理状況と、矩形画像保持部へ矩形画像を書き込むタイミングとを説明するための図である。
【発明を実施するための形態】
【００１３】
（第１の実施形態）
以下、図面を参照しながら本発明の第１の実施形態について説明する。なお、本実施形態では画像処理装置の一例としてデジタルカメラについて説明するが、デジタルビデオカメラ、カメラ付き携帯電話、車載カメラ等の撮像装置あるいは、プロジェクタなど収差補正が必要な装置を採用することも可能である。
【００１４】
図２は、本実施形態に係るデジタルカメラ１０の構成例を示すブロック図である。
図２において、撮像素子２００は、受光した被写体像を電気信号に変換して画像データを作成するＣＣＤやＣＭＯＳセンサ等の受光素子である。Ａ／Ｄ変換器２０１は、撮像素子２００のアナログ出力信号をデジタル信号に変換する。
【００１５】
画像処理部２０２は、撮像／現像処理部２０３、収差補正部１００及びＤＭＡＣ１１０を備えている。さらに、画像バッファメモリ、画像データの圧縮処理や伸長処理を行う圧縮伸長部、モニタなどに表示する表示部、記録媒体に画像データを記録する記録処理部（いずれも図示せず）などを備えている。
【００１６】
撮像／現像処理部２０３は、Ａ／Ｄ変換器２０１により変換された画像データに対して黒レベル補正、シェーディング補正などを適正に行う。また、撮像／現像処理部２０３は、補正処理された画像データや、画像バッファメモリまたはメモリ１０７に格納された画像データに対して以下の処理を行う。具体的には、画素補間やフィルタ処理、縮小といったリサイズ処理や色変換処理、例えば圧縮画像データに保存するのに最適なフォーマットであるＹＣｂＣｒ形式のフォーマットに変換する処理などの現像処理を適正に行う。
【００１７】
収差補正部１００は、画像データに対して歪曲収差を補正する。この処理の詳細については後述する。ＤＭＡＣ１１０は、データ転送を行うDirect Memory Accessコントローラである。画像データは、ＤＭＡＣ１１０によってバス１０５に出力され、メモリ制御部１０６を介してメモリ１０７に一時記憶される。メモリ１０７に一時記憶された画像データは、ＤＭＡＣ１１０によってメモリ１０７からバス１０５に出力され、ＤＭＡＣ１１０を経由して、画像処理部２０２に画像データが出力される。また、ＤＭＡＣ１１０は複数の画像処理のデータ転送を行うために、複数のＤＭＡチャネルを有している。
【００１８】
バス１０５は、システムバスと画像データバスとを兼用するバスであるが、システムバスと画像データバスとを異なるバスで構成するものであってもよい。メモリ制御部１０６は、システム制御部２０４或いはＤＭＡＣ１１０からの指示に応じて、メモリ１０７にデータを書き込んだり、メモリ１０７からデータを読み出したりする。なお、Ａ／Ｄ変換器２０１からの出力データがメモリ１０７に直接書き込まれる場合もある。メモリ１０７は、所定枚数の静止画像や、所定時間の動画像、音声等のデータやシステム制御部２０４の動作用の定数、プログラム等を格納するのに十分な記憶容量を備える記憶装置であり、例えばＤＲＡＭなどが用いられる。
【００１９】
不揮発性メモリ制御部２０６は、システム制御部２０４からの指示に応じて、不揮発性メモリ２０７にデータを書き込んだり、不揮発性メモリ２０７からデータを読み出したりする。不揮発性メモリ２０７は、電気的に消去・記録可能なメモリであり、例えばＥＥＰＲＯＭ等が用いられる。また、不揮発性メモリ２０７には、システム制御部２０４の動作用の定数、プログラム等が記憶されている。
【００２０】
システム制御部２０４は、デジタルカメラ１０の動作制御を司るマイクロコンピュータなどで構成され、デジタルカメラ１０を構成する各機能ブロックに対して様々な指示を行い、各種の制御処理を実行する。また、システム制御部２０４は、バス１０５を介して接続された画像処理部２０２、メモリ制御部１０６、不揮発性メモリ制御部２０６、操作部２０５、及び撮像素子２００を制御する。マイクロコンピュータは、前述した不揮発性メモリ２０７に記録されたプログラムを実行することにより、本実施形態の各処理を実現する。
【００２１】
操作部２０５は、ユーザーにより操作されるスイッチやボタン等を含み、電源のＯＮ／ＯＦＦ、シャッターのＯＮ／ＯＦＦ等の操作に使用される。
【００２２】
図１は、本実施形態に係る収差補正部１００の詳細な構成例を示すブロック図である。なお、図２と同一の構成については、同一の符号を付しており、詳細な説明は省略する。
図１において、補正後座標生成部１１１は、第一補正後座標生成部１０１と第二補正後座標生成部１０２とから構成され、補正後画像の座標を生成する。
【００２３】
第一補正後座標生成部１０１は、補正後画像の座標を生成する。この補正後画像の座標は、メモリ１０７から補正前画像を読み出して矩形画像保持部１０８に書き込むための座標を補正前座標演算部１０３に演算させるために用いられる。具体的には、補正後画像を矩形に分割し、矩形領域内の一部の座標として矩形内の周辺画素毎の座標を生成する。さらに、第一補正後座標生成部１０１は、システム制御部２０４の制御により、収差補正率に応じた矩形サイズの調整を行うことができる。矩形サイズは、１枚の画像に対して、すべて同一サイズであってもよいし、異なるサイズであってもよい。また、第一補正後座標生成部１０１は、矩形内の周辺画素毎の座標の情報を保持するバッファを備えている。
【００２４】
第二補正後座標生成部１０２は、補正後画像の座標を生成する。この補正後画像の座標は、矩形画像保持部１０８に保持されている補正前画像を読み出す際に、画素補間部１０９が画素単位で読み出す座標を補正前座標演算部１０３に演算させるために用いられる。具体的には、第一補正後座標生成部１０１と同様に補正後画像を矩形に分割して、矩形内全ての画素の座標を生成する。なお、補正前画像及び補正後画像の座標と矩形分割とについては、図７及び図９を用いて後述する。
【００２５】
補正前座標演算部１０３は、補正前座標を演算する。なお、処理の詳細については、図３を用いて後述する。矩形読み出し制御部１０４は、補正前座標演算部１０３の演算結果を受けて、メモリ１０７の読み出しアドレスを生成する。矩形画像保持部１０８は、詳細は後述するが、書き込み及び読み出しが頻繁に行われることから例えばＳＲＡＭなどで構成され、補正前画像が矩形毎に書き込まれ、一時的に保持している。本実施形態では、２Ｂａｎｋ構成とするが、Ｂａｎｋ数を２以外にしてもよい。
【００２６】
画素補間部１０９は、補正前座標演算部１０３が演算した座標を元に、矩形画像保持部１０８に保持されている矩形の補正前画像（矩形画像）の補正対象画素、および補正対象画素の複数の矩形内周辺画素を読み出す。そして、補正前座標演算部１０３の座標値を用いて、バイリニア補間あるいはバイキュービック補間などで画素を補正し、補正後画像を得る。
【００２７】
ここで、図７及び図９を参照しながら、補正前画像及び補正後画像の座標と矩形分割とについて説明する。図７は、収差により樽型歪が生じた補正前画像７００と補正後画像７０１とを示す図である。ここで補正後画像７０１の座標は、第一補正後座標生成部１０１により生成された補正後画像の座標の一例である。補正後画像７０１の座標（Ｘ、Ｙ）に対応する補正前座標が、補正前画像７００の座標（ｘ、ｙ）である。また、矩形画像７０３、７０７、７０９は、補正後画像を矩形分割時の１矩形を示し、矩形画像７０３、７０７、７０９に対応する補正前画像の矩形画像はそれぞれ矩形画像７０２、７０６、７０８である。
【００２８】
また、拡大画像７０４、７０５は、補正後の矩形画像７０３の拡大画像である。拡大画像７０４では、第一補正後座標生成部１０１で生成する座標を斜線で示し、第一補正後座標生成部１０１が矩形画像７０３内の周辺画素の座標のみを生成することを示している。また、拡大画像７０５は、第二補正後座標生成部１０２で生成する座標を斜線で示し、第二補正後座標生成部１０２が矩形画像７０３内に対して全ての座標を生成することを示している。
【００２９】
図９は、収差により糸巻きが生じた補正前画像９０３及び補正後画像９００の矩形分割を示した図である。図９（Ａ）に示す例では、補正後矩形画像９０１は、補正後画像９００の第一の矩形画像を示し、長方形に矩形分割されていることを示している。補正後矩形画像９０２は、補正後画像９００の第二の矩形画像を示し、同様に長方形に矩形分割されていることを示している。
【００３０】
補正前矩形画像９０４は、矩形画像保持部１０８に保持される矩形サイズを示す。このうち、矩形画像９０６がメモリ１０７から読み出す第一の矩形画像であり、斜線部が補正に使用する有効画素となり、空白は使用しない無効画素を示す。また、矩形画像９０７は、矩形画像保持部１０８に保持されず、未使用領域となる。
【００３１】
また、補正前矩形画像９０５は、矩形画像保持部１０８に保持される矩形サイズを示す。補正前矩形画像９０５は、さらにメモリ１０７から読み出す、補正後矩形画像９０２に対応した第二の矩形画像を示し、斜線部が補正に使用する有効画素となり、空白は使用しない無効画素を示す。
【００３２】
一方、図９（Ｂ）に示す例では、補正後矩形画像９０８は、補正後画像９００の第一の矩形画像を示し、正方形に矩形分割されていることを示している。また、補正後矩形画像９０９は、補正後画像９００の第二の矩形画像を示し、正方形に矩形分割されていることを示している。
【００３３】
補正前矩形画像９１０は、矩形画像保持部１０８に保持される矩形サイズを示す。補正前矩形画像９１０は、さらにメモリ１０７から読み出す、補正後矩形画像９０８に対応した第一の矩形画像を示し、斜線部が補正に使用する有効画素となり、空白は使用しない無効画素を示す。
【００３４】
また、補正前矩形画像９１１は、矩形画像保持部１０８に保持される矩形サイズを示す。補正前矩形画像９１１は、さらにメモリ１０７から読み出す、補正後矩形画像９０９に対応した第二の矩形画像を示し、斜線部が補正に使用する有効画素となり、空白は使用しない無効画素を示す。
【００３５】
図９（Ａ）及び図９（Ｂ）に示すように、正方形に近い形でメモリ１０７から読み出すと、矩形に有効画素を多く含むため、矩形画像保持部１０８を有効に使用できる。また、後述する周辺座標保持部３０４の矩形内周辺座標を保持する座標数が、面積（保存領域）が同じであれば、長方形よりも正方形の方が少なくなる。そのため、本実施形態においては、第一補正後座標生成部１０１は、正方形に近い形でメモリ１０７から矩形画像を読み出すものとする。
【００３６】
図３は、本実施形態における補正前座標演算部１０３の詳細な構成例を示すブロック図である。なお、図１及び図２と同一の構成については、同一の符号を付しており、詳細な説明を省略する。
図３において、矩形周辺判定部３０１は、第二補正後座標生成部１０２から入力された座標情報を元に、与えられた座標が矩形内の周辺座標かどうかを判定する。ここで、矩形内の周辺座標と判定する条件は、第二補正後座標生成部１０２から座標が与えられず、かつ矩形画像保持部１０８の２Ｂａｎｋとも補正前画像（矩形画像）がない場合である。判定結果は第一のセレクタ３０２及び第二のセレクタ３００のセレクト条件として使用される。また、判定とともに、第二補正後座標生成部１０２から入力された座標情報を第一のセレクタ３０２に出力する。
【００３７】
第一のセレクタ３０２は、矩形周辺判定部３０１による矩形内の周辺座標か否かの判定結果に応じて切り替える。具体的には、周辺座標の場合は、第一補正後座標生成部１０１から入力された座標情報を座標演算部３０３に出力し、周辺座標でない場合は、矩形周辺判定部３０１から入力された座標情報を座標演算部３０３に出力する。
【００３８】
座標演算部３０３は、入力された座標に対して一般的な収差補正方法により補正前画像の画素位置を算出する。なお、座標演算部３０３の演算方法の詳細については後述する。周辺座標保持部３０４は、例えばＳＲＡＭなどで構成され、矩形周辺判定部３０１により周辺座標と判定された場合に、周辺座標として、座標演算部３０３の出力結果を保持する。そして、周辺座標保持部３０４が保持している周辺座標を座標情報として第二のセレクタ３００に出力する。
【００３９】
第二のセレクタ３００は、矩形周辺判定部３０１により周辺画素と判定された場合は、周辺座標保持部３０４から出力された座標情報を矩形画像保持部１０８に出力する。また、矩形周辺判定部３０１により周辺座標でないと判定された場合は、座標演算部３０３の出力結果を矩形画像保持部１０８に出力する。
【００４０】
次に、図４を参照しながら座標演算部３０３の処理の一例について説明する。なお、収差補正が可能であれば他の方法を採用してもよい。一般的に補正前画像の画素に着目すると、本来、着目画素に結像されるべき像は、それぞれの収差によって着目画素と画像の中心とを結ぶ線上に移動されて結像されている。
【００４１】
図４は、画像の中心４００と補正前画像の画素位置４０２と補正後画像の画素位置４０１とを示した図である。図４においては、撮像素子２００の出力画素を走査方向に沿って水平軸を規定し、走査方向に直交して垂直軸を規定する二次元の直交座標系の画像で表されている。
【００４２】
補正前画像の画素位置４０２を補正するための補正量Ｃは、画像の中心からの距離を表す像高Ｒと、光学系の特性とによって求められることが一般的に知られている。画像の中心４００の水平方向と画像の中心４００からの補正後画像の画素位置４０１の方向との角度θと、補正量Ｃとから座標変換して補正前画像の画素位置４０２を算出することができる。また、補正前画像の画素位置４０２は必ずしも撮像素子の画素単位ではなく、撮像素子の画素と画素との間に移動される場合があり、小数点までを演算するものとする。
【００４３】
次に、図５、図６及び図８を参照しながら本実施形態の制御について説明する。図５は、矩形画像保持部１０８における入出力の関係を模式的に示した図である。図５において、Ｂａｎｋ５００、５０１は、ＲＡＭなどで構成されているバッファである。
【００４４】
まず、図５（Ａ）に示すように、メモリ１０７からＢａｎｋ５００に第一の矩形画像が書き込まれ、保持する。続いて、図５（Ｂ）に示すように、メモリ１０７からＢａｎｋ５０１に第二の矩形画像が書き込まれると、これを保持し、Ｂａｎｋ５００から第一の矩形画像が画素単位で画素補間部１０９により読み出される。さらに、図５（Ｃ）に示すように、メモリ１０７からＢａｎｋ５００に第三の矩形画像が書き込まれると、これを保持し、Ｂａｎｋ５０１から第二の矩形画像が画素単位で画素補間部１０９により読み出される。以降、図５（ｂ）及び図５（ｃ）に示す状態を繰り返し、１枚の画像を処理するまで続く。
【００４５】
図６は、本実施形態における座標演算部３０３の処理状況と、矩形画像保持部１０８へ矩形画像を書き込むタイミングとを説明するための図である。
図６において、タイミングチャート６１０は、座標演算部３０３による、第一補正後座標生成部１０１から入力された座標情報に基づいて、補正前画像を読み出すための座標演算をＨｉｇｈまたはＬｏｗで示し、Ｈｉｇｈが演算期間を示している。
【００４６】
タイミングチャート６１１は、座標演算部３０３による、矩形周辺判定部３０１から入力された座標情報に基づいて、補正前画像を読み出すための座標演算をＨｉｇｈまたはＬｏｗで示し、Ｈｉｇｈが演算期間を示している。さらにタイミングチャート６１２は、補正前画像を矩形画像保持部１０８に書き込むタイミングを示し、Ｈｉｇｈが書き込み期間を示している。
【００４７】
期間６００、６０１は、それぞれメモリ１０７から補正前画像の第一の矩形画像及び第二の矩形画像を読み出すために、第一補正後座標生成部１０１が生成した座標に対して座標演算部３０３で演算している期間である。つまり、期間６００は第一の矩形座標演算期間を示し、期間６０１は第二の矩形座標演算期間を示している。
【００４８】
期間６０２は、矩形画像保持部１０８のＢａｎｋ５００に補正前画像の第一の矩形画像を書き込んでいる期間を示し、図５（Ａ）の状態を表している。そして、期間６０３は、矩形画像保持部１０８のＢａｎｋ５０１に補正前画像の第二の矩形画像を書き込んでいる期間を示し、図５（Ｂ）の状態を表している。
【００４９】
また、期間６０３は、タイミングチャート６１１に示すように、画素補間部１０９が第一の矩形画像を画素単位で読み出すために、座標演算部３０３で演算している期間でもある。さらに、タイミングチャート６１０に示すように、期間６０３においては、メモリ１０７から矩形画像保持部１０８のＢａｎｋ５００に第三の矩形画像を書き込むために、座標演算部３０３で演算している。なお、座標演算部３０３は、どちらか一方の処理を行うことになるため、タイミングチャート６１０とタイミングチャート６１１とで同時にＨｉｇｈになることはない。以下、処理の切り替えについて説明する。
【００５０】
期間６０４は、メモリ１０７から矩形画像保持部１０８のＢａｎｋ５００に第三の矩形画像を書き込むために座標演算部３０３で演算している期間である。さらに期間６０４は、周辺座標保持部３０４から第一の矩形画像の周辺座標を出力し、出力する際に、第三の矩形画像の周辺座標を保持している期間を示している。
【００５１】
期間６０５は、画素補間部１０９が矩形画像保持部１０８から第一の矩形画像を画素単位で読み出すために、座標演算部３０３で演算している期間である。つまり、期間６０３以降は、タイミングチャート６１０のＨｉｇｈの期間は、座標演算部３０３で演算を行い、さらに周辺座標保持部３０４に周辺座標を保持し、さらに前の矩形画像の周辺座標を出力する期間を示している。なお、期間６００、６０１におけるタイミングチャート６１０のＨｉｇｈの期間は、座標演算部３０３で演算を行い、さらに周辺座標保持部３０４に周辺座標を保持している期間となる。
【００５２】
また、期間６０６は、矩形画像保持部１０８のＢａｎｋ５００に補正前画像の第三の矩形画像を書き込んでいる期間を示し、図５（Ｃ）の状態を示している。なお、図６に示す例は、矩形画像保持部１０８のＢａｎｋ５００への書き込みタイミングと、画素補間部１０９が矩形画像を画素単位で読み出すタイミングとを同じとしている。ところが、矩形画像保持部１０８のＢａｎｋ５００への書き込みが早く終了する場合や、画素補間部１０９が矩形画像を画素単位で読み出すのが終了するタイミングが早い場合もありうる。この場合には、同じＢａｎｋに書き込みと読み出しとが発生しないように制御する。
【００５３】
図８は、収差補正部１００による１つの矩形画像の補正前座標の演算処理手順の一例を示すフローチャートである。
まず、ステップＳ８００において、第一補正後座標生成部１０１は、補正後画像の矩形内の周辺画素毎の座標情報を生成して保持する。第一補正後座標生成部１０１に保持する期間は、例えば第三の矩形画像の場合は、図６の期間６０２で保持することになる。
【００５４】
続いてステップＳ８０１において、補正前座標演算部１０３は、矩形画像保持部１０８の少なくとも１つのＢａｎｋにデータがないかどうかを判定する。この判定の結果、少なくとも１つのＢａｎｋにデータがない場合は、ステップＳ８０４に進み、いずれのＢａｎｋにもデータがある場合は、ステップＳ８０２に進む。
【００５５】
ステップＳ８０２においては、補正前座標演算部１０３は、第二補正後座標生成部１０２から座標情報が入力されるまで待機する。そして、第二補正後座標生成部１０２から座標情報が入力されると、次のステップＳ８０３に進む。
【００５６】
次に、ステップＳ８０３において、補正前座標演算部１０３は、入力された座標が矩形内の周辺座標かどうかを判定する。この判定の結果、周辺座標である場合はステップＳ８０４に進み、周辺座標でない場合は、ステップＳ８０６に進む。なお、ステップＳ８０１からＳ８０３の処理は、補正前座標演算部１０３の矩形周辺判定部３０１で行われる。
【００５７】
ステップＳ８０４においては、座標演算部３０３は、第一補正後座標生成部１０１から座標情報を入力し、座標演算を行う。そして、ステップＳ８０５において、座標演算部３０３は、演算結果を矩形読み出し制御部１０４に出力するとともに、周辺座標保持部３０４に演算結果を出力して保持するようにする。このとき、補正前座標演算部１０３は、周辺座標保持部３０４に保持していた周辺座標を矩形画像保持部１０８に出力するようにする。
【００５８】
一方、ステップＳ８０６においては、座標演算部３０３は、矩形周辺判定部３０１から座標情報を入力し、座標演算部３０３で座標演算を行う。そして、ステップＳ８０７において、座標演算部３０３は、演算結果を矩形画像保持部１０８に出力する。
【００５９】
次のステップＳ８０８においては、矩形内の座標の全ての演算が終わったかどうかを判定する。この判定の結果、演算が全て終わっていない場合はステップＳ８０１に戻る。一方、ステップＳ８０８の判定の結果、演算が全て終了した場合は、１矩形画像の補正前座標の演算を終了する。
【００６０】
以上説明したように本実施形態によれば、補正前画像をメモリ１０７から読み出す時の座標の演算と、補正前画像を矩形画像保持部１０８から読み出す時の座標の演算とを、１つの補正前座標演算部（回路）で実行することができる。これにより、回路規模及び消費電力を削減することができる。
【００６１】
また、第一補正後座標生成部１０１、第二補正後座標生成部１０２、矩形画像保持部１０８、矩形周辺判定部３０１、第一のセレクタ３０２、周辺座標保持部３０４、及び第二のセレクタ３００により、メモリ１０７へのランダムアクセスを低減している。これにより、２つの補正前座標演算部を実装した場合と同等の性能を維持することが可能となる。
【００６２】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。なお、本実施形態では、前述した第１の実施形態と異なる部分のみを説明し、同一の部分については、同一の符号を付すなどして詳細な説明は省略する。
【００６３】
図１０は、本実施形態における補正前座標演算部１０３の詳細な構成例を示すブロック図である。
図１０に示すように、本実施形態に係る補正前座標演算部１０３は、入力判定部１０００と座標演算部３０３とを備えている。
【００６４】
入力判定部１０００は、第一補正後座標生成部１０１と第二補正後座標生成部１０２とのどちらかから出力された座標情報かを判定し、先に入力された座標情報を座標演算部３０３に出力する。また、第一補正後座標生成部１０１と第二補正後座標生成部１０２とから座標が略同時に入力された場合は、第一補正後座標生成部１０１から出力された座標情報を優先して座標演算部３０３に出力する。
【００６５】
また、第二補正後座標生成部１０２は、補正前座標演算部１０３に入力された座標に対応する補正前座標が出力されるまで、同じ座標を出力するようにする。このように補正前座標演算部１０３で演算されるまで、同じ座標を出力することにより、第一補正後座標生成部１０１と第二補正後座標生成部１０２との座標を全て演算することが可能となる。
【００６６】
図１１は、本実施形態における座標演算部３０３の処理状況と、矩形画像保持部１０８へ矩形画像を書き込むタイミングとを説明するための図である。
図１１において、タイミングチャート１１１０は、座標演算部３０３による、第一補正後座標生成部１０１から入力された座標情報に基づいて、補正前画像を読み出すための座標演算をＨｉｇｈまたはＬｏｗで示し、Ｈｉｇｈが演算期間を示している。
【００６７】
タイミングチャート１１１１は、座標演算部３０３による、第二補正後座標生成部１０２から入力された座標情報に基づいて、補正前画像を読み出すための座標演算をＨｉｇｈまたはＬｏｗで示し、Ｈｉｇｈが演算期間を示している。さらにタイミングチャート１１１２は、補正前画像を矩形画像保持部１０８に書き込むタイミングチャートを示し、Ｈｉｇｈが書き込み期間を示している。
【００６８】
期間１１００、１１０１は、それぞれメモリ１０７から補正前画像の第一の矩形画像及び第二の矩形画像を読み出すために、第一補正後座標生成部１０１の座標に対して座標演算部３０３で演算している期間である。つまり、期間１１００は第一の矩形座標演算期間、期間１１０１は、第二の矩形座標演算期間を示している。
【００６９】
期間１１０２は、矩形画像保持部１０８のＢａｎｋ５００に補正前画像の第一の矩形画像を書き込んでいる期間を示し、図５（Ａ）の状態を表している。そして、期間１１０３は、矩形画像保持部１０８のＢａｎｋ５０１に補正前画像の第二の矩形画像を書き込んでいる期間を示し、図５（Ｂ）の状態を表している。
【００７０】
ここで、期間１１０３中の期間１１０５は、タイミングチャート１１１１に示すように、画素補間部１０９が第一の矩形画像を画素単位で読み出すために、座標演算部３０３で演算している期間を示している。さらに、期間１１０３中の期間１１０４は、タイミングチャート１１１０に示すように、メモリ１０７から矩形画像保持部１０８のＢａｎｋ５００に第三の矩形画像を書き込むために、座標演算部３０３で演算している期間を示している。なお、座標演算部３０３は、どちらか一方の処理を行うことになるため、タイミングチャート１１１０とタイミングチャート１１１１とで同時にＨｉｇｈになることはない。
【００７１】
また、期間１１０６は、矩形画像保持部１０８のＢａｎｋ５００に補正前画像の第三の矩形画像を書き込んでいる期間を示し、図５（Ｃ）の状態を表している。ここで、期間１１０６中の期間１１０８は、タイミングチャート１１１１に示すように、画素補間部１０９が第二の矩形画像を画素単位で読み出すために、座標演算部３０３で演算している期間を示している。さらに、期間１１０６中の期間１１０７は、タイミングチャート１１１０に示すように、メモリ１０７から矩形画像保持部１０８のＢａｎｋ５００に第四の矩形画像を書き込むために、座標演算部３０３で演算している期間を示している。
【００７２】
図１１に示す例は、矩形画像保持部１０８のＢａｎｋ５００への書き込むタイミングと、画素補間部１０９が矩形画像を画素単位で読み出すタイミングとを同じとしている。ところが、矩形画像保持部１０８のＢａｎｋ５００への書き込みが早く終了する場合や、画素補間部１０９が矩形画像を画素単位で読み出すのが終了するタイミングが早い場合もありうる。この場合には、同じＢａｎｋに書き込みと読み出しとが発生しないように制御する。
【００７３】
以上説明したように本実施形態によれば、補正前画像をメモリ１０７から読み出す時の座標の演算と、補正前画像を矩形画像保持部１０８から読み出す時の座標の演算とを、１つの補正前座標演算部で実行することができる。これにより、回路規模及び消費電力を削減することができる。
【００７４】
（その他の実施形態）
以上、第１及び第２の実施形態について具体的に説明したが、本発明は、例えば、ローリング歪などその他の歪補正に関しても適応可能であり、実施形態に限定されるものではない。その要旨を逸脱しない範囲において種々の変更が可能であることは言うまでもない。
【００７５】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７６】
１０３  補正前座標演算部
１０４  矩形読み出し制御部
１０７  メモリ
１０８  矩形画像保持部
１０９  画素補間部
１１１  補正後座標生成部
【図１】
0006440465.tif 000002
【図２】
0006440465.tif 000003
【図３】
0006440465.tif 000004
【図４】
0006440465.tif 000005
【図５】
0006440465.tif 000006
【図６】
0006440465.tif 000007
【図７】
0006440465.tif 000008
【図８】
0006440465.tif 000009
【図９】
0006440465.tif 000010
【図１０】
0006440465.tif 000011
【図１１】
0006440465.tif 000012