画像処理装置および画像処理方法
【課題】歪みの形状に応じて発生する補間演算の処理のエラーを回避することができる画像処理装置および画像処理方法を提供する。
【解決手段】撮像光学系の歪曲収差を有する入力画像データに歪補正処理を行う歪補正部を有し、歪補正部は、歪補正処理を行って出力する出力画像データの位置に対応した入力画像データの位置を表す座標を求める歪補正座標変換部と、入力画像データの座標に基づいて、歪補正処理に用いる入力画像データの範囲を算出する範囲算出部と、入力画像データの座標に引き続き、入力画像データの範囲の情報を記憶する補正情報記憶部と、入力画像データ記憶部と、入力画像データの範囲の情報が記憶された後、入力画像データ記憶部に記憶している入力画像データの量を確認し、補間演算に必要な量以上であるときに、入力画像データの座標に基づいて、入力画像データに対して補間演算を行って出力画像データを生成する補間演算部と、を備える。
【解決手段】撮像光学系の歪曲収差を有する入力画像データに歪補正処理を行う歪補正部を有し、歪補正部は、歪補正処理を行って出力する出力画像データの位置に対応した入力画像データの位置を表す座標を求める歪補正座標変換部と、入力画像データの座標に基づいて、歪補正処理に用いる入力画像データの範囲を算出する範囲算出部と、入力画像データの座標に引き続き、入力画像データの範囲の情報を記憶する補正情報記憶部と、入力画像データ記憶部と、入力画像データの範囲の情報が記憶された後、入力画像データ記憶部に記憶している入力画像データの量を確認し、補間演算に必要な量以上であるときに、入力画像データの座標に基づいて、入力画像データに対して補間演算を行って出力画像データを生成する補間演算部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの画像処理装置においては、例えば、1枚の静止画像を生成する際に、複数の画像処理が行われる。この画像処理装置内で行う複数の画像処理を、少ないメモリアクセスで行えるようにした画像処理装置が提案されている(特許文献1参照)。
【0003】
図5は、従来の画像処理装置の概略構成を示したブロック図である。図5に示した従来の画像処理装置は、バス1に接続された各部を制御するCPU2の制御によって、CCDなどの固体撮像装置から出力された撮像信号を、プリプロセス回路3によってプリプロセス処理する。このプリプロセス回路3によってプリプロセス処理された画像データは、バス1を介して、例えば、DRAM(Dynamic Random Access Memory)などのフレームメモリ4に一旦記憶される。続いて、イメージプロセス処理部5が、バス1を介してフレームメモリ4に記憶された画像データを読み出し、複数の画像処理を行った後に、JPEG(Joint Photographic Experts Group)処理回路6に出力する。そして、JPEG処理回路6によってJPEG処理された後の画像データを、バス1を介して再びフレームメモリ4に記憶する。
【0004】
このように、従来の画像処理装置においては、それぞれの画像処理を行う際に、例えば、DMA(Direct Memory Access)によって、バス1を介したフレームメモリ4へのアクセスが行われる。図5に示した従来の画像処理装置では、イメージプロセス処理部5内の各画像処理回路(イメージプロセス回路5−1〜イメージプロセス回路5−n)を直列に接続し、複数の画像処理をパイプライン処理することによって、少ないDMA帯域での複数の画像処理を実現している。
【0005】
ところで、一般的にカメラの光学系においては、歪曲収差が現れる。図6は、光学系の歪曲収差の一例を示した図である。例えば、画像処理装置が、図6(a)に示したような格子状の被写体を撮影した場合、光学系の歪曲収差によって、図6(b)に示すような樽型の歪みや、図6(c)に示すような糸巻き型の歪みを持った撮影画像となってしまう。近年のカメラでは、光学ズームの機能が搭載された光学系が多く、広角側では樽型の歪みが現れ、望遠側では糸巻き型の歪みが現れるなど、広角側と望遠側とで歪曲収差の状態が変化することが多い。このため、画像処理回路として、光学系の状態によって変化する歪曲収差を補正するための歪補正回路を備えた画像処理装置が提案されている(特許文献2参照)。
【0006】
特許文献2で提案されている従来の画像処理装置においては、歪曲収差の補正を行う歪補正回路を、例えば、図5に示した従来の画像処理装置のイメージプロセス処理部5内のイメージプロセス回路5−2として備えた場合を開示している。なお、図5に示した従来の画像処理装置においては、イメージプロセス処理部5によって画像処理を行った後に、JPEG処理回路6がJPEG処理を行っている。このJPEG処理は、横方向に8画素の画像データの単位で行われるため、イメージプロセス処理部5は、最初に画像データの縦横変換を行い、縦横変換した画像データに対して複数の画像処理を行った後の画像データをJPEG処理回路6に出力するようになっている。そのため、従来の歪補正回路であるイメージプロセス回路5−2には、フレームメモリ4に一旦記憶されている画像データを前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)がDMAによって取得し、さらに、縦横変換回路によって縦横変換された画像データが、入力画像データとして入力されている。そして、従来の歪補正回路は、入力された縦横変換後の画像データに対して光学系の歪曲収差の補正を行っている。
【0007】
ここで、従来の歪補正回路に入力画像データを入力する前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)について説明する。図7は、縦横変換回路がフレームメモリ4から画像データを読み出し、歪補正回路に入力画像データを出力する動作を模式的に示した図である。図7は、フレームメモリ4に記憶されている1画面の画像データを表している。縦横変換回路は、フレームメモリ4に記憶されている1画面の画像データを、予め定められた行数の幅の領域(以下、「ブロックライン」という)41に分割する。なお、各ブロックライン41の領域は、それぞれの行方向の領域が隣接するブロックライン41の領域と重複するように、各ブロックライン41の行数の幅が設定されている。
【0008】
そして、縦横変換回路は、ブロックライン41内の画像データを、図7に示した読み出し方向42のように、フレームメモリ4の行(Column)方向に読み出す。その後、縦横変換回路は、読み出したブロックライン41の画像データを、行(Column)方向に直交した、図7に示した出力方向43のようなフレームメモリ4の列(Row)方向に出力する。この出力方向43のようにフレームメモリ4の列(Row)方向で出力された画像データが、入力画像データとして歪補正回路に入力される。このように、縦横変換回路は、縦横変換した画像データを歪補正回路に入力する。なお、図7に示した出力方向43に読み出される画像データの1列(ライン)分を、「ユニットライン」という。
【0009】
図8は、縦横変換回路の概略構成および概略動作を示した図である。図8(a)に示したように縦横変換回路は、2つの小さなメモリ部(メモリ部511および512)を備えている。メモリ部511とメモリ部512とは、図示しない制御部によって、図8(b)に示すように、一方のメモリ部にフレームメモリ4から読み出した画像データを書き込んでいるときには、他方のメモリ部に書き込まれている画像データを読み出して歪補正回路に出力するように、切り替え制御がされる。図8(a)においては、メモリ部511にフレームメモリ4から読み出した画像データを書き込み(Write)、メモリ部512から画像データを読み出して歪補正回路に出力(Read)している状態の例を示している。
【0010】
メモリ部511またはメモリ部512に、フレームメモリ4から読み出した画像データを書き込む際には、図7に示した読み出し方向42と同様のフレームメモリ4の行(Column)方向に画像データをスキャン(ラスタスキャン)して、ブロックライン41に分割して書き込む。なお、メモリ部511およびメモリ部512は、フレームメモリ4の行(Column)方向と同じ長さのデータを記憶することができるメモリではなく、例えば、フレームメモリ4のバースト長の長さのデータを記憶することができるメモリである。従って、メモリ部511およびメモリ部512は、バースト長×予め定められた行数の幅の容量を持つメモリである。
【0011】
また、メモリ部511またはメモリ部512に記憶している画像データを、歪補正回路に読み出す(出力する)際には、図7に示した出力方向43と同様のフレームメモリ4の列(Row)方向に画像データをスキャンしながら読み出して出力する。このように、メモリ部に書き込む方向とメモリ部から読み出す方向とを変えることによって、画像データの縦横変換を行っている。
【0012】
次に、従来の画像処理装置において歪曲収差の補正を行う歪補正回路(イメージプロセス回路5−2)について説明する。図9は、従来の歪補正回路の概略構成を示したブロック図である。図9に示した従来の歪補正回路52は、縦横変換回路から入力された入力画像データを補正し、補正後の出力画像データを次段の画像処理回路に出力する。
【0013】
図9に示したように歪補正回路52は、補間位置生成部521と、歪補正座標変換部522と、ラインメモリ523と、メモリ制御部524と、補間演算部525とから構成される。補間位置生成部521は、補間して出力する出力画像データの位置を表す補間位置を生成する。歪補正座標変換部522は、補間位置生成部521が生成した補間位置に対して、予め設定されている光学系のズーム位置などに応じた歪曲収差特性の歪み補正式を適用して、歪み補正前の入力画像データの位置を表す座標に変換する。これにより、補間位置生成部521が生成した出力画像データの補間位置のデータを、どの位置(座標)の入力画像データを用いて補間を実行するかを求めることができる。
【0014】
ラインメモリ523は、イメージプロセス回路5−1から入力された入力画像データをユニットライン毎に一時的に記憶する。なお、ラインメモリ523は、予め定められた複数のユニットライン分の記憶領域を備え、各記憶領域が環(リング)状に接続されているような形態となっている。そして、補間演算に使用しなくなったユニットラインの入力画像データを順次書き換えることによって、予め定められているユニットライン分よりも多いユニットライン数の入力画像データを記憶することができるようになっている。
【0015】
メモリ制御部524は、歪補正座標変換部522が変換した歪み補正前の入力画像データの座標に基づいて、ラインメモリ523を制御する。補間演算部525は、歪補正座標変換部522が変換した歪み補正前の入力画像データの座標に基づいて、ラインメモリ523に記憶されている入力画像データに対して補間演算を行った出力画像データを生成し、次段の画像処理回路に出力する。
【0016】
ここで、従来の歪補正回路52における補間演算について説明する。補間演算部525は、所定の出力画像データの補間演算を行う場合に、歪み補正前の入力画像データが含まれる列(ライン)の入力画像データと、その周辺に位置する入力画像データが含まれる前後のラインの入力画像データを用いて、例えば、バイリニア補間やバイキュービック補間によって出力画像データを生成する。図10は、従来の歪補正回路52に備えたラインメモリと、ラインメモリに記憶されている入力画像データとの一例を模式的に示した図である。図10は、ラインメモリ523として16ライン(ユニットライン)分の入力画像データを記憶することができる記憶領域を備え、1列(ライン)の出力画像データを出力する際、補間する出力画像データに対応した歪み補正前の入力画像データのラインと、補間演算に必要な入力画像データの範囲(ユニットライン数)を表している。そして、図10に示した例では、出力画像データに対応した歪み補正前の入力画像データが記憶されているラインと、その1ライン前の入力画像データおよび2ライン後までの入力画像データを用いて、バイキュービック補間によって出力画像データを生成する例を示している。
【0017】
ところで、図6に示したような歪曲収差を持った光学系を用いて撮影された撮影画像における各ラインの歪みの形状は、そのライン毎に異なる。このため、補間演算部525が所定のラインの出力画像データを出力するために必要な入力画像データのライン数(ユニットライン数)も、出力画像データを出力するライン毎に異なる。例えば、図10に示したように、ラインaに示した入力画像データに基づいて1列(ライン)の出力画像データを生成する場合には、1ユニットライン目〜7ユニットライン目の入力画像データが必要であり、ラインbに示した入力画像データに基づいて1列(ライン)の出力画像データを生成する場合には、9ユニットライン目〜13ユニットライン目の入力画像データが必要であるというように、出力画像データを出力する列(ライン)毎に、必要な入力画像データのライン数(ユニットライン数)が異なる。
【0018】
しかしながら、所定のラインの出力画像データを出力するために必要な入力画像データのライン数(ユニットライン数)は、事前に求めることは困難であり、実際に座標変換を実行してみないと、補間演算に必要な入力画像データの適切なライン数を求めることができない。実際に座標変換を実行して必要な入力画像データのライン数を求めずに補間処理を行ってしまうと、例えば、補間演算に必要な入力画像データのライン数に対して、ラインメモリ523に記憶している入力画像データのライン数が少ない場合には、補間演算の処理が正常に終了せず、エラーとなってしまう。そして、補間演算の処理がエラーとなった場合には、ラインメモリ523に記憶している入力画像データのライン数が必要なライン数以上揃った後に、補間処理を再度行うこととなり、補間処理を効率的に行うことができない。
【0019】
このようなことから、各ラインの歪みの形状に影響されずに補間処理を正常に終了させるための対応として、ラインメモリ523に記憶する入力画像データのライン数、すなわち、ラインメモリ523に一時記憶することができる予め準備しておくユニットライン数を増やすことが考えられる。しかし、この対応では、実際の補間処理に使用しないユニットラインの入力画像データも記憶しておくこととなるため、ラインメモリの使用効率が低下してしまう。また、より多くのラインメモリを準備する必要があるため、歪補正回路の回路規模が増大してしまう要因ともなる。
【0020】
そこで、特許文献2においては、補間して出力する出力画像データの範囲に対する歪み補正前の入力画像データの範囲を、歪み補正の処理に先立って実行する歪補正範囲算出部を備えた歪補正回路も提案されている。以下の説明においては、歪補正範囲算出部を備えていない従来の歪補正回路52と区別するため、歪補正範囲算出部を備えた従来の歪補正回路を「歪補正回路53」という。歪補正回路53では、予め出力画像データの範囲、例えば、ブロックライン41の四辺に沿って、歪補正座標変換部522と同様の歪座標変換演算を行って、歪み補正前の入力画像データの四辺の座標を求める。これは、出力画像データを出力する範囲において、一番外側の周囲の出力画像データを生成するために必要な入力画像データの範囲(座標)を事前に算出しておくことによって、全ての出力画像データを補間演算するために必要な入力画像データの範囲は、事前に算出した範囲内に存在する入力画像データであるから、補間演算の処理がエラーとなることを回避することができるという考えに基づいたものである。
【0021】
特許文献2においては、求めた入力画像データの範囲の四辺の内、左端または右端のいずれかの一方の端の曲がり(歪み)が、一般的に考えられる最大の曲がり(歪み)であると仮定して、補間演算を行う際に用いる前側のユニットライン数と後側のユニットライン数とを決めている。すなわち、ブロックライン41の左右端において歪みが大きいいずれか一方の端の入力画像データに基づいて、補間演算に用いる入力画像データの範囲(ユニットライン数)を決めている。そして、ここで決めた前側のユニットライン数と後側のユニットライン数とを、当該ブロックライン41の補間演算を行う際に用いるユニットライン数として一律に設定している。
【0022】
図11は、従来の歪補正回路53において、補間演算を行う際に用いる前側のユニットライン数と後側のユニットライン数とを求める方法を説明する図である。図11は、歪補正範囲算出部が求めた入力画像データの範囲の左端または右端のいずれかの一方の端の入力画像データの位置を示している。補間演算を行う際に用いる前側のユニットライン数と後側のユニットライン数とを求めるときには、まず、最初に補間を行う入力画像データA(図11においては、入力画像データラインの上端)の位置(座標)を中心とする。
【0023】
そして、入力画像データのライン上で、中心とした入力画像データAの位置(座標)に対して前側(図11においては、左側)に最大に離れている入力画像データHの位置(座標)との差に基づいて、前側、すなわち、中心とした入力画像データAよりも過去の入力画像データHが含まれるユニットライン数を、postULB(ユニットラインバッファ:Unit Line Buffer)とする。また、入力画像データのライン上で、中心とした入力画像データAの位置(座標)に対して後側(図11においては、右側)に最大に離れている入力画像データCの位置(座標)との差に基づいて、後側、すなわち、中心とした入力画像データAよりも未来の入力画像データCが含まれるユニットライン数をpreULBとする。このように、入力画像データの範囲の左端および右端の入力画像データのラインに対して、それぞれ前側のユニットラインの数(postULB)と後側のユニットラインの数(preULB)とを求める。
【0024】
そして、入力画像データの範囲の左端のラインから求めたpostULBの値と、入力画像データの範囲の右端のラインから求めたpostULBの値との、いずれか大きい方の1つのpostULBの値(ユニットライン数)を最終的なpostULBとする。また、入力画像データの範囲の左端のラインから求めたpreULBの値と、入力画像データの範囲の右端のラインから求めたpreULBの値との、いずれか大きい方の1つのpreULBの値(ユニットライン数)を最終的なpreULBとする。このpostULBとpreULBとが、補間演算を行う際に用いるユニットライン数として一律に設定される。
【0025】
そして、歪補正回路53では、例えば、図9に示した従来の歪補正回路52のメモリ制御部524にpostULBとpreULBとを設定し、歪補正座標変換部522が変換した歪み補正前の画像データの座標、および設定されたpostULBとpreULBとの値に基づいて、ラインメモリ523を制御する。すなわち、メモリ制御部524は、ラインメモリ523に記憶している入力画像データのライン数を、設定されたpostULBとpreULBとを満足するように、ラインメモリ523に記憶するライン数を制御する。これにより、特許文献2で開示された歪補正回路53は、補間演算の処理がエラーとなることを回避し、補間演算を効率的に行うというものである。
【先行技術文献】
【特許文献】
【0026】
【特許文献1】特許第4179701号公報
【特許文献2】特開2005−45514号公報
【発明の概要】
【発明が解決しようとする課題】
【0027】
しかしながら、光学系の歪曲収差を持った光学系によって撮影された撮影画像における各ラインの歪みの形状は、必ずしも入力画像データの範囲の四辺の左端または右端のいずれかの一方の端の曲がり(歪み)が最大であるとは限らない。例えば、図12に示した入力画像データ範囲のラインの歪みの形状を模式的に示した例のように、左端のラインLまたは右端のラインRの曲がり(歪み)が最大ではなく、中央のラインCの曲がり(歪み)が最大となる場合もある。そして、例えば、中央のラインCの曲がり(歪み)が設定したpostULBおよびpreULBよりも大きい場合には、補間演算の処理がエラーとなり、ラインメモリ523に記憶している入力画像データのライン数が必要なライン数以上揃った後に、補間処理を再度行うこととなり、補間処理を効率的に行うことができないという問題がある。
【0028】
このような場合を考慮して、特許文献2に開示されているような歪補正回路53においても、postULBおよびpreULBに余裕(マージン)を持った値を設定するということが考えられる。しかしながら、マージンを持ったpostULBおよびpreULBを設定するということは、実際の補間処理に使用するラインよりも多くのラインメモリを使用することとなる。歪補正回路53においては、postULBおよびpreULBを事前に設定しているため、歪補正回路52に比べてマージンを少なくする設定することができるかもしれないが、マージンの量を最適にすることは困難であるため、やはり、ラインメモリの使用効率が低下してしまうという問題がある。また、マージンを考慮した多くのラインメモリを準備する必要があるため、歪補正回路の回路規模が増大してしまうことになる。
【0029】
また、ラインメモリの使用効率が低下すると、画像処理装置においてパイプライン処理される各画像処理が停止(ストール)するという現象が発生しやすくなる。実際にパイプライン処理のストールが発生した場合には、パイプライン処理されている各画像処理を再度行う必要が発生し、画像処理装置の全体の処理時間が長くなってしまう。または、画像処理装置の全体の処理が正常に終了しないという場合もある。このような、画像処理装置におけるパイプライン処理のストールを回避する方法として、各画像処理回路にラインメモリを備えることも考えられるが、この場合には、画像処理装置の回路規模がさらに増大してしまうこととなる。
【0030】
本発明は、上記の課題認識に基づいてなされたものであり、入力画像データの範囲内における各ラインの歪みの形状に応じて発生する補間演算の処理のエラーを回避し、歪補正処理を正常に終了することができる画像処理装置および画像処理方法を提供することを目的としている。
【課題を解決するための手段】
【0031】
上記の課題を解決するため、本発明の画像処理装置は、撮像光学系の歪曲収差特性に応じた歪曲収差を有する入力画像データに対する歪補正処理を行い、歪み補正された後の出力画像データを出力する歪補正部を有し、前記歪補正部は、歪補正処理を行って出力する前記出力画像データの位置に対応した前記入力画像データの位置を表す座標を求める歪補正座標変換部と、前記歪補正座標変換部が求めた前記入力画像データの座標に基づいて、歪補正処理に用いる前記入力画像データの範囲を算出する範囲算出部と、前記歪補正座標変換部が求めた前記入力画像データの座標に引き続き、前記範囲算出部が算出した前記入力画像データの範囲の情報を記憶する補正情報記憶部と、前記入力画像データの一部を一時的に記憶する入力画像データ記憶部と、前記補正情報記憶部に前記入力画像データの範囲の情報が記憶された後、該記憶された前記入力画像データの範囲の情報に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データの量を確認し、前記入力画像データ記憶部に記憶している前記入力画像データの量が補間演算に必要な量以上であるときに、前記補正情報記憶部に記憶されている前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データに対して補間演算を行って前記出力画像データを生成する補間演算部と、を備える、ことを特徴とする。
【0032】
また、本発明の画像処理装置は、歪み補正して出力する2次元の行列状に分布した前記出力画像データの内、列方向に1列に並べられた予め定められた数の前記出力画像データを1つのラインとし、2次元の行列状に分布された前記入力画像データの内、列方向に1列に並べられた予め定められた数の前記入力画像データを1つのユニットラインとし、前記入力画像データ記憶部に複数の前記ユニットラインを一時的に記憶し、前記補間演算部は、前記入力画像データ記憶部に記憶している複数の前記ユニットラインに含まれる前記入力画像データに基づいて歪補正処理を行うことによって、歪み補正された後の前記ラインの前記出力画像データを生成する、ことを特徴とする。
【0033】
また、本発明の前記範囲算出部は、歪み補正して出力する前記ラインに含まれる前記出力画像データの内、前記補間演算部によって最初に補間演算が行われる前記出力画像データに対応した前記入力画像データの座標が含まれる前記ユニットラインを基準とし、前記補間演算部によってその後に補間演算が行われる前記出力画像データに対応した前記入力画像データの座標が含まれる前記ユニットラインが、前記基準としたユニットラインに対して直交する第1の方向に最大に離れている前記ユニットラインの数を表す第1のユニットライン数と、前記第1の方向とは逆の第2の方向に最大に離れている前記ユニットラインの数を表す第2のユニットライン数とを、前記入力画像データの範囲の情報として算出する、ことを特徴とする。
【0034】
また、本発明の前記補正情報記憶部は、前記歪補正座標変換部が求めた前記入力画像データの座標および前記範囲算出部が算出した前記入力画像データの範囲の情報を記憶する記憶領域を複数備え、前記ライン毎に前記入力画像データの座標および前記入力画像データの範囲の情報を記憶する、ことを特徴とする。
【0035】
また、本発明の前記入力画像データ記憶部は、複数の前記ユニットラインの前記入力画像データを、前記ユニットライン毎に一時的に記憶し、前記補間演算部は、前記補正情報記憶部に記憶された前記第1のユニットライン数と前記第2のユニットライン数とに基づいて、前記入力画像データ記憶部に記憶している前記ユニットラインの数を確認し、該確認した結果に基づいて補間演算の開始を制御する演算制御部、を備え、前記演算制御部は、前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数以上の前記ユニットラインが、前記入力画像データ記憶部に記憶されていることが確認された後に、該補間演算部における補間演算を開始し、該補間演算部は、前記補正情報記憶部に記憶されている前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している複数の前記ユニットラインの前記入力画像データに対して補間演算を行うことによって、前記ラインに含まれる前記出力画像データをそれぞれ生成する、ことを特徴とする。
【0036】
また、本発明の前記補正情報記憶部は、前記出力画像データの前記ラインに含まれるそれぞれの前記出力画像データに対応して、前記歪補正座標変換部が求めた前記入力画像データの座標を記憶する座標記憶部と、前記範囲算出部が算出した前記第1のユニットライン数と、前記第2のユニットライン数とを記憶するユニットライン数記憶部と、を備え、前記座標記憶部は、前記ラインに含まれる前記出力画像データ分の前記入力画像データの座標を順次記憶し、前記ユニットライン数記憶部は、前記座標記憶部が記憶する前記ラインにおける前記第1のユニットライン数と前記第2のユニットライン数とをそれぞれ1つ記憶する、ことを特徴とする。
【0037】
また、本発明の画像処理装置は、前記範囲算出部が算出した前記第1のユニットライン数と前記第2のユニットライン数とに基づいて、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数を確認するライン数確認部、をさらに備え、前記ライン数確認部は、前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数が、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数以下である場合には、前記第1のユニットライン数と前記第2のユニットライン数とを前記補正情報記憶部に記憶し、前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数が、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数よりも多い場合には、エラーを表す信号を出力する、ことを特徴とする。
【0038】
また、本発明の前記歪補正座標変換部は、前記出力画像データの前記ラインに含まれるそれぞれの前記出力画像データの位置を表す補間位置を生成する補間位置生成部、を備え、前記間位置生成部が生成した前記補間位置を、予め設定された撮像光学系の歪曲収差特性に応じた変換特性に基づいて、前記入力画像データの位置を表す座標に変換する、ことを特徴とする。
【0039】
また、本発明の前記歪補正座標変換部は、前記補正情報記憶部に前記入力画像データの座標を記憶することができる記憶領域があるときに、前記入力画像データの座標を順次求め、前記補間演算部は、前記補正情報記憶部に前記入力画像データの範囲の情報が書き込まれた後に、前記補正情報記憶部から前記入力画像データの範囲の情報を読み出して、前記入力画像データ記憶部に記憶している前記入力画像データの量を確認する、ことを特徴とする。
【0040】
また、本発明の画像処理方法は、撮像光学系の歪曲収差特性に応じた歪曲収差を有する入力画像データに対する歪補正処理を行い、歪み補正された後の出力画像データを出力する歪補正ステップを有し、前記歪補正ステップは、歪補正処理を行って出力する前記出力画像データの位置に対応した前記入力画像データの位置を表す座標を求め、該求めた入力画像データの座標を補正情報記憶部に記憶する歪補正座標変換ステップと、前記歪補正座標変換ステップによって求めた前記入力画像データの座標に基づいて、歪補正処理に用いる前記入力画像データの範囲を算出し、該算出した入力画像データの範囲の情報を前記補正情報記憶部に記憶する範囲算出ステップと、補正情報記憶部に前記範囲算出ステップによって算出した前記入力画像データの範囲の情報が記憶された後、前記補正情報記憶部から前記入力画像データの範囲の情報を読み出し、読み出した前記入力画像データの範囲の情報に基づいて、入力画像データ記憶部に記憶している前記入力画像データの量を確認し、前記入力画像データ記憶部に記憶している前記入力画像データの量が補間演算に必要な量以上であるときに、前記補正情報記憶部から前記入力画像データの座標を読み出し、読み出した前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データに対して補間演算を行って前記出力画像データを生成する補間演算ステップと、を含む、ことを特徴とする。
【発明の効果】
【0041】
本発明によれば、入力画像データの範囲内における各ラインの歪みの形状に応じて発生する補間演算の処理のエラーを回避し、歪補正処理を正常に終了することができるという効果が得られる。
【図面の簡単な説明】
【0042】
【図1】本発明の第1の実施形態における歪補正回路の概略構成を示したブロック図である。
【図2】本発明の第2の実施形態における歪補正回路の概略構成を示したブロック図である。
【図3】本発明の第2の実施形態における歪補正回路に備える補間情報用メモリのメモリ構成の一例を示した図である。
【図4】本発明の第3の実施形態における歪補正回路の概略構成を示したブロック図である。
【図5】従来の画像処理装置の概略構成を示したブロック図である。
【図6】光学系の歪曲収差の一例を示した図である。
【図7】縦横変換回路がフレームメモリから画像データを読み出し、歪補正回路に入力画像データを出力する動作を模式的に示した図である。
【図8】縦横変換回路の概略構成および概略動作を示した図である。
【図9】従来の歪補正回路の概略構成を示したブロック図である。
【図10】従来の歪補正回路に備えたラインメモリと、ラインメモリに記憶されている入力画像データとの一例を模式的に示した図である。
【図11】従来の歪補正範囲算出部を備えた従来の歪補正回路において、補間演算を行う際に用いる前側のユニットライン数と後側のユニットライン数とを求める方法を説明する図である。
【図12】入力画像データ範囲のラインの歪みの形状の一例を模式的に示した図である。
【発明を実施するための形態】
【0043】
以下、本発明の実施形態について、図面を参照して説明する。本実施形態の画像処理装置は、図5に示した従来の画像処理装置に対して、イメージプロセス処理部5内の画像処理回路、より具体的には、イメージプロセス回路5−2として備えられた歪補正回路が異なる。
【0044】
<第1の実施形態>
図1は、本第1の実施形態における歪補正回路の概略構成を示したブロック図である。図1に示した本第1の実施形態の歪補正回路520は、本実施形態の画像処理装置のイメージプロセス処理部5内のイメージプロセス回路5−2として備えられる。そして、前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)から入力された入力画像データを補正し、補正後の出力画像データを次段の画像処理回路に出力する。なお、歪補正回路520は、出力画像データの1列(ライン)を補正する単位として処理する。
【0045】
図1に示したように本第1の実施形態の歪補正回路520は、補間位置生成部521と、歪補正座標変換部522と、ラインメモリ523と、メモリ制御部524と、ULB算出部526と、座標用メモリ527と、ULB用メモリ528と、補間演算部525と、から構成される。本第1の実施形態の歪補正回路520は、図9に示した従来の歪補正回路52に対して、ULB算出部526と、座標用メモリ527と、ULB用メモリ528とが追加された構成であり、その他の構成要素における動作は、図9に示した従来の歪補正回路52の構成要素の動作とほぼ同様である。従って、歪補正回路520において、図9に示した従来の歪補正回路52と同様の動作を行う構成要素には、同一の符号を付与し、動作の違いのみを説明する。
【0046】
補間位置生成部521は、補間して出力する1ラインに含まれる出力画像データの位置を表す補間位置を順次生成する。
【0047】
歪補正座標変換部522は、補間位置生成部521が生成した補間位置に基づいて、歪み補正前の入力画像データの位置を表す座標に順次変換する。そして、歪補正座標変換部522は、変換した歪み補正前の入力画像データの位置を表す座標の情報を、順次、座標用メモリ527およびULB算出部526に出力する。
【0048】
座標用メモリ527は、1ライン分の座標の情報を記憶するメモリである。座標用メモリ527は、歪補正座標変換部522から入力された歪み補正前の入力画像データの位置を表す1ライン分の座標の情報を順次記憶する。座標用メモリ527は、例えば、1ライン分の記憶領域を持つFIFO(First In First Out)メモリで構成される。なお、座標用メモリ527は、複数ライン分の記憶領域を持つ構成とすることもできる。
【0049】
ULB算出部526は、歪補正座標変換部522から順次入力される歪み補正前の入力画像データの位置を表す1ライン分の座標の情報に基づいて、1ラインの出力画像データの補間演算を行う際に用いる前側のユニットライン数(postULB)と後側のユニットライン数(preULB)とを算出する。そして、ULB算出部526は、算出したpostULBとpreULBとを、ULB用メモリ528に出力する。
【0050】
ULB用メモリ528は、ULB算出部526が算出した、1ラインの出力画像データの補間演算を行う際に用いるpostULBとpreULBとを記憶するメモリである。ULB用メモリ528は、座標用メモリ527に記憶される1ライン分の座標の情報に対応したpostULBとpreULBとを、それぞれ1つずつ記憶する。ULB用メモリ528は、例えば、2つの記憶領域を持つFIFOメモリで構成される。なお、ULB用メモリ528の記憶領域は、座標用メモリ527が持つライン数に対応しており、座標用メモリ527が複数ライン分の記憶領域を持つ構成である場合には、座標用メモリ527が持つライン数分のpostULBとpreULBとをそれぞれ記憶することができる領域を備える。すなわち、座標用メモリ527が持つラインの数に2を乗算した数の記憶領域を持った構成である。
【0051】
メモリ制御部524は、ULB用メモリ528に記憶されたpostULBとpreULBとに基づいて、ラインメモリ523に一時記憶されているユニットラインの数を確認する。そして、ラインメモリ523内に、補間演算を行う際に用いるpostULBとpreULBのユニットライン数の入力画像データが揃っている場合には、補間演算を開始するための制御信号を、補間演算部525に出力する。また、ラインメモリ523内に、補間演算を行う際に用いるpostULBとpreULBのユニットライン数の入力画像データが揃っていない場合には、補間演算を開始するための制御信号を出力せず、ラインメモリ523に必要なユニットライン数の入力画像データが揃うまで、補間演算部525による補間演算の開始を待たせる。そして、補間演算に必要なユニットライン数の入力画像データがラインメモリ523に揃った後に、補間演算を開始するための制御信号を出力して、補間演算部525に補間演算を開始させる。
【0052】
補間演算部525は、メモリ制御部524から入力された補間演算を開始するための制御信号に応じて、ラインメモリ523に記憶されている入力画像データに対して補間演算を行った出力画像データを生成する。なお、補間演算部525が補間演算を行う際には、座標用メモリ527に記憶されている歪み補正前の入力画像データの位置を表す座標の情報を順次読み出し、読み出した座標の情報に基づいて、ラインメモリ523に記憶されている入力画像データに対して補間演算を行う。
【0053】
次に、歪補正回路520における補間処理について説明する。歪補正回路520においては、以下のような手順で補間処理が行われる。なお、以下の説明においては、例えば、1つのブロックライン41が8行8列である場合を例として説明する。そして、補間して出力する出力画像データに対応した、例えば、図11に示した8個の入力画像データ(入力画像データA〜H)のラインが8列(ライン)あるものとする。そして、出力画像データ、補間位置、および入力画像データのそれぞれを、位置を示すXY座標で表し、Xに続く数字を列の番号、Yに続く数字を行の番号とする。例えば、2行3列目に対応する入力画像データは、入力画像データ(X3,Y2)と表す。
【0054】
また、座標用メモリ527は、1ユニットライン分、すなわち、8個(列)分の座標の情報を記憶する記憶領域を持つ構成であるものとし、ULB用メモリ528は、postULBとpreULBとをそれぞれ1つずつ記憶する記憶領域を持つ構成であるものとして説明する。なお、座標用メモリ527およびULB用メモリ528は、例えば、FIFOメモリで構成されるが、以下の説明においては、説明を容易にするため、座標用メモリ527およびULB用メモリ528は、それぞれ、例えば、SRAM(Static Random Access Memory)で構成されているものとして説明する。
【0055】
また、ラインメモリ523は、各記憶領域が環(リング)状に接続されているが、少なくとも1ユニットライン分の補間演算に必要な入力画像データを、同時に記憶しておくことができる記憶領域(ライン数)を備えているものとする。
【0056】
歪補正回路520における補間処理が開始されると、
(手順1):ラインメモリ523は、ユニットライン毎に入力画像データの一時記憶を開始する。また、補間位置生成部521は、最初に補間して出力する1列目に含まれる1行目の出力画像データ(X1,Y1)の位置を表す補間位置(X1,Y1)を生成する。
(手順2):歪補正座標変換部522は、補間位置生成部521が生成した補間位置(X1,Y1)に対する、歪み補正前の入力画像データ(図11に示した例では、入力画像データA)の位置を表す座標(X1,Y1)を、予め設定されている光学系のズーム位置などに応じた歪曲収差特性の歪み補正式に基づいて求める。そして、歪補正座標変換部522は、変換した入力画像データの位置を表す座標(X1,Y1)の情報を、座標用メモリ527およびULB算出部526に出力する。
(手順3):座標用メモリ527は、歪補正座標変換部522から入力された座標(X1,Y1)を、座標用のメモリ領域(例えば、1番目の記憶領域)に記憶する。また、ULB算出部526は、歪補正座標変換部522から入力された座標(X1,Y1)を、postULB(ユニットライン数)とpreULB(ユニットライン数)とを算出する基準(中心)の座標とする。
【0057】
(手順4):補間位置生成部521は、2番目に補間して出力する1列目に含まれる2行目の出力画像データ(X1,Y2)の位置を表す補間位置(X1,Y2)を生成する。
(手順5):歪補正座標変換部522は、補間位置生成部521が生成した補間位置(X1,Y2)に基づいて、歪み補正前の入力画像データ(図11に示した例では、入力画像データB)の位置を表す座標(X1,Y2)を求め、求めた入力画像データの位置を表す座標(X1,Y2)の情報を、座標用メモリ527およびULB算出部526に出力する。
(手順6):座標用メモリ527は、歪補正座標変換部522から入力された座標(X1,Y2)を、座標用のメモリ領域(例えば、2番目の記憶領域)に記憶する。また、ULB算出部526は、歪補正座標変換部522から入力された座標(X1,Y2)と、中心座標(X1,Y1)とを比較し、postULBとpreULBとを算出する。そして、ULB算出部526は、算出したpostULBの値(ユニットライン数)とpreULBの値(ユニットライン数)とを一時保管する。
【0058】
(手順7):補間位置生成部521は、3番目に補間して出力する1列目に含まれる3行目の出力画像データ(X1,Y3)の位置を表す補間位置(X1,Y3)を生成する。
(手順8):歪補正座標変換部522は、補間位置生成部521が生成した補間位置(X1,Y3)に基づいて、歪み補正前の入力画像データ(図11に示した例では、入力画像データC)の位置を表す座標(X1,Y3)を求め、求めた入力画像データの位置を表す座標(X1,Y3)の情報を、座標用メモリ527およびULB算出部526に出力する。
(手順9):座標用メモリ527は、歪補正座標変換部522から入力された座標(X1,Y3)を、座標用のメモリ領域(例えば、3番目の記憶領域)に記憶する。また、ULB算出部526は、歪補正座標変換部522から入力された座標(X1,Y3)と、中心座標(X1,Y1)とを比較し、postULBとpreULBとを算出する。そして、ULB算出部526は、算出したpostULBの値およびpreULBの値と、一時保管しているpostULBの値およびpreULBの値とをそれぞれ比較し、いずれか大きい方の1つの値(ユニットライン数)を、それぞれpostULBおよびpreULBとして更新し、更新したpostULBの値(ユニットライン数)およびpreULBの値(ユニットライン数)を一時保管する。
【0059】
(手順10):手順4〜手順6を繰り返し、1列目に含まれる7行目の出力画像データ(X1,Y7)に対する処理が終了した後、補間位置生成部521は、最後(8番目)に補間して出力する1列目に含まれる8行目の出力画像データ(X1,Y8)の位置を表す補間位置(X1,Y8)を生成する。
(手順11):歪補正座標変換部522は、補間位置生成部521が生成した補間位置(X1,Y8)に基づいて、歪み補正前の入力画像データ(図11に示した例では、入力画像データH)の位置を表す座標(X1,Y8)を求め、求めた入力画像データの位置を表す座標(X1,Y8)の情報を、座標用メモリ527およびULB算出部526に出力する。
(手順12):座標用メモリ527は、歪補正座標変換部522から入力された座標(X1,Y8)を、座標用のメモリ領域(例えば、8番目の記憶領域)に記憶する。また、ULB算出部526は、歪補正座標変換部522から入力された座標(X1,Y8)と、中心座標(X1,Y1)とを比較し、postULBとpreULBとを算出する。そして、ULB算出部526は、算出したpostULBの値およびpreULBの値と、一時保管しているpostULBの値およびpreULBの値とをそれぞれ比較し、いずれか大きい方の1つの値(ユニットライン数)を、それぞれpostULBおよびpreULBとして更新し、更新したpostULBの値(ユニットライン数)およびpreULBの値(ユニットライン数)を、ULB用メモリ528に記憶する。
【0060】
このようにして、1列目にユニットラインの各入力画像データの位置を表す座標と、図11に示したような1列目にユニットラインのpostULBおよびpreULBの値が求められる。
【0061】
(手順13):ULB用メモリ528にpostULBとpreULBとが記憶されると、メモリ制御部524は、ULB用メモリ528に記憶されたpostULBとpreULBとに基づいて、ラインメモリ523に一時記憶されているユニットラインの数を確認する。そして、ラインメモリ523内に、postULBとpreULBのユニットライン数の入力画像データが揃っている場合には、メモリ制御部524は、補間演算を開始するための制御信号を、補間演算部525に出力する。また、ラインメモリ523内に、postULBとpreULBのユニットライン数の入力画像データが揃っていない場合には、メモリ制御部524は、ラインメモリ523に必要なユニットライン数の入力画像データが揃うまで、ラインメモリ523に一時記憶されているユニットラインの数の確認を繰り返す。そして、補間演算に必要なユニットライン数の入力画像データがラインメモリ523に揃った後に、メモリ制御部524は、補間演算を開始するための制御信号を、補間演算部525に出力する。
【0062】
(手順14):補間演算部525は、メモリ制御部524から補間演算を開始するための制御信号が入力されると、ラインメモリ523に記憶されている入力画像データに対して補間演算を行った出力画像データを生成する。このとき、補間演算部525は、座標用メモリ527に記憶されている歪み補正前の入力画像データの位置を表す座標の情報を、1番目の座標用のメモリ領域から順次読み出し、読み出した座標の情報に基づいて、ラインメモリ523に記憶されている入力画像データに対する補間演算を順次行う。
【0063】
(手順15):補間演算部525による補間演算が開始され、座標用メモリ527に記憶されている歪み補正前の入力画像データの位置を表す座標の情報(ここでは、1番目の座標用のメモリ領域に記憶されている座標の情報)が読み出されると、補間位置生成部521は、座標用メモリ527に空いている記憶領域が存在すると認識する。そして、補間位置生成部521は、次の列の最初に補間して出力する2列目に含まれる1行目の出力画像データ(X2,Y1)の位置を表す補間位置(X2,Y1)を生成する。以降、手順2〜手順14と同様に、座標用メモリ527に記憶されている座標の情報が読み出されて補間演算が行われる、すなわち、座標用メモリ527に空いている記憶領域が認識される毎に、補間位置の生成、歪み補正前の入力画像データの位置を表す座標への変換、座標用メモリ527への記憶(座標情報の更新)、postULBおよびpreULBの算出、ラインメモリ523に一時記憶されているユニットラインの数の確認、および補間演算を行った出力画像データの生成を繰り返す。そして、最後の列(8列目)の最後の行(8行目)の出力画像データの生成が終了したときに、補間処理を終了する。
【0064】
上記に述べたように、本第1の実施形態の歪補正回路520では、補間して出力する出力画像データの列(ライン)毎にpostULBおよびpreULBを算出することができる。また、算出したpostULBとpreULBとに基づいて、ラインメモリ523内に、補間演算を行う際に用いるユニットライン数の入力画像データが揃っているか否かを確認することができる。そして、ラインメモリ523に必要なユニットライン数の入力画像データが揃った後に、補間演算を開始することができる。すなわち、補間演算部525が補間演算を開始するタイミングでは、補間して出力する出力画像データの列(ライン)のpostULBとpreULBとの値が、すでに、ULB用メモリ528に記憶されている。これにより、補間して出力するライン毎に補間演算を行う際に用いるユニットライン数が、補間して出力する出力画像データの列(ライン)毎に異なる場合でも、それぞれに最適なユニットライン数の入力画像データを用いて補間演算を行うことができる。このように、本第1の実施形態の歪補正回路520は、補間して出力する出力画像データの列(ライン)毎に、補間演算を行う際に用いるユニットライン数を算出し、必要なユニットライン数の入力画像データが揃った後に補間演算を行うため、補間演算の処理がエラーとなることを回避することができ、効率的に補間演算を完了することができる。
【0065】
また、本第1の実施形態の歪補正回路520では、ラインメモリ523に記憶しておく入力画像データのライン数にマージンを持たせる必要がないため、ラインメモリ523の使用効率を向上させることができる。このことにより、本実施形態の画像処理装置においてパイプライン処理のストールが発生する割合を低減することができ、画像処理装置の全体の処理時間を短縮させる効果を得ることができる。また、不必要な回路規模の増大を回避することもできる。
【0066】
なお、上記に述べた補間処理の手順においては、座標用メモリ527は、1ライン分の座標の情報を記憶する記憶領域を持ち、ULB用メモリ528は、postULBとpreULBとをそれぞれ1つずつ記憶する記憶領域を持つ構成であるものとして説明した。そして、手順15において補間演算部525による補間演算が開始された後に、2列目の処理を開始する場合の例を説明した。しかし、上記に述べたように、座標用メモリ527に複数ライン分の記憶領域を持ち、ULB用メモリ528は、座標用メモリ527が持つライン数分のpostULBとpreULBとをそれぞれ記憶することができる領域を備えることもできる。この場合、手順15において補間演算部525による補間演算が開始された後に2列目の処理を開始するのではなく、手順12において1列目のpostULBの値およびpreULBの値をULB用メモリ528に記憶した後に、引き続き、手順13と平行して2列目の処理を開始することもできる。そして、手順15のように、座標用メモリ527に空いている記憶領域が存在するか否かの認識は、座標用メモリ527に備えた複数ライン分の記憶領域を全て使用してしまったときに行うのみとなる。
【0067】
<第2の実施形態>
次に、本実施形態の画像処理装置のイメージプロセス回路5−2として備える歪補正回路の別の構成について説明する。図2は、本第2の実施形態における歪補正回路の概略構成を示したブロック図である。図2に示した本第2の実施形態の歪補正回路530は、図1に示した歪補正回路520に代わって、本実施形態の画像処理装置のイメージプロセス処理部5内のイメージプロセス回路5−2として備えられる。そして、図1に示した歪補正回路520と同様に、前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)から入力された入力画像データを補正し、補正後の出力画像データを次段の画像処理回路に出力する。また、歪補正回路530は、図1に示した歪補正回路520と同様に、出力画像データの1列(ライン)を補正する単位として処理する。
【0068】
図2に示したように本第2の実施形態の歪補正回路530は、補間位置生成部521と、歪補正座標変換部522と、ラインメモリ523と、メモリ制御部524と、ULB算出部526と、補間情報用メモリ531と、補間演算部525と、から構成される。本第2の実施形態の歪補正回路530は、図1に示した歪補正回路520内の座標用メモリ527とULB用メモリ528とを、1つの補間情報用メモリ531で構成している。その他の構成要素における動作は、図1に示した歪補正回路520の構成要素の動作とほぼ同様である。従って、歪補正回路530において、図1に示した歪補正回路520と同様の動作を行う構成要素には、同一の符号を付与し、動作の違いのみを説明する。
【0069】
歪補正座標変換部522は、補間位置生成部521が生成した補間位置に基づいて、歪み補正前の入力画像データの位置を表す座標に順次変換し、変換した歪み補正前の入力画像データの位置を表す座標の情報を、順次、補間情報用メモリ531およびULB算出部526に出力する。
【0070】
ULB算出部526は、歪補正座標変換部522から順次入力される歪み補正前の入力画像データの位置を表す1ライン分の座標の情報に基づいて、1ラインの出力画像データの補間演算を行う際に用いるpostULBとpreULBとを算出し、算出したpostULBとpreULBとを、補間情報用メモリ531に出力する。
【0071】
補間情報用メモリ531は、1ライン分の座標の情報およびこの1ライン分の座標の情報に対応したpostULBとpreULBとを、補間情報として記憶するメモリである。補間情報用メモリ531は、図1に示した座標用メモリ527と同様に、歪補正座標変換部522から入力された歪み補正前の入力画像データの位置を表す1ライン分の座標の情報を順次記憶する。また、補間情報用メモリ531は、図1に示したULB用メモリ528と同様に、記憶される1ライン分の座標の情報に対応したpostULBとpreULBとを、それぞれ1つずつ記憶する。補間情報用メモリ531は、1ライン分の座標の情報およびこの1ライン分の座標の情報に対応したpostULBとpreULBとを1つの組として記憶することができる記憶領域を持つ、例えば、SRAMで構成される。そして、補間情報用メモリ531は、複数ライン分、すなわち、複数の組の記憶領域を持つ構成とすることもできる。
【0072】
メモリ制御部524は、補間情報用メモリ531に記憶されたpostULBとpreULBとに基づいて、ラインメモリ523に一時記憶されているユニットラインの数を確認する。そして、ラインメモリ523内に、補間演算を行う際に用いるpostULBとpreULBのユニットライン数の入力画像データが揃っているか否かに応じて、補間演算部525による補間演算の開始を制御する。
【0073】
補間演算部525は、メモリ制御部524から入力された補間演算を開始するための制御信号に応じて、補間演算を行った出力画像データを生成する。補間演算部525が補間演算を行う際には、補間情報用メモリ531に記憶されている歪み補正前の入力画像データの位置を表す座標の情報を順次読み出し、読み出した座標の情報に基づいて、ラインメモリ523に記憶されている入力画像データに対して補間演算を行う。
【0074】
ここで、本第2の実施形態の歪補正回路530と図1に示した第1の実施形態の歪補正回路520とで異なる構成要素である補間情報用メモリ531における補間情報(1ライン分の座標の情報および1ライン分の座標の情報に対応したpostULBとpreULBの値)の書き込みおよび読み出し順番について説明する。図3は、本第2の実施形態における歪補正回路530に備える補間情報用メモリ531のメモリ構成の一例を示した図である。図3は、1ライン分の補間情報を記憶することができる記憶領域を備えた補間情報用メモリ531の例を示している。
【0075】
図3に示すように、補間情報用メモリ531は、座標の情報を記憶する座標用メモリ領域と、座標の情報に対応したpostULBとpreULBとを記憶するULB用メモリ領域とを備えている。
【0076】
補間情報用メモリ531に、補間情報を書き込む場合には、まず、歪補正座標変換部522から入力された歪み補正前の入力画像データの位置を表す1ライン分の座標の情報を、座標用メモリ領域内の最初の記憶領域から順次書き込む(記憶する)。そして、1ライン分の座標の情報の書き込みが終了した後に、ULB算出部526から入力されたpostULBとpreULBとを書き込む(記憶する)。図3では、ライト順1〜nの順番に1ライン分の座標の情報を順次書き込む。その後、n+1でpreULBを書き込み、n+2でpostULBを書き込む場合を示している。
【0077】
補間情報用メモリ531から、補間情報を読み出す場合には、まず、メモリ制御部524にpostULBとpreULBとを読み出す。そして、補間演算部525が補間演算を開始したときに、座標用メモリ領域内の最初の記憶領域から順次1ライン分の座標の情報を読み出す。図3では、リード順1においてpreULBをメモリ制御部524に読み出し、リード順2においてpostULBをメモリ制御部524に読み出す。その後、リード順3〜n+2において1ライン分の座標の情報を順次補間演算部525に読み出す場合を示している。
【0078】
上記に述べたように、本第2の実施形態の歪補正回路530では、図1に示した第1の実施形態の歪補正回路520内の座標用メモリ527とULB用メモリ528とが、1つの補間情報用メモリ531に代わったことにより、補間情報用メモリ531の書き込みおよび読み出し方法が異なるが、図1に示した第1の実施形態の歪補正回路520と同様の効果を得ることができる。なお、本第2の実施形態の歪補正回路530における補間処理は、補間情報用メモリ531の書き込みおよび読み出し方法が異なるのみであり、図1に示した第1の実施形態の歪補正回路520における補間処理と同様であるため、詳細な説明は省略する。
【0079】
<第3の実施形態>
次に、本実施形態の画像処理装置のイメージプロセス回路5−2として備える歪補正回路の別の構成について説明する。図4は、本第3の実施形態における歪補正回路の概略構成を示したブロック図である。図4に示した本第3の実施形態の歪補正回路540は、図1に示した歪補正回路520または図2に示した歪補正回路530に代わって、本実施形態の画像処理装置のイメージプロセス処理部5内のイメージプロセス回路5−2として備えられる。そして、図1に示した歪補正回路520および図2に示した歪補正回路530と同様に、前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)から入力された入力画像データを補正し、補正後の出力画像データを次段の画像処理回路に出力する。また、歪補正回路540は、図1に示した歪補正回路520および図2に示した歪補正回路530と同様に、出力画像データの1列(ライン)を補正する単位として処理する。
【0080】
図4に示したように本第3の実施形態の歪補正回路540は、補間位置生成部521と、歪補正座標変換部522と、ラインメモリ523と、メモリ制御部524と、ULB算出部526と、エラーチェッカ541と、座標用メモリ527と、ULB用メモリ528と、補間演算部525と、から構成される。本第3の実施形態の歪補正回路540は、図1に示した歪補正回路520に、エラーチェッカ541が追加された構成である。その他の構成要素における動作は、図1に示した歪補正回路520の構成要素の動作とほぼ同様である。従って、歪補正回路540において、図1に示した歪補正回路520と同様の動作を行う構成要素には、同一の符号を付与し、動作の違いのみを説明する。
【0081】
上述したように、補間して出力する出力画像データに対応した歪み補正前の入力画像データのライン数は、出力画像データを出力するライン毎に異なる(図10参照)。また、歪補正回路内に備えているラインメモリ523に記憶することができる入力画像データのユニットライン数は、予め定められたライン数である。従って、図1に示した歪補正回路520や、図2に示した歪補正回路530のように、事前にpostULBとpreULBとが求められている場合であっても、ラインメモリ523に記憶することができる入力画像データのユニットライン数を超えるような補間演算の処理を行うことはできない。すなわち、ラインメモリ523に出力画像データを生成するために必要なライン数の入力画像データが記憶されていない場合には、補間演算部525による1ライン分の補間演算の処理が正常に終了せず、エラーとなってしまう。そこで、本第3の実施形態の歪補正回路540では、事前に求められたpostULBとpreULBとに基づいて、補間演算の処理がエラーとなることを回避する仕組みを備える。
【0082】
ULB算出部526は、歪補正座標変換部522から順次入力される歪み補正前の入力画像データの位置を表す1ライン分の座標の情報に基づいて、1ラインの出力画像データの補間演算を行う際に用いるpostULBとpreULBとを算出し、算出したpostULBとpreULBとを、エラーチェッカ541に出力する。
【0083】
ULB用メモリ528は、エラーチェッカ541から入力されたpostULBとpreULBとを記憶する
【0084】
エラーチェッカ541は、ULB算出部526が算出した、postULBとpreULBとに基づいて、歪補正回路540内に備えるラインメモリ523が記憶することができる入力画像データのユニットライン数が、1ラインの出力画像データの補間演算を行うのに必要なライン数を超えているか否かを判断する。そして、1ラインの出力画像データの補間演算を行うのに必要なライン数を超えていない、すなわち、ラインメモリ523内に、補間演算を行う際に必要なライン数の入力画像データを記憶することができる場合には、ULB算出部526が算出した、postULBとpreULBとを、ULB用メモリ528に出力する。また、1ラインの出力画像データの補間演算を行うのに必要なライン数を超えている、すなわち、ラインメモリ523内に、補間演算を行う際に必要なライン数の入力画像データを記憶することができない場合には、補間演算の処理がエラーとなることを表すULBエラーの信号を、例えば、本実施形態の画像処理装置における全体の制御部であるCPU2に出力する。
【0085】
CPU2は、エラーチェッカ541から入力されたULBエラーに応じて、歪補正回路540における補間処理を中止する。そして、CPU2は、1ラインの出力画像データの補間演算を行うのに必要な入力画像データのライン数が、歪補正回路540内に備えたラインメモリ523が記憶することができる入力画像データのユニットライン数よりも少なくなるように、本実施形態の画像処理装置の種々の設定を変更した後に、再度、歪補正回路540による補間処理を開始する。
【0086】
CPU2が変更する設定としては、例えば、ユニットラインに含まれる入力画像データの数、すなわち、ブロックライン41として予め定められた行数の幅を小さくするなどが考えられる。これは、ブロックライン41の幅を小さくすることによって、小さい幅の1ラインの出力画像データの補間演算を行うのに必要な入力画像データのライン数が少なくなるからである。図10を参照してより具体的な例を説明すると、上述したように、ラインaに示した入力画像データに基づいて1ラインの出力画像データを生成する場合には、1ユニットライン目〜7ユニットライン目の入力画像データが必要である。ここで、ブロックライン41の幅を小さくすることによって、例えば、ラインaに示した入力画像データの下側半分に基づいて1ラインの出力画像データを生成する場合には、1ユニットライン目〜5ユニットライン目の入力画像データがあれば、1ラインの出力画像データを生成することができる。このように、ブロックライン41の幅を小さくすることによって、1ラインの出力画像データの補間演算を行うのに必要な入力画像データのライン数が少なくなる。
【0087】
なお、例えば、各ラインの歪みが少ない場合には、歪補正回路540内に備えたラインメモリ523のライン数を全て使用して、1ラインの出力画像データの補間演算を行うように設定するように、ブロックライン41として予め定める行数の幅を大きくすることによって、1画面の画像データを分割するブロックライン41の数を少なくし、歪補正回路540による補間処理の処理時間を短縮することもできる。
【0088】
上記に述べたように、本第3の実施形態の歪補正回路540では、図1に示した第1の実施形態の歪補正回路520と同様の効果を得ることができるとともに、歪補正回路540内に備えたラインメモリ523の容量に起因して、補間演算の処理がエラーとなることを事前に回避することができ、効率的に補間演算を完了することができる。
【0089】
上記に述べたとおり、本発明を実施するための形態によれば、補間して出力する出力画像データの列(ライン)毎にpostULBおよびpreULBを算出し、算出したpostULBとpreULBとに基づいて、ラインメモリ内に、補間演算を行う際に用いるユニットライン数の入力画像データが揃っているか否かを確認することができる。そして、ラインメモリに必要なユニットライン数の入力画像データが揃った後に、補間演算を開始することができる。これにより、補間して出力するライン毎に補間演算を行う際に用いるユニットライン数が、補間して出力する出力画像データの列(ライン)毎に異なる場合でも、それぞれに最適なユニットライン数の入力画像データを用いて補間演算を行うことができ、補間演算の処理がエラーとなることを回避し、効率的に補間演算を完了することができる。
【0090】
また、本発明を実施するための形態によれば、歪補正回路に備えたラインメモリの使用効率を向上させることができ、画像処理装置においてパイプライン処理のストールが発生する割合を低減し、画像処理装置の全体の処理時間を短縮させる効果を得ることができる。また、不用意に歪補正回路の回路規模が増大してしまうことを回避することもできる。
【0091】
なお、本実施形態においては、歪補正範囲算出部を備えることもできる。この構成とすることによって、本実施形態の歪補正回路によって補間処理を実施する前に、ULBエラーが発生しない出力画像データの1ライン、すなわち、ブロックライン41として予め定める行数の幅を事前に認識することができる。より具体的には、例えば、第3の実施形態デ示した歪補正回路540では、補間処理を開始した後にエラーチェッカ541が、ULB算出部526が算出したpostULBとpreULBとに基づいて、ラインメモリ523が記憶することができる入力画像データのライン数が、1ラインの出力画像データの補間演算を行うのに必要なライン数を超えているか否かを判断している。すなわち、ULBエラーは、補間処理を開始した後に判断される。そのため、エラーが発生したときには、ブロックライン41として予め定める行数の幅を変更した後に、再度、歪補正回路540による補間処理を開始することとなる。歪補正範囲算出部をさらに備えている場合には、事前に1ラインの出力画像データの補間演算を行うのに必要なライン数を確認することができることにより、歪補正範囲算出部が算出したpostULBとpreULBとは、ブロックライン41における最大の値でないという可能性もあるが、ULBエラーが発生する頻度を低減することができる可能性もある。従って、歪補正範囲算出部によって、補間演算の処理がエラーとなることを事前に回避することができ、さらに効率的に補間演算を完了することができる可能性を有している。
【0092】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【0093】
1・・・バス
2・・・CPU
3・・・プリプロセス回路
4・・・フレームメモリ
41・・・ブロックライン
5・・・イメージプロセス処理部
5−1,5−2,5−n・・・イメージプロセス回路
511・・・メモリ部
512・・・メモリ部
52,520,530,540・・・歪補正回路(歪補正部)
521・・・補間位置生成部(歪補正座標変換部、補間位置生成部)
522・・・歪補正座標変換部(歪補正座標変換部)
523・・・ラインメモリ(入力画像データ記憶部)
524・・・メモリ制御部(補間演算部、演算制御部)
525・・・補間演算部(補間演算部)
526・・・ULB算出部(範囲算出部)
527・・・座標用メモリ(補正情報記憶部,座標記憶部)
528・・・ULB用メモリ(補正情報記憶部,ユニットライン数記憶部)
531・・・補間情報用メモリ(補正情報記憶部)
541・・・エラーチェッカ(ライン数確認部)
6・・・JPEG処理回路
【技術分野】
【0001】
本発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの画像処理装置においては、例えば、1枚の静止画像を生成する際に、複数の画像処理が行われる。この画像処理装置内で行う複数の画像処理を、少ないメモリアクセスで行えるようにした画像処理装置が提案されている(特許文献1参照)。
【0003】
図5は、従来の画像処理装置の概略構成を示したブロック図である。図5に示した従来の画像処理装置は、バス1に接続された各部を制御するCPU2の制御によって、CCDなどの固体撮像装置から出力された撮像信号を、プリプロセス回路3によってプリプロセス処理する。このプリプロセス回路3によってプリプロセス処理された画像データは、バス1を介して、例えば、DRAM(Dynamic Random Access Memory)などのフレームメモリ4に一旦記憶される。続いて、イメージプロセス処理部5が、バス1を介してフレームメモリ4に記憶された画像データを読み出し、複数の画像処理を行った後に、JPEG(Joint Photographic Experts Group)処理回路6に出力する。そして、JPEG処理回路6によってJPEG処理された後の画像データを、バス1を介して再びフレームメモリ4に記憶する。
【0004】
このように、従来の画像処理装置においては、それぞれの画像処理を行う際に、例えば、DMA(Direct Memory Access)によって、バス1を介したフレームメモリ4へのアクセスが行われる。図5に示した従来の画像処理装置では、イメージプロセス処理部5内の各画像処理回路(イメージプロセス回路5−1〜イメージプロセス回路5−n)を直列に接続し、複数の画像処理をパイプライン処理することによって、少ないDMA帯域での複数の画像処理を実現している。
【0005】
ところで、一般的にカメラの光学系においては、歪曲収差が現れる。図6は、光学系の歪曲収差の一例を示した図である。例えば、画像処理装置が、図6(a)に示したような格子状の被写体を撮影した場合、光学系の歪曲収差によって、図6(b)に示すような樽型の歪みや、図6(c)に示すような糸巻き型の歪みを持った撮影画像となってしまう。近年のカメラでは、光学ズームの機能が搭載された光学系が多く、広角側では樽型の歪みが現れ、望遠側では糸巻き型の歪みが現れるなど、広角側と望遠側とで歪曲収差の状態が変化することが多い。このため、画像処理回路として、光学系の状態によって変化する歪曲収差を補正するための歪補正回路を備えた画像処理装置が提案されている(特許文献2参照)。
【0006】
特許文献2で提案されている従来の画像処理装置においては、歪曲収差の補正を行う歪補正回路を、例えば、図5に示した従来の画像処理装置のイメージプロセス処理部5内のイメージプロセス回路5−2として備えた場合を開示している。なお、図5に示した従来の画像処理装置においては、イメージプロセス処理部5によって画像処理を行った後に、JPEG処理回路6がJPEG処理を行っている。このJPEG処理は、横方向に8画素の画像データの単位で行われるため、イメージプロセス処理部5は、最初に画像データの縦横変換を行い、縦横変換した画像データに対して複数の画像処理を行った後の画像データをJPEG処理回路6に出力するようになっている。そのため、従来の歪補正回路であるイメージプロセス回路5−2には、フレームメモリ4に一旦記憶されている画像データを前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)がDMAによって取得し、さらに、縦横変換回路によって縦横変換された画像データが、入力画像データとして入力されている。そして、従来の歪補正回路は、入力された縦横変換後の画像データに対して光学系の歪曲収差の補正を行っている。
【0007】
ここで、従来の歪補正回路に入力画像データを入力する前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)について説明する。図7は、縦横変換回路がフレームメモリ4から画像データを読み出し、歪補正回路に入力画像データを出力する動作を模式的に示した図である。図7は、フレームメモリ4に記憶されている1画面の画像データを表している。縦横変換回路は、フレームメモリ4に記憶されている1画面の画像データを、予め定められた行数の幅の領域(以下、「ブロックライン」という)41に分割する。なお、各ブロックライン41の領域は、それぞれの行方向の領域が隣接するブロックライン41の領域と重複するように、各ブロックライン41の行数の幅が設定されている。
【0008】
そして、縦横変換回路は、ブロックライン41内の画像データを、図7に示した読み出し方向42のように、フレームメモリ4の行(Column)方向に読み出す。その後、縦横変換回路は、読み出したブロックライン41の画像データを、行(Column)方向に直交した、図7に示した出力方向43のようなフレームメモリ4の列(Row)方向に出力する。この出力方向43のようにフレームメモリ4の列(Row)方向で出力された画像データが、入力画像データとして歪補正回路に入力される。このように、縦横変換回路は、縦横変換した画像データを歪補正回路に入力する。なお、図7に示した出力方向43に読み出される画像データの1列(ライン)分を、「ユニットライン」という。
【0009】
図8は、縦横変換回路の概略構成および概略動作を示した図である。図8(a)に示したように縦横変換回路は、2つの小さなメモリ部(メモリ部511および512)を備えている。メモリ部511とメモリ部512とは、図示しない制御部によって、図8(b)に示すように、一方のメモリ部にフレームメモリ4から読み出した画像データを書き込んでいるときには、他方のメモリ部に書き込まれている画像データを読み出して歪補正回路に出力するように、切り替え制御がされる。図8(a)においては、メモリ部511にフレームメモリ4から読み出した画像データを書き込み(Write)、メモリ部512から画像データを読み出して歪補正回路に出力(Read)している状態の例を示している。
【0010】
メモリ部511またはメモリ部512に、フレームメモリ4から読み出した画像データを書き込む際には、図7に示した読み出し方向42と同様のフレームメモリ4の行(Column)方向に画像データをスキャン(ラスタスキャン)して、ブロックライン41に分割して書き込む。なお、メモリ部511およびメモリ部512は、フレームメモリ4の行(Column)方向と同じ長さのデータを記憶することができるメモリではなく、例えば、フレームメモリ4のバースト長の長さのデータを記憶することができるメモリである。従って、メモリ部511およびメモリ部512は、バースト長×予め定められた行数の幅の容量を持つメモリである。
【0011】
また、メモリ部511またはメモリ部512に記憶している画像データを、歪補正回路に読み出す(出力する)際には、図7に示した出力方向43と同様のフレームメモリ4の列(Row)方向に画像データをスキャンしながら読み出して出力する。このように、メモリ部に書き込む方向とメモリ部から読み出す方向とを変えることによって、画像データの縦横変換を行っている。
【0012】
次に、従来の画像処理装置において歪曲収差の補正を行う歪補正回路(イメージプロセス回路5−2)について説明する。図9は、従来の歪補正回路の概略構成を示したブロック図である。図9に示した従来の歪補正回路52は、縦横変換回路から入力された入力画像データを補正し、補正後の出力画像データを次段の画像処理回路に出力する。
【0013】
図9に示したように歪補正回路52は、補間位置生成部521と、歪補正座標変換部522と、ラインメモリ523と、メモリ制御部524と、補間演算部525とから構成される。補間位置生成部521は、補間して出力する出力画像データの位置を表す補間位置を生成する。歪補正座標変換部522は、補間位置生成部521が生成した補間位置に対して、予め設定されている光学系のズーム位置などに応じた歪曲収差特性の歪み補正式を適用して、歪み補正前の入力画像データの位置を表す座標に変換する。これにより、補間位置生成部521が生成した出力画像データの補間位置のデータを、どの位置(座標)の入力画像データを用いて補間を実行するかを求めることができる。
【0014】
ラインメモリ523は、イメージプロセス回路5−1から入力された入力画像データをユニットライン毎に一時的に記憶する。なお、ラインメモリ523は、予め定められた複数のユニットライン分の記憶領域を備え、各記憶領域が環(リング)状に接続されているような形態となっている。そして、補間演算に使用しなくなったユニットラインの入力画像データを順次書き換えることによって、予め定められているユニットライン分よりも多いユニットライン数の入力画像データを記憶することができるようになっている。
【0015】
メモリ制御部524は、歪補正座標変換部522が変換した歪み補正前の入力画像データの座標に基づいて、ラインメモリ523を制御する。補間演算部525は、歪補正座標変換部522が変換した歪み補正前の入力画像データの座標に基づいて、ラインメモリ523に記憶されている入力画像データに対して補間演算を行った出力画像データを生成し、次段の画像処理回路に出力する。
【0016】
ここで、従来の歪補正回路52における補間演算について説明する。補間演算部525は、所定の出力画像データの補間演算を行う場合に、歪み補正前の入力画像データが含まれる列(ライン)の入力画像データと、その周辺に位置する入力画像データが含まれる前後のラインの入力画像データを用いて、例えば、バイリニア補間やバイキュービック補間によって出力画像データを生成する。図10は、従来の歪補正回路52に備えたラインメモリと、ラインメモリに記憶されている入力画像データとの一例を模式的に示した図である。図10は、ラインメモリ523として16ライン(ユニットライン)分の入力画像データを記憶することができる記憶領域を備え、1列(ライン)の出力画像データを出力する際、補間する出力画像データに対応した歪み補正前の入力画像データのラインと、補間演算に必要な入力画像データの範囲(ユニットライン数)を表している。そして、図10に示した例では、出力画像データに対応した歪み補正前の入力画像データが記憶されているラインと、その1ライン前の入力画像データおよび2ライン後までの入力画像データを用いて、バイキュービック補間によって出力画像データを生成する例を示している。
【0017】
ところで、図6に示したような歪曲収差を持った光学系を用いて撮影された撮影画像における各ラインの歪みの形状は、そのライン毎に異なる。このため、補間演算部525が所定のラインの出力画像データを出力するために必要な入力画像データのライン数(ユニットライン数)も、出力画像データを出力するライン毎に異なる。例えば、図10に示したように、ラインaに示した入力画像データに基づいて1列(ライン)の出力画像データを生成する場合には、1ユニットライン目〜7ユニットライン目の入力画像データが必要であり、ラインbに示した入力画像データに基づいて1列(ライン)の出力画像データを生成する場合には、9ユニットライン目〜13ユニットライン目の入力画像データが必要であるというように、出力画像データを出力する列(ライン)毎に、必要な入力画像データのライン数(ユニットライン数)が異なる。
【0018】
しかしながら、所定のラインの出力画像データを出力するために必要な入力画像データのライン数(ユニットライン数)は、事前に求めることは困難であり、実際に座標変換を実行してみないと、補間演算に必要な入力画像データの適切なライン数を求めることができない。実際に座標変換を実行して必要な入力画像データのライン数を求めずに補間処理を行ってしまうと、例えば、補間演算に必要な入力画像データのライン数に対して、ラインメモリ523に記憶している入力画像データのライン数が少ない場合には、補間演算の処理が正常に終了せず、エラーとなってしまう。そして、補間演算の処理がエラーとなった場合には、ラインメモリ523に記憶している入力画像データのライン数が必要なライン数以上揃った後に、補間処理を再度行うこととなり、補間処理を効率的に行うことができない。
【0019】
このようなことから、各ラインの歪みの形状に影響されずに補間処理を正常に終了させるための対応として、ラインメモリ523に記憶する入力画像データのライン数、すなわち、ラインメモリ523に一時記憶することができる予め準備しておくユニットライン数を増やすことが考えられる。しかし、この対応では、実際の補間処理に使用しないユニットラインの入力画像データも記憶しておくこととなるため、ラインメモリの使用効率が低下してしまう。また、より多くのラインメモリを準備する必要があるため、歪補正回路の回路規模が増大してしまう要因ともなる。
【0020】
そこで、特許文献2においては、補間して出力する出力画像データの範囲に対する歪み補正前の入力画像データの範囲を、歪み補正の処理に先立って実行する歪補正範囲算出部を備えた歪補正回路も提案されている。以下の説明においては、歪補正範囲算出部を備えていない従来の歪補正回路52と区別するため、歪補正範囲算出部を備えた従来の歪補正回路を「歪補正回路53」という。歪補正回路53では、予め出力画像データの範囲、例えば、ブロックライン41の四辺に沿って、歪補正座標変換部522と同様の歪座標変換演算を行って、歪み補正前の入力画像データの四辺の座標を求める。これは、出力画像データを出力する範囲において、一番外側の周囲の出力画像データを生成するために必要な入力画像データの範囲(座標)を事前に算出しておくことによって、全ての出力画像データを補間演算するために必要な入力画像データの範囲は、事前に算出した範囲内に存在する入力画像データであるから、補間演算の処理がエラーとなることを回避することができるという考えに基づいたものである。
【0021】
特許文献2においては、求めた入力画像データの範囲の四辺の内、左端または右端のいずれかの一方の端の曲がり(歪み)が、一般的に考えられる最大の曲がり(歪み)であると仮定して、補間演算を行う際に用いる前側のユニットライン数と後側のユニットライン数とを決めている。すなわち、ブロックライン41の左右端において歪みが大きいいずれか一方の端の入力画像データに基づいて、補間演算に用いる入力画像データの範囲(ユニットライン数)を決めている。そして、ここで決めた前側のユニットライン数と後側のユニットライン数とを、当該ブロックライン41の補間演算を行う際に用いるユニットライン数として一律に設定している。
【0022】
図11は、従来の歪補正回路53において、補間演算を行う際に用いる前側のユニットライン数と後側のユニットライン数とを求める方法を説明する図である。図11は、歪補正範囲算出部が求めた入力画像データの範囲の左端または右端のいずれかの一方の端の入力画像データの位置を示している。補間演算を行う際に用いる前側のユニットライン数と後側のユニットライン数とを求めるときには、まず、最初に補間を行う入力画像データA(図11においては、入力画像データラインの上端)の位置(座標)を中心とする。
【0023】
そして、入力画像データのライン上で、中心とした入力画像データAの位置(座標)に対して前側(図11においては、左側)に最大に離れている入力画像データHの位置(座標)との差に基づいて、前側、すなわち、中心とした入力画像データAよりも過去の入力画像データHが含まれるユニットライン数を、postULB(ユニットラインバッファ:Unit Line Buffer)とする。また、入力画像データのライン上で、中心とした入力画像データAの位置(座標)に対して後側(図11においては、右側)に最大に離れている入力画像データCの位置(座標)との差に基づいて、後側、すなわち、中心とした入力画像データAよりも未来の入力画像データCが含まれるユニットライン数をpreULBとする。このように、入力画像データの範囲の左端および右端の入力画像データのラインに対して、それぞれ前側のユニットラインの数(postULB)と後側のユニットラインの数(preULB)とを求める。
【0024】
そして、入力画像データの範囲の左端のラインから求めたpostULBの値と、入力画像データの範囲の右端のラインから求めたpostULBの値との、いずれか大きい方の1つのpostULBの値(ユニットライン数)を最終的なpostULBとする。また、入力画像データの範囲の左端のラインから求めたpreULBの値と、入力画像データの範囲の右端のラインから求めたpreULBの値との、いずれか大きい方の1つのpreULBの値(ユニットライン数)を最終的なpreULBとする。このpostULBとpreULBとが、補間演算を行う際に用いるユニットライン数として一律に設定される。
【0025】
そして、歪補正回路53では、例えば、図9に示した従来の歪補正回路52のメモリ制御部524にpostULBとpreULBとを設定し、歪補正座標変換部522が変換した歪み補正前の画像データの座標、および設定されたpostULBとpreULBとの値に基づいて、ラインメモリ523を制御する。すなわち、メモリ制御部524は、ラインメモリ523に記憶している入力画像データのライン数を、設定されたpostULBとpreULBとを満足するように、ラインメモリ523に記憶するライン数を制御する。これにより、特許文献2で開示された歪補正回路53は、補間演算の処理がエラーとなることを回避し、補間演算を効率的に行うというものである。
【先行技術文献】
【特許文献】
【0026】
【特許文献1】特許第4179701号公報
【特許文献2】特開2005−45514号公報
【発明の概要】
【発明が解決しようとする課題】
【0027】
しかしながら、光学系の歪曲収差を持った光学系によって撮影された撮影画像における各ラインの歪みの形状は、必ずしも入力画像データの範囲の四辺の左端または右端のいずれかの一方の端の曲がり(歪み)が最大であるとは限らない。例えば、図12に示した入力画像データ範囲のラインの歪みの形状を模式的に示した例のように、左端のラインLまたは右端のラインRの曲がり(歪み)が最大ではなく、中央のラインCの曲がり(歪み)が最大となる場合もある。そして、例えば、中央のラインCの曲がり(歪み)が設定したpostULBおよびpreULBよりも大きい場合には、補間演算の処理がエラーとなり、ラインメモリ523に記憶している入力画像データのライン数が必要なライン数以上揃った後に、補間処理を再度行うこととなり、補間処理を効率的に行うことができないという問題がある。
【0028】
このような場合を考慮して、特許文献2に開示されているような歪補正回路53においても、postULBおよびpreULBに余裕(マージン)を持った値を設定するということが考えられる。しかしながら、マージンを持ったpostULBおよびpreULBを設定するということは、実際の補間処理に使用するラインよりも多くのラインメモリを使用することとなる。歪補正回路53においては、postULBおよびpreULBを事前に設定しているため、歪補正回路52に比べてマージンを少なくする設定することができるかもしれないが、マージンの量を最適にすることは困難であるため、やはり、ラインメモリの使用効率が低下してしまうという問題がある。また、マージンを考慮した多くのラインメモリを準備する必要があるため、歪補正回路の回路規模が増大してしまうことになる。
【0029】
また、ラインメモリの使用効率が低下すると、画像処理装置においてパイプライン処理される各画像処理が停止(ストール)するという現象が発生しやすくなる。実際にパイプライン処理のストールが発生した場合には、パイプライン処理されている各画像処理を再度行う必要が発生し、画像処理装置の全体の処理時間が長くなってしまう。または、画像処理装置の全体の処理が正常に終了しないという場合もある。このような、画像処理装置におけるパイプライン処理のストールを回避する方法として、各画像処理回路にラインメモリを備えることも考えられるが、この場合には、画像処理装置の回路規模がさらに増大してしまうこととなる。
【0030】
本発明は、上記の課題認識に基づいてなされたものであり、入力画像データの範囲内における各ラインの歪みの形状に応じて発生する補間演算の処理のエラーを回避し、歪補正処理を正常に終了することができる画像処理装置および画像処理方法を提供することを目的としている。
【課題を解決するための手段】
【0031】
上記の課題を解決するため、本発明の画像処理装置は、撮像光学系の歪曲収差特性に応じた歪曲収差を有する入力画像データに対する歪補正処理を行い、歪み補正された後の出力画像データを出力する歪補正部を有し、前記歪補正部は、歪補正処理を行って出力する前記出力画像データの位置に対応した前記入力画像データの位置を表す座標を求める歪補正座標変換部と、前記歪補正座標変換部が求めた前記入力画像データの座標に基づいて、歪補正処理に用いる前記入力画像データの範囲を算出する範囲算出部と、前記歪補正座標変換部が求めた前記入力画像データの座標に引き続き、前記範囲算出部が算出した前記入力画像データの範囲の情報を記憶する補正情報記憶部と、前記入力画像データの一部を一時的に記憶する入力画像データ記憶部と、前記補正情報記憶部に前記入力画像データの範囲の情報が記憶された後、該記憶された前記入力画像データの範囲の情報に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データの量を確認し、前記入力画像データ記憶部に記憶している前記入力画像データの量が補間演算に必要な量以上であるときに、前記補正情報記憶部に記憶されている前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データに対して補間演算を行って前記出力画像データを生成する補間演算部と、を備える、ことを特徴とする。
【0032】
また、本発明の画像処理装置は、歪み補正して出力する2次元の行列状に分布した前記出力画像データの内、列方向に1列に並べられた予め定められた数の前記出力画像データを1つのラインとし、2次元の行列状に分布された前記入力画像データの内、列方向に1列に並べられた予め定められた数の前記入力画像データを1つのユニットラインとし、前記入力画像データ記憶部に複数の前記ユニットラインを一時的に記憶し、前記補間演算部は、前記入力画像データ記憶部に記憶している複数の前記ユニットラインに含まれる前記入力画像データに基づいて歪補正処理を行うことによって、歪み補正された後の前記ラインの前記出力画像データを生成する、ことを特徴とする。
【0033】
また、本発明の前記範囲算出部は、歪み補正して出力する前記ラインに含まれる前記出力画像データの内、前記補間演算部によって最初に補間演算が行われる前記出力画像データに対応した前記入力画像データの座標が含まれる前記ユニットラインを基準とし、前記補間演算部によってその後に補間演算が行われる前記出力画像データに対応した前記入力画像データの座標が含まれる前記ユニットラインが、前記基準としたユニットラインに対して直交する第1の方向に最大に離れている前記ユニットラインの数を表す第1のユニットライン数と、前記第1の方向とは逆の第2の方向に最大に離れている前記ユニットラインの数を表す第2のユニットライン数とを、前記入力画像データの範囲の情報として算出する、ことを特徴とする。
【0034】
また、本発明の前記補正情報記憶部は、前記歪補正座標変換部が求めた前記入力画像データの座標および前記範囲算出部が算出した前記入力画像データの範囲の情報を記憶する記憶領域を複数備え、前記ライン毎に前記入力画像データの座標および前記入力画像データの範囲の情報を記憶する、ことを特徴とする。
【0035】
また、本発明の前記入力画像データ記憶部は、複数の前記ユニットラインの前記入力画像データを、前記ユニットライン毎に一時的に記憶し、前記補間演算部は、前記補正情報記憶部に記憶された前記第1のユニットライン数と前記第2のユニットライン数とに基づいて、前記入力画像データ記憶部に記憶している前記ユニットラインの数を確認し、該確認した結果に基づいて補間演算の開始を制御する演算制御部、を備え、前記演算制御部は、前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数以上の前記ユニットラインが、前記入力画像データ記憶部に記憶されていることが確認された後に、該補間演算部における補間演算を開始し、該補間演算部は、前記補正情報記憶部に記憶されている前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している複数の前記ユニットラインの前記入力画像データに対して補間演算を行うことによって、前記ラインに含まれる前記出力画像データをそれぞれ生成する、ことを特徴とする。
【0036】
また、本発明の前記補正情報記憶部は、前記出力画像データの前記ラインに含まれるそれぞれの前記出力画像データに対応して、前記歪補正座標変換部が求めた前記入力画像データの座標を記憶する座標記憶部と、前記範囲算出部が算出した前記第1のユニットライン数と、前記第2のユニットライン数とを記憶するユニットライン数記憶部と、を備え、前記座標記憶部は、前記ラインに含まれる前記出力画像データ分の前記入力画像データの座標を順次記憶し、前記ユニットライン数記憶部は、前記座標記憶部が記憶する前記ラインにおける前記第1のユニットライン数と前記第2のユニットライン数とをそれぞれ1つ記憶する、ことを特徴とする。
【0037】
また、本発明の画像処理装置は、前記範囲算出部が算出した前記第1のユニットライン数と前記第2のユニットライン数とに基づいて、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数を確認するライン数確認部、をさらに備え、前記ライン数確認部は、前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数が、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数以下である場合には、前記第1のユニットライン数と前記第2のユニットライン数とを前記補正情報記憶部に記憶し、前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数が、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数よりも多い場合には、エラーを表す信号を出力する、ことを特徴とする。
【0038】
また、本発明の前記歪補正座標変換部は、前記出力画像データの前記ラインに含まれるそれぞれの前記出力画像データの位置を表す補間位置を生成する補間位置生成部、を備え、前記間位置生成部が生成した前記補間位置を、予め設定された撮像光学系の歪曲収差特性に応じた変換特性に基づいて、前記入力画像データの位置を表す座標に変換する、ことを特徴とする。
【0039】
また、本発明の前記歪補正座標変換部は、前記補正情報記憶部に前記入力画像データの座標を記憶することができる記憶領域があるときに、前記入力画像データの座標を順次求め、前記補間演算部は、前記補正情報記憶部に前記入力画像データの範囲の情報が書き込まれた後に、前記補正情報記憶部から前記入力画像データの範囲の情報を読み出して、前記入力画像データ記憶部に記憶している前記入力画像データの量を確認する、ことを特徴とする。
【0040】
また、本発明の画像処理方法は、撮像光学系の歪曲収差特性に応じた歪曲収差を有する入力画像データに対する歪補正処理を行い、歪み補正された後の出力画像データを出力する歪補正ステップを有し、前記歪補正ステップは、歪補正処理を行って出力する前記出力画像データの位置に対応した前記入力画像データの位置を表す座標を求め、該求めた入力画像データの座標を補正情報記憶部に記憶する歪補正座標変換ステップと、前記歪補正座標変換ステップによって求めた前記入力画像データの座標に基づいて、歪補正処理に用いる前記入力画像データの範囲を算出し、該算出した入力画像データの範囲の情報を前記補正情報記憶部に記憶する範囲算出ステップと、補正情報記憶部に前記範囲算出ステップによって算出した前記入力画像データの範囲の情報が記憶された後、前記補正情報記憶部から前記入力画像データの範囲の情報を読み出し、読み出した前記入力画像データの範囲の情報に基づいて、入力画像データ記憶部に記憶している前記入力画像データの量を確認し、前記入力画像データ記憶部に記憶している前記入力画像データの量が補間演算に必要な量以上であるときに、前記補正情報記憶部から前記入力画像データの座標を読み出し、読み出した前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データに対して補間演算を行って前記出力画像データを生成する補間演算ステップと、を含む、ことを特徴とする。
【発明の効果】
【0041】
本発明によれば、入力画像データの範囲内における各ラインの歪みの形状に応じて発生する補間演算の処理のエラーを回避し、歪補正処理を正常に終了することができるという効果が得られる。
【図面の簡単な説明】
【0042】
【図1】本発明の第1の実施形態における歪補正回路の概略構成を示したブロック図である。
【図2】本発明の第2の実施形態における歪補正回路の概略構成を示したブロック図である。
【図3】本発明の第2の実施形態における歪補正回路に備える補間情報用メモリのメモリ構成の一例を示した図である。
【図4】本発明の第3の実施形態における歪補正回路の概略構成を示したブロック図である。
【図5】従来の画像処理装置の概略構成を示したブロック図である。
【図6】光学系の歪曲収差の一例を示した図である。
【図7】縦横変換回路がフレームメモリから画像データを読み出し、歪補正回路に入力画像データを出力する動作を模式的に示した図である。
【図8】縦横変換回路の概略構成および概略動作を示した図である。
【図9】従来の歪補正回路の概略構成を示したブロック図である。
【図10】従来の歪補正回路に備えたラインメモリと、ラインメモリに記憶されている入力画像データとの一例を模式的に示した図である。
【図11】従来の歪補正範囲算出部を備えた従来の歪補正回路において、補間演算を行う際に用いる前側のユニットライン数と後側のユニットライン数とを求める方法を説明する図である。
【図12】入力画像データ範囲のラインの歪みの形状の一例を模式的に示した図である。
【発明を実施するための形態】
【0043】
以下、本発明の実施形態について、図面を参照して説明する。本実施形態の画像処理装置は、図5に示した従来の画像処理装置に対して、イメージプロセス処理部5内の画像処理回路、より具体的には、イメージプロセス回路5−2として備えられた歪補正回路が異なる。
【0044】
<第1の実施形態>
図1は、本第1の実施形態における歪補正回路の概略構成を示したブロック図である。図1に示した本第1の実施形態の歪補正回路520は、本実施形態の画像処理装置のイメージプロセス処理部5内のイメージプロセス回路5−2として備えられる。そして、前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)から入力された入力画像データを補正し、補正後の出力画像データを次段の画像処理回路に出力する。なお、歪補正回路520は、出力画像データの1列(ライン)を補正する単位として処理する。
【0045】
図1に示したように本第1の実施形態の歪補正回路520は、補間位置生成部521と、歪補正座標変換部522と、ラインメモリ523と、メモリ制御部524と、ULB算出部526と、座標用メモリ527と、ULB用メモリ528と、補間演算部525と、から構成される。本第1の実施形態の歪補正回路520は、図9に示した従来の歪補正回路52に対して、ULB算出部526と、座標用メモリ527と、ULB用メモリ528とが追加された構成であり、その他の構成要素における動作は、図9に示した従来の歪補正回路52の構成要素の動作とほぼ同様である。従って、歪補正回路520において、図9に示した従来の歪補正回路52と同様の動作を行う構成要素には、同一の符号を付与し、動作の違いのみを説明する。
【0046】
補間位置生成部521は、補間して出力する1ラインに含まれる出力画像データの位置を表す補間位置を順次生成する。
【0047】
歪補正座標変換部522は、補間位置生成部521が生成した補間位置に基づいて、歪み補正前の入力画像データの位置を表す座標に順次変換する。そして、歪補正座標変換部522は、変換した歪み補正前の入力画像データの位置を表す座標の情報を、順次、座標用メモリ527およびULB算出部526に出力する。
【0048】
座標用メモリ527は、1ライン分の座標の情報を記憶するメモリである。座標用メモリ527は、歪補正座標変換部522から入力された歪み補正前の入力画像データの位置を表す1ライン分の座標の情報を順次記憶する。座標用メモリ527は、例えば、1ライン分の記憶領域を持つFIFO(First In First Out)メモリで構成される。なお、座標用メモリ527は、複数ライン分の記憶領域を持つ構成とすることもできる。
【0049】
ULB算出部526は、歪補正座標変換部522から順次入力される歪み補正前の入力画像データの位置を表す1ライン分の座標の情報に基づいて、1ラインの出力画像データの補間演算を行う際に用いる前側のユニットライン数(postULB)と後側のユニットライン数(preULB)とを算出する。そして、ULB算出部526は、算出したpostULBとpreULBとを、ULB用メモリ528に出力する。
【0050】
ULB用メモリ528は、ULB算出部526が算出した、1ラインの出力画像データの補間演算を行う際に用いるpostULBとpreULBとを記憶するメモリである。ULB用メモリ528は、座標用メモリ527に記憶される1ライン分の座標の情報に対応したpostULBとpreULBとを、それぞれ1つずつ記憶する。ULB用メモリ528は、例えば、2つの記憶領域を持つFIFOメモリで構成される。なお、ULB用メモリ528の記憶領域は、座標用メモリ527が持つライン数に対応しており、座標用メモリ527が複数ライン分の記憶領域を持つ構成である場合には、座標用メモリ527が持つライン数分のpostULBとpreULBとをそれぞれ記憶することができる領域を備える。すなわち、座標用メモリ527が持つラインの数に2を乗算した数の記憶領域を持った構成である。
【0051】
メモリ制御部524は、ULB用メモリ528に記憶されたpostULBとpreULBとに基づいて、ラインメモリ523に一時記憶されているユニットラインの数を確認する。そして、ラインメモリ523内に、補間演算を行う際に用いるpostULBとpreULBのユニットライン数の入力画像データが揃っている場合には、補間演算を開始するための制御信号を、補間演算部525に出力する。また、ラインメモリ523内に、補間演算を行う際に用いるpostULBとpreULBのユニットライン数の入力画像データが揃っていない場合には、補間演算を開始するための制御信号を出力せず、ラインメモリ523に必要なユニットライン数の入力画像データが揃うまで、補間演算部525による補間演算の開始を待たせる。そして、補間演算に必要なユニットライン数の入力画像データがラインメモリ523に揃った後に、補間演算を開始するための制御信号を出力して、補間演算部525に補間演算を開始させる。
【0052】
補間演算部525は、メモリ制御部524から入力された補間演算を開始するための制御信号に応じて、ラインメモリ523に記憶されている入力画像データに対して補間演算を行った出力画像データを生成する。なお、補間演算部525が補間演算を行う際には、座標用メモリ527に記憶されている歪み補正前の入力画像データの位置を表す座標の情報を順次読み出し、読み出した座標の情報に基づいて、ラインメモリ523に記憶されている入力画像データに対して補間演算を行う。
【0053】
次に、歪補正回路520における補間処理について説明する。歪補正回路520においては、以下のような手順で補間処理が行われる。なお、以下の説明においては、例えば、1つのブロックライン41が8行8列である場合を例として説明する。そして、補間して出力する出力画像データに対応した、例えば、図11に示した8個の入力画像データ(入力画像データA〜H)のラインが8列(ライン)あるものとする。そして、出力画像データ、補間位置、および入力画像データのそれぞれを、位置を示すXY座標で表し、Xに続く数字を列の番号、Yに続く数字を行の番号とする。例えば、2行3列目に対応する入力画像データは、入力画像データ(X3,Y2)と表す。
【0054】
また、座標用メモリ527は、1ユニットライン分、すなわち、8個(列)分の座標の情報を記憶する記憶領域を持つ構成であるものとし、ULB用メモリ528は、postULBとpreULBとをそれぞれ1つずつ記憶する記憶領域を持つ構成であるものとして説明する。なお、座標用メモリ527およびULB用メモリ528は、例えば、FIFOメモリで構成されるが、以下の説明においては、説明を容易にするため、座標用メモリ527およびULB用メモリ528は、それぞれ、例えば、SRAM(Static Random Access Memory)で構成されているものとして説明する。
【0055】
また、ラインメモリ523は、各記憶領域が環(リング)状に接続されているが、少なくとも1ユニットライン分の補間演算に必要な入力画像データを、同時に記憶しておくことができる記憶領域(ライン数)を備えているものとする。
【0056】
歪補正回路520における補間処理が開始されると、
(手順1):ラインメモリ523は、ユニットライン毎に入力画像データの一時記憶を開始する。また、補間位置生成部521は、最初に補間して出力する1列目に含まれる1行目の出力画像データ(X1,Y1)の位置を表す補間位置(X1,Y1)を生成する。
(手順2):歪補正座標変換部522は、補間位置生成部521が生成した補間位置(X1,Y1)に対する、歪み補正前の入力画像データ(図11に示した例では、入力画像データA)の位置を表す座標(X1,Y1)を、予め設定されている光学系のズーム位置などに応じた歪曲収差特性の歪み補正式に基づいて求める。そして、歪補正座標変換部522は、変換した入力画像データの位置を表す座標(X1,Y1)の情報を、座標用メモリ527およびULB算出部526に出力する。
(手順3):座標用メモリ527は、歪補正座標変換部522から入力された座標(X1,Y1)を、座標用のメモリ領域(例えば、1番目の記憶領域)に記憶する。また、ULB算出部526は、歪補正座標変換部522から入力された座標(X1,Y1)を、postULB(ユニットライン数)とpreULB(ユニットライン数)とを算出する基準(中心)の座標とする。
【0057】
(手順4):補間位置生成部521は、2番目に補間して出力する1列目に含まれる2行目の出力画像データ(X1,Y2)の位置を表す補間位置(X1,Y2)を生成する。
(手順5):歪補正座標変換部522は、補間位置生成部521が生成した補間位置(X1,Y2)に基づいて、歪み補正前の入力画像データ(図11に示した例では、入力画像データB)の位置を表す座標(X1,Y2)を求め、求めた入力画像データの位置を表す座標(X1,Y2)の情報を、座標用メモリ527およびULB算出部526に出力する。
(手順6):座標用メモリ527は、歪補正座標変換部522から入力された座標(X1,Y2)を、座標用のメモリ領域(例えば、2番目の記憶領域)に記憶する。また、ULB算出部526は、歪補正座標変換部522から入力された座標(X1,Y2)と、中心座標(X1,Y1)とを比較し、postULBとpreULBとを算出する。そして、ULB算出部526は、算出したpostULBの値(ユニットライン数)とpreULBの値(ユニットライン数)とを一時保管する。
【0058】
(手順7):補間位置生成部521は、3番目に補間して出力する1列目に含まれる3行目の出力画像データ(X1,Y3)の位置を表す補間位置(X1,Y3)を生成する。
(手順8):歪補正座標変換部522は、補間位置生成部521が生成した補間位置(X1,Y3)に基づいて、歪み補正前の入力画像データ(図11に示した例では、入力画像データC)の位置を表す座標(X1,Y3)を求め、求めた入力画像データの位置を表す座標(X1,Y3)の情報を、座標用メモリ527およびULB算出部526に出力する。
(手順9):座標用メモリ527は、歪補正座標変換部522から入力された座標(X1,Y3)を、座標用のメモリ領域(例えば、3番目の記憶領域)に記憶する。また、ULB算出部526は、歪補正座標変換部522から入力された座標(X1,Y3)と、中心座標(X1,Y1)とを比較し、postULBとpreULBとを算出する。そして、ULB算出部526は、算出したpostULBの値およびpreULBの値と、一時保管しているpostULBの値およびpreULBの値とをそれぞれ比較し、いずれか大きい方の1つの値(ユニットライン数)を、それぞれpostULBおよびpreULBとして更新し、更新したpostULBの値(ユニットライン数)およびpreULBの値(ユニットライン数)を一時保管する。
【0059】
(手順10):手順4〜手順6を繰り返し、1列目に含まれる7行目の出力画像データ(X1,Y7)に対する処理が終了した後、補間位置生成部521は、最後(8番目)に補間して出力する1列目に含まれる8行目の出力画像データ(X1,Y8)の位置を表す補間位置(X1,Y8)を生成する。
(手順11):歪補正座標変換部522は、補間位置生成部521が生成した補間位置(X1,Y8)に基づいて、歪み補正前の入力画像データ(図11に示した例では、入力画像データH)の位置を表す座標(X1,Y8)を求め、求めた入力画像データの位置を表す座標(X1,Y8)の情報を、座標用メモリ527およびULB算出部526に出力する。
(手順12):座標用メモリ527は、歪補正座標変換部522から入力された座標(X1,Y8)を、座標用のメモリ領域(例えば、8番目の記憶領域)に記憶する。また、ULB算出部526は、歪補正座標変換部522から入力された座標(X1,Y8)と、中心座標(X1,Y1)とを比較し、postULBとpreULBとを算出する。そして、ULB算出部526は、算出したpostULBの値およびpreULBの値と、一時保管しているpostULBの値およびpreULBの値とをそれぞれ比較し、いずれか大きい方の1つの値(ユニットライン数)を、それぞれpostULBおよびpreULBとして更新し、更新したpostULBの値(ユニットライン数)およびpreULBの値(ユニットライン数)を、ULB用メモリ528に記憶する。
【0060】
このようにして、1列目にユニットラインの各入力画像データの位置を表す座標と、図11に示したような1列目にユニットラインのpostULBおよびpreULBの値が求められる。
【0061】
(手順13):ULB用メモリ528にpostULBとpreULBとが記憶されると、メモリ制御部524は、ULB用メモリ528に記憶されたpostULBとpreULBとに基づいて、ラインメモリ523に一時記憶されているユニットラインの数を確認する。そして、ラインメモリ523内に、postULBとpreULBのユニットライン数の入力画像データが揃っている場合には、メモリ制御部524は、補間演算を開始するための制御信号を、補間演算部525に出力する。また、ラインメモリ523内に、postULBとpreULBのユニットライン数の入力画像データが揃っていない場合には、メモリ制御部524は、ラインメモリ523に必要なユニットライン数の入力画像データが揃うまで、ラインメモリ523に一時記憶されているユニットラインの数の確認を繰り返す。そして、補間演算に必要なユニットライン数の入力画像データがラインメモリ523に揃った後に、メモリ制御部524は、補間演算を開始するための制御信号を、補間演算部525に出力する。
【0062】
(手順14):補間演算部525は、メモリ制御部524から補間演算を開始するための制御信号が入力されると、ラインメモリ523に記憶されている入力画像データに対して補間演算を行った出力画像データを生成する。このとき、補間演算部525は、座標用メモリ527に記憶されている歪み補正前の入力画像データの位置を表す座標の情報を、1番目の座標用のメモリ領域から順次読み出し、読み出した座標の情報に基づいて、ラインメモリ523に記憶されている入力画像データに対する補間演算を順次行う。
【0063】
(手順15):補間演算部525による補間演算が開始され、座標用メモリ527に記憶されている歪み補正前の入力画像データの位置を表す座標の情報(ここでは、1番目の座標用のメモリ領域に記憶されている座標の情報)が読み出されると、補間位置生成部521は、座標用メモリ527に空いている記憶領域が存在すると認識する。そして、補間位置生成部521は、次の列の最初に補間して出力する2列目に含まれる1行目の出力画像データ(X2,Y1)の位置を表す補間位置(X2,Y1)を生成する。以降、手順2〜手順14と同様に、座標用メモリ527に記憶されている座標の情報が読み出されて補間演算が行われる、すなわち、座標用メモリ527に空いている記憶領域が認識される毎に、補間位置の生成、歪み補正前の入力画像データの位置を表す座標への変換、座標用メモリ527への記憶(座標情報の更新)、postULBおよびpreULBの算出、ラインメモリ523に一時記憶されているユニットラインの数の確認、および補間演算を行った出力画像データの生成を繰り返す。そして、最後の列(8列目)の最後の行(8行目)の出力画像データの生成が終了したときに、補間処理を終了する。
【0064】
上記に述べたように、本第1の実施形態の歪補正回路520では、補間して出力する出力画像データの列(ライン)毎にpostULBおよびpreULBを算出することができる。また、算出したpostULBとpreULBとに基づいて、ラインメモリ523内に、補間演算を行う際に用いるユニットライン数の入力画像データが揃っているか否かを確認することができる。そして、ラインメモリ523に必要なユニットライン数の入力画像データが揃った後に、補間演算を開始することができる。すなわち、補間演算部525が補間演算を開始するタイミングでは、補間して出力する出力画像データの列(ライン)のpostULBとpreULBとの値が、すでに、ULB用メモリ528に記憶されている。これにより、補間して出力するライン毎に補間演算を行う際に用いるユニットライン数が、補間して出力する出力画像データの列(ライン)毎に異なる場合でも、それぞれに最適なユニットライン数の入力画像データを用いて補間演算を行うことができる。このように、本第1の実施形態の歪補正回路520は、補間して出力する出力画像データの列(ライン)毎に、補間演算を行う際に用いるユニットライン数を算出し、必要なユニットライン数の入力画像データが揃った後に補間演算を行うため、補間演算の処理がエラーとなることを回避することができ、効率的に補間演算を完了することができる。
【0065】
また、本第1の実施形態の歪補正回路520では、ラインメモリ523に記憶しておく入力画像データのライン数にマージンを持たせる必要がないため、ラインメモリ523の使用効率を向上させることができる。このことにより、本実施形態の画像処理装置においてパイプライン処理のストールが発生する割合を低減することができ、画像処理装置の全体の処理時間を短縮させる効果を得ることができる。また、不必要な回路規模の増大を回避することもできる。
【0066】
なお、上記に述べた補間処理の手順においては、座標用メモリ527は、1ライン分の座標の情報を記憶する記憶領域を持ち、ULB用メモリ528は、postULBとpreULBとをそれぞれ1つずつ記憶する記憶領域を持つ構成であるものとして説明した。そして、手順15において補間演算部525による補間演算が開始された後に、2列目の処理を開始する場合の例を説明した。しかし、上記に述べたように、座標用メモリ527に複数ライン分の記憶領域を持ち、ULB用メモリ528は、座標用メモリ527が持つライン数分のpostULBとpreULBとをそれぞれ記憶することができる領域を備えることもできる。この場合、手順15において補間演算部525による補間演算が開始された後に2列目の処理を開始するのではなく、手順12において1列目のpostULBの値およびpreULBの値をULB用メモリ528に記憶した後に、引き続き、手順13と平行して2列目の処理を開始することもできる。そして、手順15のように、座標用メモリ527に空いている記憶領域が存在するか否かの認識は、座標用メモリ527に備えた複数ライン分の記憶領域を全て使用してしまったときに行うのみとなる。
【0067】
<第2の実施形態>
次に、本実施形態の画像処理装置のイメージプロセス回路5−2として備える歪補正回路の別の構成について説明する。図2は、本第2の実施形態における歪補正回路の概略構成を示したブロック図である。図2に示した本第2の実施形態の歪補正回路530は、図1に示した歪補正回路520に代わって、本実施形態の画像処理装置のイメージプロセス処理部5内のイメージプロセス回路5−2として備えられる。そして、図1に示した歪補正回路520と同様に、前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)から入力された入力画像データを補正し、補正後の出力画像データを次段の画像処理回路に出力する。また、歪補正回路530は、図1に示した歪補正回路520と同様に、出力画像データの1列(ライン)を補正する単位として処理する。
【0068】
図2に示したように本第2の実施形態の歪補正回路530は、補間位置生成部521と、歪補正座標変換部522と、ラインメモリ523と、メモリ制御部524と、ULB算出部526と、補間情報用メモリ531と、補間演算部525と、から構成される。本第2の実施形態の歪補正回路530は、図1に示した歪補正回路520内の座標用メモリ527とULB用メモリ528とを、1つの補間情報用メモリ531で構成している。その他の構成要素における動作は、図1に示した歪補正回路520の構成要素の動作とほぼ同様である。従って、歪補正回路530において、図1に示した歪補正回路520と同様の動作を行う構成要素には、同一の符号を付与し、動作の違いのみを説明する。
【0069】
歪補正座標変換部522は、補間位置生成部521が生成した補間位置に基づいて、歪み補正前の入力画像データの位置を表す座標に順次変換し、変換した歪み補正前の入力画像データの位置を表す座標の情報を、順次、補間情報用メモリ531およびULB算出部526に出力する。
【0070】
ULB算出部526は、歪補正座標変換部522から順次入力される歪み補正前の入力画像データの位置を表す1ライン分の座標の情報に基づいて、1ラインの出力画像データの補間演算を行う際に用いるpostULBとpreULBとを算出し、算出したpostULBとpreULBとを、補間情報用メモリ531に出力する。
【0071】
補間情報用メモリ531は、1ライン分の座標の情報およびこの1ライン分の座標の情報に対応したpostULBとpreULBとを、補間情報として記憶するメモリである。補間情報用メモリ531は、図1に示した座標用メモリ527と同様に、歪補正座標変換部522から入力された歪み補正前の入力画像データの位置を表す1ライン分の座標の情報を順次記憶する。また、補間情報用メモリ531は、図1に示したULB用メモリ528と同様に、記憶される1ライン分の座標の情報に対応したpostULBとpreULBとを、それぞれ1つずつ記憶する。補間情報用メモリ531は、1ライン分の座標の情報およびこの1ライン分の座標の情報に対応したpostULBとpreULBとを1つの組として記憶することができる記憶領域を持つ、例えば、SRAMで構成される。そして、補間情報用メモリ531は、複数ライン分、すなわち、複数の組の記憶領域を持つ構成とすることもできる。
【0072】
メモリ制御部524は、補間情報用メモリ531に記憶されたpostULBとpreULBとに基づいて、ラインメモリ523に一時記憶されているユニットラインの数を確認する。そして、ラインメモリ523内に、補間演算を行う際に用いるpostULBとpreULBのユニットライン数の入力画像データが揃っているか否かに応じて、補間演算部525による補間演算の開始を制御する。
【0073】
補間演算部525は、メモリ制御部524から入力された補間演算を開始するための制御信号に応じて、補間演算を行った出力画像データを生成する。補間演算部525が補間演算を行う際には、補間情報用メモリ531に記憶されている歪み補正前の入力画像データの位置を表す座標の情報を順次読み出し、読み出した座標の情報に基づいて、ラインメモリ523に記憶されている入力画像データに対して補間演算を行う。
【0074】
ここで、本第2の実施形態の歪補正回路530と図1に示した第1の実施形態の歪補正回路520とで異なる構成要素である補間情報用メモリ531における補間情報(1ライン分の座標の情報および1ライン分の座標の情報に対応したpostULBとpreULBの値)の書き込みおよび読み出し順番について説明する。図3は、本第2の実施形態における歪補正回路530に備える補間情報用メモリ531のメモリ構成の一例を示した図である。図3は、1ライン分の補間情報を記憶することができる記憶領域を備えた補間情報用メモリ531の例を示している。
【0075】
図3に示すように、補間情報用メモリ531は、座標の情報を記憶する座標用メモリ領域と、座標の情報に対応したpostULBとpreULBとを記憶するULB用メモリ領域とを備えている。
【0076】
補間情報用メモリ531に、補間情報を書き込む場合には、まず、歪補正座標変換部522から入力された歪み補正前の入力画像データの位置を表す1ライン分の座標の情報を、座標用メモリ領域内の最初の記憶領域から順次書き込む(記憶する)。そして、1ライン分の座標の情報の書き込みが終了した後に、ULB算出部526から入力されたpostULBとpreULBとを書き込む(記憶する)。図3では、ライト順1〜nの順番に1ライン分の座標の情報を順次書き込む。その後、n+1でpreULBを書き込み、n+2でpostULBを書き込む場合を示している。
【0077】
補間情報用メモリ531から、補間情報を読み出す場合には、まず、メモリ制御部524にpostULBとpreULBとを読み出す。そして、補間演算部525が補間演算を開始したときに、座標用メモリ領域内の最初の記憶領域から順次1ライン分の座標の情報を読み出す。図3では、リード順1においてpreULBをメモリ制御部524に読み出し、リード順2においてpostULBをメモリ制御部524に読み出す。その後、リード順3〜n+2において1ライン分の座標の情報を順次補間演算部525に読み出す場合を示している。
【0078】
上記に述べたように、本第2の実施形態の歪補正回路530では、図1に示した第1の実施形態の歪補正回路520内の座標用メモリ527とULB用メモリ528とが、1つの補間情報用メモリ531に代わったことにより、補間情報用メモリ531の書き込みおよび読み出し方法が異なるが、図1に示した第1の実施形態の歪補正回路520と同様の効果を得ることができる。なお、本第2の実施形態の歪補正回路530における補間処理は、補間情報用メモリ531の書き込みおよび読み出し方法が異なるのみであり、図1に示した第1の実施形態の歪補正回路520における補間処理と同様であるため、詳細な説明は省略する。
【0079】
<第3の実施形態>
次に、本実施形態の画像処理装置のイメージプロセス回路5−2として備える歪補正回路の別の構成について説明する。図4は、本第3の実施形態における歪補正回路の概略構成を示したブロック図である。図4に示した本第3の実施形態の歪補正回路540は、図1に示した歪補正回路520または図2に示した歪補正回路530に代わって、本実施形態の画像処理装置のイメージプロセス処理部5内のイメージプロセス回路5−2として備えられる。そして、図1に示した歪補正回路520および図2に示した歪補正回路530と同様に、前段の画像処理回路である縦横変換回路(イメージプロセス回路5−1)から入力された入力画像データを補正し、補正後の出力画像データを次段の画像処理回路に出力する。また、歪補正回路540は、図1に示した歪補正回路520および図2に示した歪補正回路530と同様に、出力画像データの1列(ライン)を補正する単位として処理する。
【0080】
図4に示したように本第3の実施形態の歪補正回路540は、補間位置生成部521と、歪補正座標変換部522と、ラインメモリ523と、メモリ制御部524と、ULB算出部526と、エラーチェッカ541と、座標用メモリ527と、ULB用メモリ528と、補間演算部525と、から構成される。本第3の実施形態の歪補正回路540は、図1に示した歪補正回路520に、エラーチェッカ541が追加された構成である。その他の構成要素における動作は、図1に示した歪補正回路520の構成要素の動作とほぼ同様である。従って、歪補正回路540において、図1に示した歪補正回路520と同様の動作を行う構成要素には、同一の符号を付与し、動作の違いのみを説明する。
【0081】
上述したように、補間して出力する出力画像データに対応した歪み補正前の入力画像データのライン数は、出力画像データを出力するライン毎に異なる(図10参照)。また、歪補正回路内に備えているラインメモリ523に記憶することができる入力画像データのユニットライン数は、予め定められたライン数である。従って、図1に示した歪補正回路520や、図2に示した歪補正回路530のように、事前にpostULBとpreULBとが求められている場合であっても、ラインメモリ523に記憶することができる入力画像データのユニットライン数を超えるような補間演算の処理を行うことはできない。すなわち、ラインメモリ523に出力画像データを生成するために必要なライン数の入力画像データが記憶されていない場合には、補間演算部525による1ライン分の補間演算の処理が正常に終了せず、エラーとなってしまう。そこで、本第3の実施形態の歪補正回路540では、事前に求められたpostULBとpreULBとに基づいて、補間演算の処理がエラーとなることを回避する仕組みを備える。
【0082】
ULB算出部526は、歪補正座標変換部522から順次入力される歪み補正前の入力画像データの位置を表す1ライン分の座標の情報に基づいて、1ラインの出力画像データの補間演算を行う際に用いるpostULBとpreULBとを算出し、算出したpostULBとpreULBとを、エラーチェッカ541に出力する。
【0083】
ULB用メモリ528は、エラーチェッカ541から入力されたpostULBとpreULBとを記憶する
【0084】
エラーチェッカ541は、ULB算出部526が算出した、postULBとpreULBとに基づいて、歪補正回路540内に備えるラインメモリ523が記憶することができる入力画像データのユニットライン数が、1ラインの出力画像データの補間演算を行うのに必要なライン数を超えているか否かを判断する。そして、1ラインの出力画像データの補間演算を行うのに必要なライン数を超えていない、すなわち、ラインメモリ523内に、補間演算を行う際に必要なライン数の入力画像データを記憶することができる場合には、ULB算出部526が算出した、postULBとpreULBとを、ULB用メモリ528に出力する。また、1ラインの出力画像データの補間演算を行うのに必要なライン数を超えている、すなわち、ラインメモリ523内に、補間演算を行う際に必要なライン数の入力画像データを記憶することができない場合には、補間演算の処理がエラーとなることを表すULBエラーの信号を、例えば、本実施形態の画像処理装置における全体の制御部であるCPU2に出力する。
【0085】
CPU2は、エラーチェッカ541から入力されたULBエラーに応じて、歪補正回路540における補間処理を中止する。そして、CPU2は、1ラインの出力画像データの補間演算を行うのに必要な入力画像データのライン数が、歪補正回路540内に備えたラインメモリ523が記憶することができる入力画像データのユニットライン数よりも少なくなるように、本実施形態の画像処理装置の種々の設定を変更した後に、再度、歪補正回路540による補間処理を開始する。
【0086】
CPU2が変更する設定としては、例えば、ユニットラインに含まれる入力画像データの数、すなわち、ブロックライン41として予め定められた行数の幅を小さくするなどが考えられる。これは、ブロックライン41の幅を小さくすることによって、小さい幅の1ラインの出力画像データの補間演算を行うのに必要な入力画像データのライン数が少なくなるからである。図10を参照してより具体的な例を説明すると、上述したように、ラインaに示した入力画像データに基づいて1ラインの出力画像データを生成する場合には、1ユニットライン目〜7ユニットライン目の入力画像データが必要である。ここで、ブロックライン41の幅を小さくすることによって、例えば、ラインaに示した入力画像データの下側半分に基づいて1ラインの出力画像データを生成する場合には、1ユニットライン目〜5ユニットライン目の入力画像データがあれば、1ラインの出力画像データを生成することができる。このように、ブロックライン41の幅を小さくすることによって、1ラインの出力画像データの補間演算を行うのに必要な入力画像データのライン数が少なくなる。
【0087】
なお、例えば、各ラインの歪みが少ない場合には、歪補正回路540内に備えたラインメモリ523のライン数を全て使用して、1ラインの出力画像データの補間演算を行うように設定するように、ブロックライン41として予め定める行数の幅を大きくすることによって、1画面の画像データを分割するブロックライン41の数を少なくし、歪補正回路540による補間処理の処理時間を短縮することもできる。
【0088】
上記に述べたように、本第3の実施形態の歪補正回路540では、図1に示した第1の実施形態の歪補正回路520と同様の効果を得ることができるとともに、歪補正回路540内に備えたラインメモリ523の容量に起因して、補間演算の処理がエラーとなることを事前に回避することができ、効率的に補間演算を完了することができる。
【0089】
上記に述べたとおり、本発明を実施するための形態によれば、補間して出力する出力画像データの列(ライン)毎にpostULBおよびpreULBを算出し、算出したpostULBとpreULBとに基づいて、ラインメモリ内に、補間演算を行う際に用いるユニットライン数の入力画像データが揃っているか否かを確認することができる。そして、ラインメモリに必要なユニットライン数の入力画像データが揃った後に、補間演算を開始することができる。これにより、補間して出力するライン毎に補間演算を行う際に用いるユニットライン数が、補間して出力する出力画像データの列(ライン)毎に異なる場合でも、それぞれに最適なユニットライン数の入力画像データを用いて補間演算を行うことができ、補間演算の処理がエラーとなることを回避し、効率的に補間演算を完了することができる。
【0090】
また、本発明を実施するための形態によれば、歪補正回路に備えたラインメモリの使用効率を向上させることができ、画像処理装置においてパイプライン処理のストールが発生する割合を低減し、画像処理装置の全体の処理時間を短縮させる効果を得ることができる。また、不用意に歪補正回路の回路規模が増大してしまうことを回避することもできる。
【0091】
なお、本実施形態においては、歪補正範囲算出部を備えることもできる。この構成とすることによって、本実施形態の歪補正回路によって補間処理を実施する前に、ULBエラーが発生しない出力画像データの1ライン、すなわち、ブロックライン41として予め定める行数の幅を事前に認識することができる。より具体的には、例えば、第3の実施形態デ示した歪補正回路540では、補間処理を開始した後にエラーチェッカ541が、ULB算出部526が算出したpostULBとpreULBとに基づいて、ラインメモリ523が記憶することができる入力画像データのライン数が、1ラインの出力画像データの補間演算を行うのに必要なライン数を超えているか否かを判断している。すなわち、ULBエラーは、補間処理を開始した後に判断される。そのため、エラーが発生したときには、ブロックライン41として予め定める行数の幅を変更した後に、再度、歪補正回路540による補間処理を開始することとなる。歪補正範囲算出部をさらに備えている場合には、事前に1ラインの出力画像データの補間演算を行うのに必要なライン数を確認することができることにより、歪補正範囲算出部が算出したpostULBとpreULBとは、ブロックライン41における最大の値でないという可能性もあるが、ULBエラーが発生する頻度を低減することができる可能性もある。従って、歪補正範囲算出部によって、補間演算の処理がエラーとなることを事前に回避することができ、さらに効率的に補間演算を完了することができる可能性を有している。
【0092】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【0093】
1・・・バス
2・・・CPU
3・・・プリプロセス回路
4・・・フレームメモリ
41・・・ブロックライン
5・・・イメージプロセス処理部
5−1,5−2,5−n・・・イメージプロセス回路
511・・・メモリ部
512・・・メモリ部
52,520,530,540・・・歪補正回路(歪補正部)
521・・・補間位置生成部(歪補正座標変換部、補間位置生成部)
522・・・歪補正座標変換部(歪補正座標変換部)
523・・・ラインメモリ(入力画像データ記憶部)
524・・・メモリ制御部(補間演算部、演算制御部)
525・・・補間演算部(補間演算部)
526・・・ULB算出部(範囲算出部)
527・・・座標用メモリ(補正情報記憶部,座標記憶部)
528・・・ULB用メモリ(補正情報記憶部,ユニットライン数記憶部)
531・・・補間情報用メモリ(補正情報記憶部)
541・・・エラーチェッカ(ライン数確認部)
6・・・JPEG処理回路
【特許請求の範囲】
【請求項1】
撮像光学系の歪曲収差特性に応じた歪曲収差を有する入力画像データに対する歪補正処理を行い、歪み補正された後の出力画像データを出力する歪補正部を有し、
前記歪補正部は、
歪補正処理を行って出力する前記出力画像データの位置に対応した前記入力画像データの位置を表す座標を求める歪補正座標変換部と、
前記歪補正座標変換部が求めた前記入力画像データの座標に基づいて、歪補正処理に用いる前記入力画像データの範囲を算出する範囲算出部と、
前記歪補正座標変換部が求めた前記入力画像データの座標に引き続き、前記範囲算出部が算出した前記入力画像データの範囲の情報を記憶する補正情報記憶部と、
前記入力画像データの一部を一時的に記憶する入力画像データ記憶部と、
前記補正情報記憶部に前記入力画像データの範囲の情報が記憶された後、該記憶された前記入力画像データの範囲の情報に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データの量を確認し、前記入力画像データ記憶部に記憶している前記入力画像データの量が補間演算に必要な量以上であるときに、前記補正情報記憶部に記憶されている前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データに対して補間演算を行って前記出力画像データを生成する補間演算部と、
を備える、
ことを特徴とする画像処理装置。
【請求項2】
歪み補正して出力する2次元の行列状に分布した前記出力画像データの内、列方向に1列に並べられた予め定められた数の前記出力画像データを1つのラインとし、
2次元の行列状に分布された前記入力画像データの内、列方向に1列に並べられた予め定められた数の前記入力画像データを1つのユニットラインとし、
前記入力画像データ記憶部に複数の前記ユニットラインを一時的に記憶し、
前記補間演算部は、
前記入力画像データ記憶部に記憶している複数の前記ユニットラインに含まれる前記入力画像データに基づいて歪補正処理を行うことによって、歪み補正された後の前記ラインの前記出力画像データを生成する、
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記範囲算出部は、
歪み補正して出力する前記ラインに含まれる前記出力画像データの内、前記補間演算部によって最初に補間演算が行われる前記出力画像データに対応した前記入力画像データの座標が含まれる前記ユニットラインを基準とし、
前記補間演算部によってその後に補間演算が行われる前記出力画像データに対応した前記入力画像データの座標が含まれる前記ユニットラインが、前記基準としたユニットラインに対して直交する第1の方向に最大に離れている前記ユニットラインの数を表す第1のユニットライン数と、前記第1の方向とは逆の第2の方向に最大に離れている前記ユニットラインの数を表す第2のユニットライン数とを、前記入力画像データの範囲の情報として算出する、
ことを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記補正情報記憶部は、
前記歪補正座標変換部が求めた前記入力画像データの座標および前記範囲算出部が算出した前記入力画像データの範囲の情報を記憶する記憶領域を複数備え、
前記ライン毎に前記入力画像データの座標および前記入力画像データの範囲の情報を記憶する、
ことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記入力画像データ記憶部は、
複数の前記ユニットラインの前記入力画像データを、前記ユニットライン毎に一時的に記憶し、
前記補間演算部は、
前記補正情報記憶部に記憶された前記第1のユニットライン数と前記第2のユニットライン数とに基づいて、前記入力画像データ記憶部に記憶している前記ユニットラインの数を確認し、該確認した結果に基づいて補間演算の開始を制御する演算制御部、
を備え、
前記演算制御部は、
前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数以上の前記ユニットラインが、前記入力画像データ記憶部に記憶されていることが確認された後に、該補間演算部における補間演算を開始し、
該補間演算部は、
前記補正情報記憶部に記憶されている前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している複数の前記ユニットラインの前記入力画像データに対して補間演算を行うことによって、前記ラインに含まれる前記出力画像データをそれぞれ生成する、
ことを特徴とする請求項3または請求項4に記載の画像処理装置。
【請求項6】
前記補正情報記憶部は、
前記出力画像データの前記ラインに含まれるそれぞれの前記出力画像データに対応して、前記歪補正座標変換部が求めた前記入力画像データの座標を記憶する座標記憶部と、
前記範囲算出部が算出した前記第1のユニットライン数と、前記第2のユニットライン数とを記憶するユニットライン数記憶部と、
を備え、
前記座標記憶部は、
前記ラインに含まれる前記出力画像データ分の前記入力画像データの座標を順次記憶し、
前記ユニットライン数記憶部は、
前記座標記憶部が記憶する前記ラインにおける前記第1のユニットライン数と前記第2のユニットライン数とをそれぞれ1つ記憶する、
ことを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記範囲算出部が算出した前記第1のユニットライン数と前記第2のユニットライン数とに基づいて、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数を確認するライン数確認部、
をさらに備え、
前記ライン数確認部は、
前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数が、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数以下である場合には、前記第1のユニットライン数と前記第2のユニットライン数とを前記補正情報記憶部に記憶し、
前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数が、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数よりも多い場合には、エラーを表す信号を出力する、
ことを特徴とする請求項5または請求項6に記載の画像処理装置。
【請求項8】
前記歪補正座標変換部は、
前記出力画像データの前記ラインに含まれるそれぞれの前記出力画像データの位置を表す補間位置を生成する補間位置生成部、
を備え、
前記間位置生成部が生成した前記補間位置を、予め設定された撮像光学系の歪曲収差特性に応じた変換特性に基づいて、前記入力画像データの位置を表す座標に変換する、
ことを特徴とする請求項2から請求項7のいずれか1の項に記載の画像処理装置。
【請求項9】
前記歪補正座標変換部は、
前記補正情報記憶部に前記入力画像データの座標を記憶することができる記憶領域があるときに、前記入力画像データの座標を順次求め、
前記補間演算部は、
前記補正情報記憶部に前記入力画像データの範囲の情報が書き込まれた後に、前記補正情報記憶部から前記入力画像データの範囲の情報を読み出して、前記入力画像データ記憶部に記憶している前記入力画像データの量を確認する、
ことを特徴とする請求項1から請求項8のいずれか1の項に記載の画像処理装置。
【請求項10】
撮像光学系の歪曲収差特性に応じた歪曲収差を有する入力画像データに対する歪補正処理を行い、歪み補正された後の出力画像データを出力する歪補正ステップを有し、
前記歪補正ステップは、
歪補正処理を行って出力する前記出力画像データの位置に対応した前記入力画像データの位置を表す座標を求め、該求めた入力画像データの座標を補正情報記憶部に記憶する歪補正座標変換ステップと、
前記歪補正座標変換ステップによって求めた前記入力画像データの座標に基づいて、歪補正処理に用いる前記入力画像データの範囲を算出し、該算出した入力画像データの範囲の情報を前記補正情報記憶部に記憶する範囲算出ステップと、
補正情報記憶部に前記範囲算出ステップによって算出した前記入力画像データの範囲の情報が記憶された後、前記補正情報記憶部から前記入力画像データの範囲の情報を読み出し、読み出した前記入力画像データの範囲の情報に基づいて、入力画像データ記憶部に記憶している前記入力画像データの量を確認し、前記入力画像データ記憶部に記憶している前記入力画像データの量が補間演算に必要な量以上であるときに、前記補正情報記憶部から前記入力画像データの座標を読み出し、読み出した前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データに対して補間演算を行って前記出力画像データを生成する補間演算ステップと、
を含む、
ことを特徴とする画像処理方法。
【請求項1】
撮像光学系の歪曲収差特性に応じた歪曲収差を有する入力画像データに対する歪補正処理を行い、歪み補正された後の出力画像データを出力する歪補正部を有し、
前記歪補正部は、
歪補正処理を行って出力する前記出力画像データの位置に対応した前記入力画像データの位置を表す座標を求める歪補正座標変換部と、
前記歪補正座標変換部が求めた前記入力画像データの座標に基づいて、歪補正処理に用いる前記入力画像データの範囲を算出する範囲算出部と、
前記歪補正座標変換部が求めた前記入力画像データの座標に引き続き、前記範囲算出部が算出した前記入力画像データの範囲の情報を記憶する補正情報記憶部と、
前記入力画像データの一部を一時的に記憶する入力画像データ記憶部と、
前記補正情報記憶部に前記入力画像データの範囲の情報が記憶された後、該記憶された前記入力画像データの範囲の情報に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データの量を確認し、前記入力画像データ記憶部に記憶している前記入力画像データの量が補間演算に必要な量以上であるときに、前記補正情報記憶部に記憶されている前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データに対して補間演算を行って前記出力画像データを生成する補間演算部と、
を備える、
ことを特徴とする画像処理装置。
【請求項2】
歪み補正して出力する2次元の行列状に分布した前記出力画像データの内、列方向に1列に並べられた予め定められた数の前記出力画像データを1つのラインとし、
2次元の行列状に分布された前記入力画像データの内、列方向に1列に並べられた予め定められた数の前記入力画像データを1つのユニットラインとし、
前記入力画像データ記憶部に複数の前記ユニットラインを一時的に記憶し、
前記補間演算部は、
前記入力画像データ記憶部に記憶している複数の前記ユニットラインに含まれる前記入力画像データに基づいて歪補正処理を行うことによって、歪み補正された後の前記ラインの前記出力画像データを生成する、
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記範囲算出部は、
歪み補正して出力する前記ラインに含まれる前記出力画像データの内、前記補間演算部によって最初に補間演算が行われる前記出力画像データに対応した前記入力画像データの座標が含まれる前記ユニットラインを基準とし、
前記補間演算部によってその後に補間演算が行われる前記出力画像データに対応した前記入力画像データの座標が含まれる前記ユニットラインが、前記基準としたユニットラインに対して直交する第1の方向に最大に離れている前記ユニットラインの数を表す第1のユニットライン数と、前記第1の方向とは逆の第2の方向に最大に離れている前記ユニットラインの数を表す第2のユニットライン数とを、前記入力画像データの範囲の情報として算出する、
ことを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記補正情報記憶部は、
前記歪補正座標変換部が求めた前記入力画像データの座標および前記範囲算出部が算出した前記入力画像データの範囲の情報を記憶する記憶領域を複数備え、
前記ライン毎に前記入力画像データの座標および前記入力画像データの範囲の情報を記憶する、
ことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記入力画像データ記憶部は、
複数の前記ユニットラインの前記入力画像データを、前記ユニットライン毎に一時的に記憶し、
前記補間演算部は、
前記補正情報記憶部に記憶された前記第1のユニットライン数と前記第2のユニットライン数とに基づいて、前記入力画像データ記憶部に記憶している前記ユニットラインの数を確認し、該確認した結果に基づいて補間演算の開始を制御する演算制御部、
を備え、
前記演算制御部は、
前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数以上の前記ユニットラインが、前記入力画像データ記憶部に記憶されていることが確認された後に、該補間演算部における補間演算を開始し、
該補間演算部は、
前記補正情報記憶部に記憶されている前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している複数の前記ユニットラインの前記入力画像データに対して補間演算を行うことによって、前記ラインに含まれる前記出力画像データをそれぞれ生成する、
ことを特徴とする請求項3または請求項4に記載の画像処理装置。
【請求項6】
前記補正情報記憶部は、
前記出力画像データの前記ラインに含まれるそれぞれの前記出力画像データに対応して、前記歪補正座標変換部が求めた前記入力画像データの座標を記憶する座標記憶部と、
前記範囲算出部が算出した前記第1のユニットライン数と、前記第2のユニットライン数とを記憶するユニットライン数記憶部と、
を備え、
前記座標記憶部は、
前記ラインに含まれる前記出力画像データ分の前記入力画像データの座標を順次記憶し、
前記ユニットライン数記憶部は、
前記座標記憶部が記憶する前記ラインにおける前記第1のユニットライン数と前記第2のユニットライン数とをそれぞれ1つ記憶する、
ことを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記範囲算出部が算出した前記第1のユニットライン数と前記第2のユニットライン数とに基づいて、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数を確認するライン数確認部、
をさらに備え、
前記ライン数確認部は、
前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数が、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数以下である場合には、前記第1のユニットライン数と前記第2のユニットライン数とを前記補正情報記憶部に記憶し、
前記第1のユニットライン数と前記第2のユニットライン数とを合わせた数が、前記入力画像データ記憶部に記憶することができる前記ユニットラインの数よりも多い場合には、エラーを表す信号を出力する、
ことを特徴とする請求項5または請求項6に記載の画像処理装置。
【請求項8】
前記歪補正座標変換部は、
前記出力画像データの前記ラインに含まれるそれぞれの前記出力画像データの位置を表す補間位置を生成する補間位置生成部、
を備え、
前記間位置生成部が生成した前記補間位置を、予め設定された撮像光学系の歪曲収差特性に応じた変換特性に基づいて、前記入力画像データの位置を表す座標に変換する、
ことを特徴とする請求項2から請求項7のいずれか1の項に記載の画像処理装置。
【請求項9】
前記歪補正座標変換部は、
前記補正情報記憶部に前記入力画像データの座標を記憶することができる記憶領域があるときに、前記入力画像データの座標を順次求め、
前記補間演算部は、
前記補正情報記憶部に前記入力画像データの範囲の情報が書き込まれた後に、前記補正情報記憶部から前記入力画像データの範囲の情報を読み出して、前記入力画像データ記憶部に記憶している前記入力画像データの量を確認する、
ことを特徴とする請求項1から請求項8のいずれか1の項に記載の画像処理装置。
【請求項10】
撮像光学系の歪曲収差特性に応じた歪曲収差を有する入力画像データに対する歪補正処理を行い、歪み補正された後の出力画像データを出力する歪補正ステップを有し、
前記歪補正ステップは、
歪補正処理を行って出力する前記出力画像データの位置に対応した前記入力画像データの位置を表す座標を求め、該求めた入力画像データの座標を補正情報記憶部に記憶する歪補正座標変換ステップと、
前記歪補正座標変換ステップによって求めた前記入力画像データの座標に基づいて、歪補正処理に用いる前記入力画像データの範囲を算出し、該算出した入力画像データの範囲の情報を前記補正情報記憶部に記憶する範囲算出ステップと、
補正情報記憶部に前記範囲算出ステップによって算出した前記入力画像データの範囲の情報が記憶された後、前記補正情報記憶部から前記入力画像データの範囲の情報を読み出し、読み出した前記入力画像データの範囲の情報に基づいて、入力画像データ記憶部に記憶している前記入力画像データの量を確認し、前記入力画像データ記憶部に記憶している前記入力画像データの量が補間演算に必要な量以上であるときに、前記補正情報記憶部から前記入力画像データの座標を読み出し、読み出した前記入力画像データの座標に基づいて、前記入力画像データ記憶部に記憶している前記入力画像データに対して補間演算を行って前記出力画像データを生成する補間演算ステップと、
を含む、
ことを特徴とする画像処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−33007(P2012−33007A)
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願番号】特願2010−172157(P2010−172157)
【出願日】平成22年7月30日(2010.7.30)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願日】平成22年7月30日(2010.7.30)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】
[ Back to top ]