(57)【要約】【課題】魚眼画像を平面画像に補正する際のメモリアクセスに要する時間を減らし、処理時間の短縮を可能とする。【解決手段】魚眼画像をラスタースキャン順に格納する入力画像フレームメモリ41と、平面画像の画素の画素座標から、それらの画素の画素座標に対応する魚眼画像画素の画素座標を求め、求めた魚眼画像の画素の画素座標を魚眼画像のラスタースキャン順に並び替え、魚眼画像の画素の画素座標と対応する平面画像をの画素の画素座標とを対応付けた入力座標順補正データを予め格納しておく補正情報メモリ421と、魚眼画像のラスターラインの複数ライン分のデータを格納するラインメモリ42と、ラインメモリ内の魚眼画像の複数画素の画素値と、前記入力座標順補正データとを使用して、魚眼画像のラスタースキャン順に、魚眼画像の画素値の平面画像の画素値への補正処理を行う補正処理部43とを備える。【選択図】図５
2014035589.tif 000002
【特許請求の範囲】
【請求項１】
魚眼レンズで撮影された魚眼画像を平面画像に補正する魚眼画像の補正装置において、
魚眼画像をラスタースキャン順に格納する入力画像フレームメモリと、
平面画像を構成する全ての画素の画素座標から、それらの画素の画素座標に対応する魚眼画像を構成する画素の画素座標を求め、求めた魚眼画像を構成する画素の画素座標を魚眼画像のラスタースキャン順に並び替え、魚眼画像を構成する画素の画素座標と対応する平面画像を構成する画素座標とを対応付けた入力座標順補正データを予め格納しておく補正情報メモリと、
前記魚眼画像のラスターラインの複数ライン分のデータを格納するラインメモリと、
前記ラインメモリ内の魚眼画像の複数画素の画素値と、前記入力座標順補正データとを使用して、魚眼画像のラスタースキャン順に、魚眼画像の画素値の平面画像の画素値への補正処理を行う補正処理部と、
を備えることを特徴とする魚眼画像の補正装置。
【請求項２】
前記補正処理部により魚眼画像から補正した平面画像の一部を一時的に格納するキャッシュメモリと、
平面画像を格納する出力画像フレームメモリと、
をさらに備えることを特徴とする請求項１記載の魚眼画像の補正装置。
【請求項３】
前記ラインメモリは、魚眼画像の画素値を平面画像の画素値への補正に必要な魚眼画像の垂直方向の画素数＋１個以上の、それぞれが魚眼画像の水平方向１ライン分の画素データを格納可能なＳＲＡＭを用いて構成されることを特徴とする請求項１記載の魚眼画像の補正装置。
【請求項４】
魚眼レンズで撮影された魚眼画像を平面画像に補正する魚眼画像の補正方法において、
魚眼画像をラスタースキャン順に入力画像フレームメモリに格納するステップと、
平面画像を構成する全ての画素の画素座標から、それらの画素の画素座標に対応する魚眼画像を構成する画素の画素座標を求め、求めた魚眼画像を構成する画素の画素座標を魚眼画像のラスタースキャン順に並び替え、魚眼画像を構成する画素の画素座標と対応する平面画像を構成する画素座標とを対応付けた入力座標順補正データを予め補正情報メモリに格納しておくステップと、
前記魚眼画像のラスターラインの複数ライン分のデータをラインメモリに格納するステップと、
前記ラインメモリ内の魚眼画像の複数画素の画素値と、前記入力座標順補正データとを使用して、魚眼画像のラスタースキャン順に、魚眼画像の画素値の平面画像の画素値への補正を補正処理部で行うステップと、
を有することを特徴とする魚眼画像の補正方法。
【請求項５】
前記入力画像フレームメモリから垂直方向の必要な画素数分の画素データを前記ラインメモリに格納した後、それらのラインメモリから画素データを読み出して魚眼画像の画素値を平面画像の画素値への補正を行いながら、空いているラインメモリに次のラインの画素データを格納することを特徴とする請求項４記載の魚眼画像の補正方法。
【請求項６】
前記入力座標順補正データの上から順番に、魚眼画像の座標の周辺画素の複数の画素を前記ラインメモリから読み出して魚眼画像の画素値の平面画像の画素値への補正を行い、魚眼画像の座標に対応する平面画像の座標から出力画像フレームメモリのアドレスを求め、魚眼画像の画素値を平面画像の画素値への補正を行った平面画像のデータを出力フレームメモリへ格納することを特徴とする請求項４記載の魚眼画像の補正方法。
【請求項７】
前記平面画像のデータの出力フレームメモリへの格納を平面画像の垂直方向を均等に分割したブロックをキャッシュラインとするセットアソシアティブ方式のキャッシャメモリを介して行い、キャッシュラインの入れ替えをラウンドロビン方式で行い、出力画像フレームメモリへの更新をライトバック方式で行うことを特徴とする請求項６記載の魚眼画像の補正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、魚眼画像の補正装置及び補正方法に係り、特に、魚眼レンズによって撮影された魚眼画像を平面画像に補正する魚眼画像の補正装置及び補正方法に関する。
【背景技術】
【０００２】
魚眼レンズを使用して撮影された魚眼画像は、非常に広範囲を撮影した画像を得ることができる。しかし、魚眼レンズを使用して撮影された魚眼画像は、その中心から端に向かうほど、大きく歪んだものとなっているいるため、通常、平面画像に補正してから使用されている。魚眼レンズは、監視カメラ等に多く使用されており、監視カメラにより撮影された画像は、撮影の直後に歪みが取り除かれているのが望ましく、リアルタイムでの補正が求められている。
【０００３】
魚眼画像の歪を補正して平面画像に補正する従来技術として、例えば、特許文献１等に記載された技術が知られている。この特許文献１に記載の従来技術は、魚眼画像から平面画像へ補正するハードウェアによる画像変換用演算装置に関するものであり、撮影された魚眼画像は、輝度情報、色情報（以下では、これらをまとめて単に画素値または画素データということとする）を持つ多数の画素により構成されている。そして、魚眼レンズにより撮影された魚眼画像は、その画素をラスタースキャン順にフレームメモリに格納し、魚眼画像を補正して得ることができる平面画像の画素の各座標に対応する魚眼画像上の各画素の座標を求め、求められた魚眼画像上の各画素の座標をもとに周辺の複数画素の画素値をフレームメモリから取得し、魚眼画像の画素の画素値から平面画像の画素の画素値への補正を行うというものである。そして、この特許文献１に記載の従来技術は、平面画像の全ての画素に対して、平面画像のラスタースキャン順に１画素ずつ前述の処理を行うことにより、魚眼画像から平面画像への補正を完了させている。
【０００４】
しかし、特許文献１に記載の従来技術による魚眼画像から平面画像への補正装置は、魚眼画像の画素の画素値をフレームメモリから取得する際のメモリアクセスに長い時間を要するという問題点を有している。この理由としては、通常、フレームメモリにはDRAM等のメモリが用いられることが多く、特に、ＤＲＡＭは、アドレスが連続していないデータへのアクセス（ランダムアクセス）に時間がかかるという性質があることが挙げられる。
【０００５】
また、前述した特許文献１の従来技術における魚眼画像上のある画素の座標の周辺画素はラスタースキャン順の同一ライン上に配置されていないため、フレームメモリの連続したアドレスに格納されている可能性が低いことが挙げられる。これらの理由により、特許文献１に記載された従来技術は、フレームメモリから魚眼画像の画素を読み出すための時間が長くなり、魚眼画像から平面画像への補正に時間がかかるという問題を生じさせている。
【０００６】
前述したような特許文献１に記載の従来技術での問題点を解決することができる他の従来技術として、例えば、特許文献２等に記載された技術が知られている。この特許文献２に記載された従来技術は、魚眼画像を格子状に分割して、分割した領域内の画素をラスタースキャン順にフレームメモリの連続したアドレスに格納したブロックの中から数ブロックをフレームメモリからキャッシュメモリに格納して、平面画像への補正を行うようにすることにより、メモリアクセスに要する時間を短縮することを可能としたものである。
【０００７】
特許文献２に記載の従来技術は、キャッシュメモリを利用することにより、メモリアクセスに要する時間を短縮することができるものである。しかし、この特許文献２に記載の従来技術も、前述した特許文献１に記載の従来技術の場合と同様に、平面画像のブロック内の画素の画素座標をラスタースキャン順に魚眼画像の画素の画素座標に変換し、平面画像のブロック内の画素の画素値をラスタースキャン順に補正していくため、補正に必要な魚眼画像のブロックをランダムにアクセス（斜めに走査）しながら補正を行わなければならず、余分なメモリアクセスが生じる可能性があるという問題点を解決することができるものではない。
【０００８】
図１は特許文献２に記載の従来技術における魚眼画像から平面画像への補正方法を説明する図であり、以下、図１を参照して、前述した特許文献２に記載の従来技術での問題点を説明する。
【０００９】
図１において、魚眼レンズにより撮影された魚眼画像１は、図１（ａ）に示しているように、レンズを中心として水平方向の全周にわたる画像が円形の範囲の撮影された画像となっている。そして、特許文献２に記載の従来技術では、図１（ａ）に示しているような魚眼画像１を、図１（ｂ）に示しているような平面画像２に補正するものとしている。図１（ａ）、図１（ｂ）に示している矢印付きの実線は、それぞれの画像におけるラスタースキャンの方向を示している。
【００１０】
図１（ｂ）に示している平面画像２を複数のブロック（４角のブロックとして示されている）に分け、それらのブロックのブロックＡ〜Ｄに着目して見たとき、対応する魚眼画像１のブロックは、図１（ａ）に円形で示しているブロックＡ〜Ｄとなっているものとする。そして、特許文献２に記載の従来技術により、魚眼画像１の円形で示しているブロックＡ〜Ｄを平面画像２の４角で示しているブロックＡ〜Ｄに補正するものとする。
【００１１】
そのような補正を行う場合、魚眼画像１が任意の大きさのブロックに分けられ、ブロックに含まれる魚眼画像の複数の画素を用いて補正が行われることになる。この魚眼画像１が任意の大きさに分けられた図１（ａ）に点線で示す９個のブロックを拡大して示しているのが図１（ｃ）に示す図である。
【００１２】
魚眼画像１の円形で示しているブロックＡを平面画像２の４角で示しているブロックＡに補正するためには、図１（ｃ）に示す魚眼画像の９個のブロックの内の丸付き数字で示すブロック４、５、７、８のブロックに含まれる各画素の画素値のデータがキャッシュメモリに格納されている必要があり、魚眼画像１の円形で示しているブロックＢを平面画像２の４角で示しているブロックＢに補正するためには、魚眼画像の丸付き数字で示すブロック２、３、５、６のブロックに含まれる各画素の画素値のデータがキャッシュメモリに格納されている必要がある。キャッシュメモリに格納することができるブロック数が４とした場合、平面画像のブロックＡからブロックＢに補正対象が移ると、キャッシャメモリにどのブロックのデータが必要かを調べて、キャッシュメモリに格納されていた魚眼画像の丸付き数字で示すブロックの４、７、８のブロックを魚眼画像の丸付き数字で示すブロック２、３、６に入れ替えなくてはならないことになる。
【００１３】
このとき、魚眼画像の丸付き数字で示すブロック７、８に関しては、ブロック内の大部分の画素値のデータは、補正に使用されずにキャッシュメモリから削除される。また、平面画像の右端のブロックまで補正が終了し、１つ下の左端のブロックに補正対象が移った際に、魚眼画像の丸付き数字で示すブロック７、８は再びフレームメモリから読み出されて、キャッシュメモリに格納される。
【００１４】
このように、キャッシュメモリに格納される魚眼画像１のブロック内の画素値のデータは、補正で使用されずに書き換えられる画素が含まれていたり、同じブロックが何回もフレームメモリから読み出されることになってしまう。
【００１５】
また、通常、補正して平面画像を構成する１画素の画素値のデータを得るために、魚眼画像上の複数の画素の画素値のデータを必要とする。このため、前述の特許文献２に記載の従来技術は、キャッシュメモリ上に必要なデータが存在するかどうかの問い合わせを複数回行わなくてはならず、処理時間が増大してしまうという問題点を生じる。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２０００−２３５６４５号公報
【特許文献２】特開２０１０−１７６５４７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
前述で説明したように、特許文献１、２に記載の従来技術は、その何れの従来技術も、フレームメモリから魚眼画像の画素を読み出すための時間が長くなり、魚眼画像から平面画像への補正に時間がかかるという問題点を有するものであった。
【００１８】
本発明の目的は、前述した従来技術の問題点を解決し、メモリアクセス回数を最小限にすることにより魚眼画像から平面画像への補正にかかる時間を短縮することができるようにした魚眼画像の補正装置及び補正方法を提供することにある。
【課題を解決するための手段】
【００１９】
本発明によれば前記目的は、魚眼レンズで撮影された魚眼画像を平面画像に補正する魚眼画像の補正装置において、魚眼画像をラスタースキャン順に格納する入力画像フレームメモリと、平面画像を構成する全ての画素の画素座標から、それらの画素の画素座標に対応する魚眼画像を構成する画素の画素座標を求め、求めた魚眼画像を構成する画素の画素座標を魚眼画像のラスタースキャン順に並び替え、魚眼画像を構成する画素の画素座標と対応する平面画像を構成する画素座標とを対応付けた入力座標順補正データを予め格納しておく補正情報メモリと、前記魚眼画像のラスターラインの複数ライン分のデータを格納するラインメモリと、前記ラインメモリ内の魚眼画像の複数画素の画素値と、前記入力座標順補正データとを使用して、魚眼画像のラスタースキャン順に、魚眼画像の画素値の平面画像の画素値への補正処理を行う補正処理部とを備えることにより達成される。
【発明の効果】
【００２０】
本発明によれば、魚眼画像から平面画像への補正を行う際に、魚眼画像を格納しているメモリに対するメモリアクセスに要する時間を削減することができ、魚眼画像から平面画像への補正にかかる時間を短縮することができる。
【図面の簡単な説明】
【００２１】
【図１】特許文献２に記載の従来技術における魚眼画像から平面画像への補正方法を説明する図である。
【図２】魚眼画像及び座標変換に用いる魚眼レンズの仮想球面と補正後の平面画像との関係を説明する図である。
【図３】魚眼画像から平面画像への補正方法の本発明での考え方を説明する図である。
【図４】入力座標順補正データの例とその作成手順とを説明する図である。
【図５】本発明一実施形態による魚眼画像を平面画像に補正する魚眼画像の補正装置の機能構成を示すブロック図である。
【図６】ラインメモリの構成と入力フレームメモリからラインメモリへデータをバッファする読み出しとを説明する図である。
【図７】ラインメモリから画像データを読み出し、平面画像への補正処理を行う処理手順を説明する図である。
【図８】出力画像フレームメモリへ補正後の平面画像の画素をキャッシャメモリから格納する方法を説明する図である。
【図９】本発明の実施形態による魚眼画像を平面画像に補正する魚眼画像の補正装置の処理動作を説明するフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明による魚眼画像の補正装置及び補正方法の実施形態を図面により詳細に説明する。以下に説明する本発明の実施形態は、円周魚眼レンズで撮影された円形の魚眼画像を平面画像に補正するものとしており、魚眼画像と平面画像との画像サイズは、共に、６４０×４８０画素であるとする。魚眼画像から平面画像への画素値の補正には、バイキュービック法やバイリニア法等の周知の補間演算を使用することができるが、ここではバイキュービック法を用いることとして説明を進める。
【００２３】
図２は魚眼画像及び座標変換に用いる魚眼レンズの仮想球面と補正後の平面画像との関係を説明する図、図３は魚眼画像から平面画像への補正方法の本発明での考え方を説明する図、図４は入力座標順補正データの例とその作成手順とを説明する図であり、本発明をその実施形態により詳細に説明する前に、まず、これらの図を参照して、本発明での補正方法の考え方について説明する。
【００２４】
まず、図２を参照して、魚眼画像を構成する各画素の画素座標の値（以下、単に、座標値という）を画像補正後の平面画像を構成する各画素の座標値に補正する方法について説明する。
【００２５】
図２に示しているように、魚眼レンズを持つ魚眼カメラによる撮影を行うと、魚眼レンズの水平方向の全周１８０度から魚眼レンズの上方に見ることができる全てが魚眼画像１として円形に撮影される。前述の魚眼レンズの上方に見ることができる全ては、図２に示す魚眼レンズの仮想球面に配置されるものとして考えることができる。そして、この仮想球面に１点で接する平面が修正した補正後の平面画像２となる。
【００２６】
その平面画像２上のある１つの点、すなわち、平面画像２を構成するある１つの点の画素の座標値を３次元で座標変換することにより、魚眼画像１上のある１つの点、すなわち、魚眼画像１を構成するある１つの点の画素の座標値を求めることができる。前述の平面画像２を構成する画素の座標値を３次元で座標変換して魚眼画像１を構成する画素の座標値を求める方法としては、複数の方法がすでに知られており、例えば、「透視投影」と呼ばれている方法がある。本発明では、平面画像、魚眼画像間の座標変換の方法としては、どのような方法を使用してもよい。
【００２７】
一方、魚眼画像の平面画像への補正は、魚眼画像を構成する各画素の画素値を平面画像を構成する各画素の画素値に補正しなければならない。本発明では、この画素値の補正を、図２により説明したような平面画像２を構成する画素の座標値を３次元で座標変換して魚眼画像１を構成する画素の座標値を求めて対応付けられた座標値を用いて、魚眼画像１を構成する各画素の座標値に対応する平面画像２を構成する画素の画素値への補正を行うことにより、魚眼画像の平面画像への補正を行う。画素値を補正する方法としては、各種の方法が知られており、どのような方法を用いてもよいが、本発明では、前述したように、バイキュービック法と呼ばれる方法を使用することとする。
【００２８】
バイキュービック法を用いる場合、座標変換で求めた魚眼画像１の画素の座標値の周辺の４×４画素（１６画素）を用いて、平面画像２の対応する座標値の画素の画素値を求める。その際、本発明では、魚眼画像１のラスタースキャン順に補正処理を行う。次に、魚眼画像から平面画像への補正方法の本発明での考え方を図３を参照して説明する。
【００２９】
一般に、画像データは、メモリ上にラスタースキャン順に格納されるのが普通であり、本発明においても、図３（ｃ）に示すように、魚眼画像１は、ラスタースキャン順にメモリに格納される。図３（ｃ）内に、ラスタースキャン順の方向を示す矢印付きの実線の上の小さい丸で囲んだ部分を拡大して示しているのが図３（ａ）である。そして、いま、図３（ａ）に示す魚眼画像１上の白抜きの数字１〜４で示す画素の画素値を、平面画像２上の対応する画素の画素値に、魚眼画像１のラスタースキャン順に処理するものとする。
【００３０】
この場合、魚眼画像１上のラスタースキャン順にある白抜きの数字１〜４で示す画素それぞれの画素座標に対応する平面画像２の画素座標の位置は、平面画像２のラスタースキャン順とはならず、図３（ｂ）に示すように、近くにある別のラスターライン上に白抜きの数字１〜４で示すような位置となる。図３（ｂ）に示すように平面画像２に変換した後の画素が配置されたものの全体の様子を示しているのが図３（ｄ）であり、魚眼画像のラスタースキャン順の方向が、矢印で示す実線のように、中央部を除いて曲がったものとなる。
【００３１】
本発明では、魚眼画像１のラスタースキャン順に処理することとしているので、魚眼画像１のメモリへの格納時のアドレス順に画素値を読み出しながら補正処理を行うことが可能となる。このとき、画素値の変換を行って魚眼画像１を平面画像２に補正するため、例えば、白抜きの数字１で示す魚眼画像１上の画素の画素値の補正のためには、図３（ａ）に白抜きの数字１で示す魚眼画像１上の画素の周辺の４×４画素（１６画素）を後述する補正装置内に取り込んで処理を行なうことになる。そして、魚眼画像１上の隣り合う座標にある白抜きの数字２で示す画素に対する補正を行う場合、各画素の座標の周辺１６画素は、部分的に白抜きの数字１で示す画素の補正処理に使用されたものと重複するため、補正に使用した周辺１６画素と次に必要となる周辺１６画素で重複しない画素のみをメモリから読み出せばよく、毎回１６画素を読み出す必要もなくすことができる。
【００３２】
前述で説明したように、本発明は、公知の座標変換により、平面画像２のある画素の座標に対応する魚眼画像１の画素の座標を求めることができる。しかし、平面画像２の座標から魚眼画像１の座標が決まるので、各画素の画素値の補正の都度、平面画像２の画素の座標に対応する魚眼画像１の画素の座標を求めていたのでは、魚眼画像１の画素の画素値の補正処理をラスタースキャン順に処理することはできない。そこで、本発明は、画素値の補正処理を行う前に入力座標順補正データ３を作成しておくこととする。
【００３３】
入力座標順補正データ３とは、図４（ｂ）に示すような魚眼画像１の画素座標と平面画像２の対応する画素座標とを魚眼画像１のラスタースキャン順に記したデータである。このよな入力座標順補正データ３を作成する際には、図２により説明した方法に従った座標変換を行うことにより、まず、平面画像２のラスタースキャン順に、平面画像２を構成する全ての画素の座標に対して、対応する魚眼画像１の座標を求める座標変換処理を行なって、求めた結果を入力した図４（ａ）に示すような出力座標順補正データを作成する。図４（ａ）には、平面画像２を構成する画素の座標（１１、５）、（１２、５）、（１３、５）に対応する魚眼画像１を構成する画素の座標が、（１９２．９２、１１１．４１）、（１９３．２４、１０９．５３）、（１９３．６２、１０７．６５）として求められたとして出力座標順補正データを示している。
【００３４】
次に、前述で求められた出力座標順補正データの魚眼画像１の座標の整数値をもとに、魚眼画像１の画素をラスタースキャン順に並び替えるソート処理を行って、図４（ｂ）に示すような入力座標順補正データ３を作成する。この入力座標順補正データ３は、魚眼画像１の各画素について、魚眼画像１の画素のｘ座標、魚眼画像１の画素のｙ座標、平面画像２の画素のｘ座標、平面画像２の画素のｙ座標の４つの座標を１組としたデータを、魚眼画像１のラスタースキャン順に並べたデータである。
【００３５】
そして、本発明は、画素値の補正を行う際に、前述した入力座標順補正データ３の上から順番に１画素ずつ補正処理を行っていくことにより、魚眼画像１に対する各画素の画素値の補正を魚眼画像１のラスタースキャン順に処理することができる。
【００３６】
入力座標順補正データ３は、図２により説明した投影方法、視点、レンズの変更がない場合、魚眼画像１と平面画像２との対応する画素の座標は変わらないため、同一のデータを使用することができる。後述する補正装置を使用して画素値の補正を行う際には、全てのパターンの入力座標順補正データ３を作成し、メモリに保存しておき、補正の際に必要なデータを選択し、そのデータを補正に用いることができ、座標変換に入力座標順補正データ３を用意しておくことにより、補正処理にかかる時間を短縮することができる。
【００３７】
図５は本発明一実施形態による魚眼画像を平面画像に補正する魚眼画像の補正装置の機能構成例を示すブロック図であり、以下、これについて説明する。
【００３８】
本発明の実施形態による魚眼画像の補正装置４は、図５に示すように、魚眼レンズが搭載されたカメラにより撮影された魚眼画像１を格納するための入力画像フレームメモリ４１と、補正処理を行う際に使用する入力画像フレームメモリ４１内の魚眼画像１の画素をバッファしておくラインメモリ４２と、図４により説明した入力座標順補正データ３を記憶しておく補正情報メモリ４２１と、魚眼画像１から平面画像２への補正を行う補正処理部４３と、補正後の平面画像２の一部を一時的に蓄積するためのキャッシュメモリ４４と、平面画像２を格納するための出力画像フレームメモリ４５とを備えて構成される。補正処理部４３は、処理に必要な画素データをラインメモリ４２から取得してバッファする画素バッファ４３１と、補正演算を行う補正演算部４３３と、画素バッファ４３１内の画素データを補正演算部４３３に渡して補正演算を行わせる制御、補正処理部４３全体の制御を行う制御部４３２とを有して構成されている。
【００３９】
前述において、魚眼画像の補正装置４は、ＤＲＡＭ等による主メモリ、ＣＰＵ、ＨＤＤ、ＳＲＡＭ等の記憶装置を備え、必要に応じてキーボード、マウス等の入力装置、表示装置を備えて構成されればよく、ＦＰＧＡボードのハードウェア上に構築するのがよい。このようにハードウェアとして構成された魚眼画像の補正装置４は、カメラに中に収容して、カメラと一体に構成することができる。また、前述の魚眼画像の補正装置４は、よく知られる情報処理装置、例えば、ＰＣ等の中に構築することができる。
【００４０】
前述したように構成される魚眼画像の補正装置４において、魚眼レンズが搭載されたカメラなどから送信されてきた魚眼画像１のデータは、まず、ラスタースキャン順に入力画像フレームメモリ４１に格納される。その後、入力画像フレームメモリ４１からラインメモリ４２に画像データがバッファされ、ラインメモリ４２にバッファされた画像データと補正情報メモリ４２１内の入力座標順補正データ３とをもとに、補正処理部４３が魚眼画像１の各画素の画素値を平面画像２の画素の画素値への補正処理を行う。補正後の画像データは、キャッシュメモリ４４に一定量が蓄積された後、出力画像フレームメモリ４５に格納され、補正完了後にモニタ等のデバイスである表示装置に出力される。
【００４１】
図６はラインメモリの構成と入力フレームメモリからラインメモリへデータをバッファするデータの読み出しとを説明する図であり、次に、これについて説明する。
【００４２】
ラインメモリ４２は、入力画像フレームメモリ４１に格納されている魚眼画像をバッファするためのメモリであり、高速に１画素を読み書きすることができるＳＲＡＭを用い、魚眼画像の複数の水平ラインのデータを格納できるように構成される。そして、ラインメモリ４２は、魚眼画像１の水平１ライン分のデータを格納することができる複数本のラインメモリにより構成される。このため、ラインメモリ４２は、画素値の補正のために必要な垂直方向の画素数＋１以上の個数を補正装置４内に備えなければならない。バイキュービック法の場合、周辺の４×４画素を用いて補正を行うので、５個以上のラインメモリ４２が必要となる。本発明では、図６に示すように、５個のラインメモリＡ〜Ｅを用いるものとする。
【００４３】
入力画像フレームメモリ４１からラインメモリ４２へデータをバッファするデータの読み出しに際しては、魚眼画像１の上から順番に１ラインずつ入力画像フレームメモリ４１からラインメモリ４２に画像データを格納していく。そして、４個のラインメモリＡ〜Ｄに画像データを格納し終えたら、それらのラインメモリＡ〜Ｄから必要な画像データを取り出し、補正処理部４３で補正を行いつつ、次のラインの画像データを残っているラインメモリＥに格納していく。補正処理部４３での処理は、ラインメモリＡ〜Ｄから画素バッファ４３１にデータを移し、それらの画像データを用いて補正演算部４３３が補正を行う処理となる。
【００４４】
図６（ａ）には、ラインメモリＡ〜Ｄに、ｎ〜ｎ＋３ライン目の４ライン分の画像データが格納済みであり、ラインメモリＥに、ｎ＋４ライン目の画像データが格納中である状態を示している。この状態で、補正処理部４３から読み出しの要求があると、入力画像フレームメモリ４１は、その要求に応じて、格納されたｎ〜ｎ＋３目のラインの画像データを補正処理部４３に送る。補正処理部４３が、ｎ〜ｎ＋３ライン目の画像の画素データを必要とする画素の補正処理が終了するまでの間に、ラインメモリＥには、入力画像フレームメモリ４１からｎ＋４ライン目の画像データが格納されることになる。
【００４５】
補正処理部４３は、ｎ〜ｎ＋３ライン目の画像の画素データを必要とする補正が全て完了したら、ラインメモリのＢ〜Ｅに格納されているｎ＋１〜ｎ＋４ライン目の４ライン分の画像データの読み出しを要求し、取得したｎ＋１〜ｎ＋４ライン目の４ライン分の画像データを用いて補正を開始する。このとき、図６（ｂ）に示すように、ラインメモリＡは、格納されていたｎライン目の画像の画素データを破棄し、ｎ＋５ライン目の画像の画素データを格納する処理を開始する。
【００４６】
前述で説明したように、ラインメモリ４２のうちの４個は、補正処理に必要な画像データが格納済みとされた状態で、補正処理部４３に画像データを送るのに使用され、残りのラインメモリ１個は、後に必要となるラインの画像データを入力画像フレームメモリ４１から取得するために使用される。
【００４７】
図７はラインメモリから画像データを読み出し、平面画像への補正処理を行う処理手順を説明する図であり、次に、これについて説明する。
【００４８】
補正処理部４３は、（水平方向の周辺画素数＋α）×（垂直方向の周辺画素数）の画素を保持することができる画素バッファ４３１を有している。本発明の実施形態では、画素値の補正にバイキュービック法を用いることとしているので、画素バッファ４３１は、図７に示すように、（４＋１）×４画素の２０画素を保持することができるように構成されている。
【００４９】
いま、ｎ画素目の画素の画素値の補正を行おうとするものとすると、魚眼画像１の水平座標１９１〜１９５、垂直座標１１０〜１１３の２０画素が補正処理部４３内の画素バッファ４３１に保持されることになる。この場合、入力座標順補正データ３を参照すると、ｎ画素目の魚眼画像１の座標は、水平座標１９２．９１、垂直座標１１１．４１であるので、補正演算部４３３は、画素バッファ４３１に保持した画素の中から水平座標１９１〜１９４、垂直座標１１０〜１１３の１６画素の画素値を用いて、平面画像２の水平座標１１、垂直座標５の画素値を求める。
【００５０】
補正演算部４３３の補正演算で得られた、平面画像２の水平座標１１、垂直座標５の画素の画素値は、平面画像２の座標から算出された出力画像フレームメモリ４５のアドレスに基づいて、キャッシュメモリ４４に蓄積された後、出力画像フレームメモリ４５へ格納される。また、補正処理部４３内の画素バッファ４３１に保持されている２０画素はそのまま保持し続けられる。
【００５１】
次に、ｎ＋１画素目の魚眼画像１の処理に移ると、ｎ＋１画素目の魚眼画像１の座標は水平座標１９２．９７、垂直座標１１１．６０であるので、補正演算部４３３は、ｎ画素目の処理の場合と同一の１６画素の画素値を用いて前述と同様に補正処理を行う。また、ｎ＋２画素目の魚眼画像１の処理に移ると、ｎ＋２画素目の魚眼画像１の座標は水平座標１９３．０３、垂直座標１１１．７９となるので、補正演算部４３３は、ｎ画素目、ｎ＋１画素目のときの補正で必要であった１６画素から、右に１つずれた水平座標１９２〜１９５の画素の画素値を用いて補正処理を行う。このとき、保持された２０画素の中の左端の水平座標１９１の４画素が不要となる。本発明の実施形態では、魚眼画像１のラスタースキャン順に処理を行うとしているため、後の補正にこれらの４画素が使用されることはない。そこで、ｎ＋３画素目画素値の補正を行う際に、不要となる左端の４画素を破棄し、画素バッファ４３１保持している画素の右隣の水平座標１９６の４画素がそれぞれのラインメモリ４２より取り出されて画素バッファ４３１に格納される。これにより、補正処理部４３は、魚眼画像１の水平座標１９２〜１９６、垂直座標１１０〜１１３の２０画素を画素バッファ４３１に保持し、補正演算部４３３は、水平座標１９２〜１９５、垂直座標１１０〜１１３の１６画素の画素値を用いて、魚眼画像のｎ＋２画素目に対応する平面画像２の水平座標１４、垂直座標８の画素の画素値を求めることができる。
【００５２】
前述したように、補正処理部４３は、その内部に補正に使用する周辺画素より水平方向に多くの画素を保持し、保持した画素の左端の画素が不要となったら、それらの画素を破棄し、ラインメモリ４２から新たに右隣の画素のデータを読み出して保持する。こうすることにより、処理が水平方向に遷移している間、補正処理部４３には補正に必要となる周辺画素が常に保持されていることとなり、補正処理部４３は、滞りなく補正処理を行うことができる。もし、補正の範囲が広範囲で水平方向への遷移が１画素以上になる場合、水平方向に保持する画素数や、１つのラインメモリから１度に取り出す画素数を増加させることにより対応可能である。また、保持している画素を全て入れ替えるとしても、ラインメモリにバッファされている画素であるため、処理時間が大幅に増大することはない。
【００５３】
図８は出力画像フレームメモリ４５へ補正後の平面画像２の画素をキャッシャメモリ４４から格納する方法を説明する図であり、次に、これについて説明する。
【００５４】
平面画像２の画素は、図３に示して説明したように、１画素ずつ、画像の中心を原点とした放物線状に上部から下部に向けて出力される。そのため、キャッシャメモリ４４からは、出力画像フレームメモリ４５のアドレス順に画素が出力されない。出力画像フレームメモリ４５へのキャッシャメモリ４４からのアクセス回数を削減するため、本発明の実施形態では、キャッシュメモリ４４に出力画像フレームメモリ４５の連続したアドレスに格納する画素が蓄積された後、それらの画素をまとめて出力画像フレームメモリ４５へ格納する。このため、本発明の実施形態で使用するキャッシュメモリ４４は、ライトバック方式のものとする。
【００５５】
出力画像フレームメモリ４５へのキャッシャメモリ４４からの書き込みは、キャッシュラインを入れ替えるタイミングとする。このとき、入れ替えるキャッシュラインが全て補正後の画素に書きかえられていると、書き込み先のアドレスへは１回のアクセスのみとすることができ、同一のアドレスのデータを数回キャッシュしないで済むことになる。キャッシュラインが１つ（ダイレクトマップ方式）の場合、画像の半分をキャッシュラインサイズにすると実現することができるが、キャッシュメモリの容量が大きくなりすぎてしまう。そこで、本発明の実施形態では、複数のキャッシュライン（セットアソシアティブ方式）で画素を蓄積するようにする。これにより、キャッシャメモリの容量をダイレクトマップ方式よりは小さいものとすることができる。
【００５６】
図８に示すように、セットアソシアティブ方式を用いる場合、平面画像２の垂直方向を均等に分割し、分割した１ブロックをキャッシュラインとする。画像サイズ６４０×４８０の平面画像２への補正で、魚眼画像１の１ラインを補正すると、最大で平面画像２の約１００ラインにわたる画素を出力するとした場合、３２ライン単位で分割し、４キャッシュラインを格納できる４ｗａｙセットアソシアティブ方式のキャッシュメモリを使用すればよいことになる。本発明の実施形態では、このほかの場合でも、画像サイズやレンズの歪曲収差などから最適となるキャッシュラインサイズとｗａｙ数を求め、効率のよいメモリアクセスを実現できるようにすることができる。
【００５７】
キャッシュラインを入れ替える際、複数あるキャッシュラインの中から１つを選ばなくてはならない。本発明の実施形態では、平面画像２の上のラインから順番に補正後の画素が揃っていくので、最も前に入れ替えを行ったキャッシュラインと入れ替えばよく、キャッシュラインの入れ替えにはラウンドロビン方式を用いることとした。
【００５８】
図９は本発明の実施形態による魚眼画像を平面画像に補正する魚眼画像の補正装置の処理動作を説明するフローチャートであり、次に、これについて説明する。なお、補正処理を開始するに当り、事前に入力座標順補正データを作成し、作成された入力座標順補正データ３が補正情報メモリに格納されているものとする。
【００５９】
（１）補正処理が開始されると、入力画像フレームメモリ４１に魚眼レンズ搭載カメラで撮影された魚眼画像１の１フレーム分の画像データの全てがラスタースキャン順に格納され、入力画像フレームメモリ４１への画像データの格納が終了すると、入力座標順補正データ３が補正情報メモリから読み出される（ステップ９０１、９０２）。
【００６０】
（２）読み出された入力座標順補正データ３が魚眼画像１のラインの先頭の画素を示しており、この画素から補正処理を行っていくのか否かを判定し、入力座標順補正データ３が魚眼画像１のラインの先頭の画素を示していた場合、入力画像フレームメモリ４１からラインメモリ４２に画素データを格納する処理を開始する（ステップ９０３、９０４）。
【００６１】
（３）補正処理に必要な魚眼画像のライン数の画像データを入力画像フレームメモリ４１から読み出してラインメモリ４２内に格納する処理を続け、補正処理に必要な魚眼画像のライン数の画像データがラインメモリ４２に格納されたら、残っているラインメモリ４２へフレームメモリ４１からの画素データの格納を続けながら、画素バッファ４３１に補正処理に必要な魚眼画像の画素データをラインメモリ４２から読み出して格納する処理を開始する（ステップ９０５、９０７）。
【００６２】
（３）ステップ９０３の判定で、入力座標順補正データ３が魚眼画像１のラインの先頭の画素を示していなかった場合、その座標値で補正をするに当って、画素バッファ４３１内に不要な画素データがあるか否かを判定し、不要な画素データがあった場合、ステップ９０７の処理に移って、画素バッファ４３１に補正処理に必要な魚眼画像の画素データをラインメモリ４２から読み出して格納する処理を開始する（ステップ９０６、９０７）。
【００６３】
（４）ステップ９０７の処理により画素バッファ４３１に補正に必要な画素数分の画素データが格納されたことを監視し、補正に必要な画素数分の画素データが格納されたことが確認できたら、あるいは、ステップ９０６の判定で、画素バッファ４３１内に不要な画素データがなかった場合、補正演算部４３３が、バイキュービック法を用い、画素バッファ４３１内の画素データを使用して補正演算を行い、魚眼画像１から平面画像２へ補正する演算を行う。補正後の平面画像を構成する画素の画素データは、キャッシュメモリ４４に格納される（９０８〜９１０）。
【００６４】
（５）その後、キャッシャメモリ４４内のキャッシュラインの全ての画素についての補正が完了しているか否かを判定し、補正が完了しているキャッシュラインがある場合、そのキャッシュラインの画素の画素データを出力画像フレームメモリ４５へ格納する（ステップ９１１、９１２）。
【００６５】
（６）出力画像フレームメモリ４５へ格納されたキャッシュラインの画素の画素データが最終画素の画素データであるか否かを判定し、最終画素であった場合、補正処理を終了する（ステップ９１３）。
【００６６】
（７）ステップ９１１の判定で、キャッシャメモリ４４内のキャッシュラインの全ての画素についての補正が完了していなかった場合、あるいは、ステップ９１３の判定で、出力画像フレームメモリ４５へ格納されたキャッシュラインの画素の画素データが最終画素の画素データでなかった場合、ステップ９０２からの処理に移行して処理を続ける。
【００６７】
前述で説明したように、本発明の実施形態は、入力される画像である魚眼画像１のラスタースキャン順に補正処理を行って、ラインメモリ４２とキャッシュメモリ４４を用いた補正装置４で、魚眼画像１を平面画像２に補正するものであり、これにより、メモリアクセス回数を削減することができ、補正にかかる処理時間を短縮することができる。また、前述した本発明の実施形態は、魚眼画像１から平面画像２への補正に特化して本発明を説明したが、本発明は、魚眼レンズ以外で撮影された画像の歪みを補正することにも、適応可能である。
【００６８】
前述した本発明の実施形態での処理は、本発明による魚眼画像の補正装置を構成するＦＰＧＡボード等のハードウェア内で実行させることができ、また、魚眼画像の補正装置がＰＣ等の内部に構成去れる場合、プログラムにより構成し、ＰＣが備えるＣＰＵに実行させることができ、また、それらのプログラムは、ＦＤ、ＣＤＲＯＭ、ＤＶＤ等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。
【００６９】
前述した本発明の実施形態は、魚眼画像を平面画像に補正する際に、魚眼画像のラスタースキャン順に補正を行い、ライン単位で魚眼画像の画素の画素データを入力画像フレームメモリからバッファすることにより、同一のデータを何度も入力画像フレームメモリから読み出す必要をなくすことができる。また、本発明の実施形態は、魚眼画像のラスタースキャン順に処理を行うものであるため、補正に必要となる画素を予め推定することが可能となり、補正処理を行う前に必要となる画素を用意しておくことができるので、処理が滞ることがない。また、本発明の実施形態は、平面画像に補正した画素をキャッシュメモリに蓄積してから、アドレスが連続する数画素を一度に出力画像フレームメモリへ書き込むこととしているので、メモリアクセス回数を少なくすることができる。
【００７０】
前述から判るように本発明の実施形態によれば、魚眼画像から平面画像への補正を行う際に、魚眼画像を格納しているメモリに対するメモリアクセスに要する時間を削減することができ、魚眼画像から平面画像への補正にかかる時間を短縮することができる。
【符号の説明】
【００７１】
１  魚眼画像
２  平面画像
３  入力座標順補正データ
４  補正装置
４１  入力画像フレームメモリ
４２  ラインメモリ
４３  補正処理部
４４  キャッシュメモリ
４５  出力画像フレームメモリ
４２１  補正情報メモリ
４３１  画素バッファ
４３２  制御部
４３３  補正演算部
【図４】
2014035589.tif 000003
【図８】
2014035589.tif 000004
【図９】
2014035589.tif 000005
【図１】
2014035589.tif 000006
【図２】
2014035589.tif 000007
【図３】
2014035589.tif 000008
【図５】
2014035589.tif 000009
【図６】
2014035589.tif 000010
【図７】
2014035589.tif 000011