(57)【要約】      （修正有）【課題】メモリアクセスに要する時間を短縮し、魚眼画像等を平面画像に迅速に変換することが可能な画像処理装置に含まれる制御装置、制御方法、及び制御処理プログラムを提供する。【解決手段】広角レンズを用いて撮像された入力画像のデータを格納する入力画像フレームメモリと、入力画像を所定の大きさに分割した複数のブロックのうち、全ブロック数よりも少ない数のブロックのデータを格納するキャッシュメモリと、対象物を面に投影した出力画像のデータを格納する出力画像フレームメモリとを備える画像処理装置に含まれる制御装置であり、出力画像における画素に対応する入力画像における特定された画素が含まれるブロックのデータがキャッシュメモリに格納されていない場合、入力画像フレームメモリから当該ブロックのデータを取得し、キャッシュメモリに格納させ、対応するキャッシュメモリから取得し出力画像における画素データに変換する。【選択図】図１
2010176547.tif 000002
【特許請求の範囲】
【請求項１】
広角レンズ又は全方位ミラーを用いて撮像された入力画像のデータを格納するための入力画像フレームメモリと、
前記入力画像を所定の大きさに分割した複数のブロックのうち、全ブロック数よりも少ない数のブロックのデータを格納するためのキャッシュメモリと、
前記入力画像に基づき対象物を面に投影した出力画像のデータを格納するための出力画像フレームメモリと、
を備える画像処理装置に含まれる制御装置であって、
前記出力画像における一の画素に対応する、前記入力画像における画素を特定する特定処理、
前記特定された画素が含まれる前記ブロックのデータが前記キャッシュメモリに格納されていない場合に、前記入力画像フレームメモリから当該ブロックのデータを取得し当該ブロックのデータを前記キャッシュメモリに格納させる第一格納処理、
前記特定された画素のデータを前記キャッシュメモリから取得し前記出力画像における画素のデータに変換する変換処理、及び、
前記変換された画素のデータを前記出力画像フレームメモリに格納させる第二格納処理、
を前記出力画像における全ての画素に対して順次実行することを特徴とする制御装置。
【請求項２】
請求項１に記載の制御装置において、
前記特定処理は、前記出力画像における一の画素の座標に対応する、前記入力画像における画素の座標を算出することにより、前記入力画像における画素を特定するものであって、
当該入力画像における画素の座標が整数値でない場合、前記変換処理においては、当該座標の近傍に位置する複数の画素のデータを前記キャッシュメモリから取得し、当該データを用いて補間演算を行うことにより、前記出力画像における画素のデータに変換することを特徴とする制御装置。
【請求項３】
請求項１又は２に記載の制御装置において、
前記入力画像を構成する前記ブロック毎に、当該ブロックに含まれる各画素のデータが前記入力画像フレームメモリ上において１ラインに収まるように格納されることを特徴とする制御装置。
【請求項４】
請求項１乃至３の何れか一項に記載の制御装置において、
前記特定処理においては、前記出力画像を所定の大きさに分割した各ブロックをブロック単位のラスター順に着目すると共に、当該着目したブロックに含まれる各画素を画素単位のラスター順に着目し、当該着目した画素毎に前記入力画像における画素を特定することを特徴とする制御装置。
【請求項５】
請求項１乃至４の何れか一項に記載の制御装置において、
前記入力画像は、魚眼画像であることを特徴とする制御装置。
【請求項６】
広角レンズ又は全方位ミラーを用いて撮像された入力画像のデータを格納するための入力画像フレームメモリと、
前記入力画像を所定の大きさに分割した複数のブロックのうち、全ブロック数よりも少ない数のブロックのデータを格納するためのキャッシュメモリと、
前記入力画像に基づき対象物を面に投影した出力画像のデータを格納するための出力画像フレームメモリと、
を備える画像処理装置に含まれる制御方法であって、
前記出力画像における一の画素に対応する、前記入力画像における画素を特定する特定ステップ、
前記特定された画素が含まれる前記ブロックのデータが前記キャッシュメモリに格納されていない場合に、前記入力画像フレームメモリから当該ブロックのデータを取得し当該ブロックのデータを前記キャッシュメモリに格納させる第一格納ステップ、
前記特定された画素のデータを前記キャッシュメモリから取得し前記出力画像における画素のデータに変換する変換ステップ、及び、
前記変換された画素のデータを前記出力画像フレームメモリに格納させる第二格納ステップ、
を前記出力画像における全ての画素に対して順次実行することを特徴とする制御方法。
【請求項７】
コンピュータを、請求項１乃至５の何れか一項に記載の制御装置として機能させることを特徴とする制御処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
広角レンズ（例えば、魚眼レンズ）又は全方位ミラーを用いて撮像された入力画像を例えば平面に投影した出力画像に変換する画像処理装置及び方法等の技術分野に関する。
【背景技術】
【０００２】
従来から、例えば魚眼カメラにより撮像された魚眼画像を、表示用の平面画像に変換し出力する魚眼補正処理を行う装置が知られている（例えば、特許文献１）。
【０００３】
この魚眼補正処理においては、例えば魚眼カメラから入力された魚眼画像が入力画像フレームメモリに格納され、次に、出力結果として得たい画像（サイズ:m×n）の各画素が入力画像のどの位置に対応しているかが演算され、当該演算により求められた入力画像座標上に位置している画素が入力画像フレームメモリから取得され、これが出力画像フレームメモリに格納されるようになっている。この処理が出力画像の全画素に対してラスター順に繰り返し行われることで、最終的に所望の補正画像が得られる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００-２３５６４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の魚眼補正処理では、入力画像における画素を取得する際に行うメモリアクセスに要する時間は長く、システム全体のボトルネックになるという問題があった。  
【０００６】
そこで、本発明は、このような問題等に鑑みてなされたものであり、メモリアクセスに要する時間を短縮し、魚眼画像等を平面画像等に迅速に変換することが可能な画像処理装置に含まれる制御装置、制御方法、及び制御処理プログラムを提供することを課題の一つとする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、広角レンズ（例えば、魚眼レンズ）又は全方位ミラーを用いて撮像された入力画像のデータを格納するための入力画像フレームメモリと、前記入力画像を所定の大きさに分割した複数のブロックのうち、全ブロック数よりも少ない数のブロックのデータを格納するためのキャッシュメモリと、前記入力画像に基づき対象物を面（平面又は曲面）に投影した出力画像のデータを格納するための出力画像フレームメモリと、を備える画像処理装置に含まれる制御装置であって、前記出力画像における一の画素に対応する、前記入力画像における画素を特定する特定処理、前記特定された画素が含まれる前記ブロックのデータが前記キャッシュメモリに格納されていない場合に、前記入力画像フレームメモリから当該ブロックのデータを取得し当該ブロックのデータを前記キャッシュメモリに格納させる第一格納処理、前記特定された画素のデータを前記キャッシュメモリから取得し前記出力画像における画素のデータに変換する変換処理、及び、前記変換された画素のデータを前記出力画像フレームメモリに格納させる第二格納処理、を前記出力画像における全ての画素に対して順次実行することを特徴とする。
【０００８】
請求項２に記載の発明は、請求項１に記載の制御装置において、前記特定処理は、前記出力画像における一の画素の座標に対応する、前記入力画像における画素の座標を算出することにより、前記入力画像における画素を特定するものであって、当該入力画像における画素の座標が整数値でない場合、前記変換処理においては、当該座標の近傍に位置する複数の画素のデータを前記キャッシュメモリから取得し、当該データを用いて補間演算を行うことにより、前記出力画像における画素のデータに変換することを特徴とする。
【０００９】
請求項３に記載の発明は、請求項１又は２に記載の制御装置において、前記入力画像を構成する前記ブロック毎に、当該ブロックに含まれる各画素のデータが前記入力画像フレームメモリ上において１ラインに収まるように格納されることを特徴とする。
【００１０】
請求項４に記載の発明は、請求項１乃至３の何れか一項に記載の制御装置において、前記特定処理においては、前記出力画像を所定の大きさに分割した各ブロックをブロック単位のラスター順に着目すると共に、当該着目したブロックに含まれる各画素を画素単位のラスター順に着目し、当該着目した画素毎に前記入力画像における画素を特定することを特徴とする。
【００１１】
請求項５に記載の発明は、請求項１乃至４の何れか一項に記載の制御装置において、前記入力画像は、魚眼画像であることを特徴とする。
【００１２】
請求項６に記載の発明は、広角レンズ（例えば、魚眼レンズ）又は全方位ミラーを用いて撮像された入力画像のデータを格納するための入力画像フレームメモリと、前記入力画像を所定の大きさに分割した複数のブロックのうち、全ブロック数よりも少ない数のブロックのデータを格納するためのキャッシュメモリと、前記入力画像に基づき対象物を面に投影した出力画像のデータを格納するための出力画像フレームメモリと、を備える画像処理装置に含まれる制御方法であって、前記出力画像における一の画素に対応する、前記入力画像における画素を特定する特定ステップ、前記特定された画素が含まれる前記ブロックのデータが前記キャッシュメモリに格納されていない場合に、前記入力画像フレームメモリから当該ブロックのデータを取得し当該ブロックのデータを前記キャッシュメモリに格納させる第一格納ステップ、前記特定された画素のデータを前記キャッシュメモリから取得し前記出力画像における画素のデータに変換する変換ステップ、及び、前記変換された画素のデータを前記出力画像フレームメモリに格納させる第二格納ステップ、を前記出力画像における全ての画素に対して順次実行することを特徴とする。
【００１３】
請求項７に記載の制御処理プログラムの発明は、コンピュータを、請求項１乃至５の何れか一項に記載の制御装置として機能させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、入力画像を所定の大きさのブロック単位に分割し、ブロック単位でのデータアクセスを行い、読み込んだブロックのデータをキャッシュメモリに格納しておき、当該キャッシュメモリから画素のデータを取得して出力画像を生成するように構成したので、メモリアクセスに要する時間を短縮し、魚眼画像等の入力画像を平面画像等に迅速に変換することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態に係る画像処理装置の構成例を示す図である。
【図２】出力画像における一画素に対応する、入力画像における一画素を示す図である。
【図３】ブロック単位に分割された入力画像の一例を示す概念図である。
【図４】出力画像のあるラインを生成するために、入力画像フレームメモリ１３上に存在する入力画像における画素の取得の様子を示す図である。
【図５】入力画像が入力画像フレームメモリ１３に格納される際の様子を示す図である。
【図６】従来例において、出力画像における各画素に対応する、入力画像における各画素のデータの取得順序を示す図である。
【図７】本実施例において、出力画像における各画素に対応する、入力画像における各画素のデータの取得順序を示す図である。
【図８】ＬＳＩ回路１２により実行される魚眼補正処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、画像処理装置に対して本発明を適用した場合の実施の形態である。
【００１７】
［１．画像処理装置の構成及び機能概要］
先ず、本実施形態に係る画像処理装置の構成及び機能概要について、図１等を用いて説明する。
【００１８】
図１は、本実施形態に係る画像処理装置の構成例を示す図である。
【００１９】
図１に示すように、画像処理装置１は、ホストコントローラ１１と、制御装置の一例としてのＬＳＩ（Large Scale Integration）回路１２と、魚眼レンズ（広角レンズの一例）を用いて撮像された入力画像のデータを格納するための入力画像フレームメモリ（フレームバッファ）１３と、当該入力画像に基づき対象物を平面（曲面であってもよいが、本実施形態においては、平面を例にとる）に投影した出力画像のデータを格納するための出力画像フレームメモリ１４等を備えて構成されている。
【００２０】
ホストコントローラ１１は、入力画像としての魚眼画像に対する補正処理（魚眼補正処理）の切り出し位置、切り出し画像サイズ、倍率に応じた魚眼補正演算に必要な各パラメータの算出及び設定を行う。
【００２１】
ＬＳＩ回路１２は、魚眼補正演算回路１２１、入力画像フレームメモリコントローラ１２２、キャッシュメモリ１２３、画像補間回路１２４、及び出力画像フレームメモリコントローラ１２５を備えている。
【００２２】
魚眼補正演算回路１２１は、ホストコントローラ１１により設定されたパラメータを基に、出力画像（つまり、結果として得られるべき平面画像領域）における各画素に対応する、入力画像（魚眼画像）における各画素を特定するために、当該出力画像の各画素の入力画像における対応座標（X,Y）を算出する。図２は、出力画像における一画素に対応する、入力画像における一画素を示す図である。
【００２３】
例えば、魚眼画像を撮像するための魚眼レンズの仮想球面上の任意点で接する平面が定義され、当該平面上における各座標が公知の座標変換により、魚眼画像における各座標に変換されて上記対応座標（X,Y）が算出される。
【００２４】
入力画像フレームメモリコントローラ１２２は、魚眼レンズを装着したカメラモジュール等からの入力画像のデータを入力画像フレームメモリ１３に格納する。また、入力画像フレームメモリコントローラ１２２は、魚眼補正演算回路１２１により算出された対応座標（X,Y）における画素のデータ（ここでは、Ｒ（赤），Ｇ（緑），Ｂ（青）の夫々の輝度を示すデータ）を、入力画像フレームメモリ１３に格納されたフレーム画像から、キャッシュメモリ１２３を介して取得し、画像補間回路１２４に送る。
【００２５】
画像補間回路１２４は、キャッシュメモリ１２３からの画素のデータを出力画像における画素のデータに変換し、出力画像フレームメモリコントローラ１２５に送る。
【００２６】
ここで、魚眼補正演算回路１２１により算出された対応座標が整数値である場合、キャッシュメモリ１２３からの画素のデータは、そのまま、出力画像における画素のデータとされ、出力画像フレームメモリコントローラ１２５に送られる。一方、魚眼補正演算回路１２１により算出された対応座標は必ずしも整数値となるわけでは無いため、当該対応座標が整数値でない場合、画像補間回路１２４は、入力画像フレームメモリコントローラ１２２を通じて、当該対応座標の近傍に位置する複数の画素のデータをキャッシュメモリ１２３から取得し、当該データを用いて補間演算（例えば、バイリニア法やバイキュービック法などの公知の補間演算）を行うことにより、出力画像における画素のデータに変換し、当該変換したデータを出力画像フレームメモリコントローラ１２５に送る。
【００２７】
出力画像フレームメモリコントローラ１２５は、画像補間回路１２４からの画素のデータを出力画像フレームメモリ１４に格納させる。
【００２８】
以上の処理が、出力画像における全ての画素に対して順次実行、例えばラスター順に繰り返し行われることで、出力画像フレームメモリ１４上に出力画像が構築され、外部デバイス（モニター、レコーダ等）に合わせフレームデータが出力される。例えばモニター等へ出力される場合、出力画像フレームメモリコントローラ１２５は、フレームデータを２枚持ち、既に補間済みのフレームデータを垂直、水平同期信号とともに出力しながら、次フレーム画像を構築することになる。
【００２９】
［２．ＬＳＩ回路１２の機能詳細］
次に、ＬＳＩ回路１２の機能詳細について説明する。
【００３０】
（２−１. キャッシュメモリの利用方法）
先ず、キャッシュメモリ１２３の利用方法について、図３等を用いて説明する。
【００３１】
図３は、ブロック単位に分割された入力画像の一例を示す概念図である。
【００３２】
前述のように、メモリアクセスは長い時間を必要とするため、システムの高速化のためにはメモリアクセスの回数を極力減らす必要がある。メモリアクセスを効率的に行うための手段の一つに、一度のアクセスで複数のデータのやり取りを行うバースト転送機能が知られているが、魚眼補正処理の際のデータ取得においては、出力画像（平面画像）における１ライン（１行）上に並ぶ各画素に対応する、入力画像（魚眼画像）における各画素は１ライン上に並ばない（言い換えれば、連続したアドレスにはならない）ことが多く、入力画像フレームメモリ１３へのアクセス時のロウアドレス(Row Address)は頻繁に変わるため、そのままでは効果的に利用することはできない。
【００３３】
このため、本発明では、図３に示すように、入力画像を所定の大きさのブロック単位に分割し、ブロック単位（この例では、１ブロックが８×８の画素により構成）でのデータアクセスを行い、また一度読み込んだブロックのデータをキャッシュメモリ１２３に格納（登録）することでメモリアクセスに要する時間の短縮を実現する。なお、キャッシュメモリ１２３には、記憶容量の関係上、分割された入力画像の全ブロックが格納されるのではなく、当該全ブロック数よりも少ない数のブロックのデータが格納される。
【００３４】
ここで、ブロック単位でのデータアクセスに関する実施例を、図４を用いて説明する。
【００３５】
図４は、出力画像のあるラインを生成するために、入力画像フレームメモリ１３上に存在する入力画像における画素の取得の様子を示す図であり、図４(a)内の矢印の始点から終点までに位置する画素のデータが取得されるものとする。
【００３６】
先ず、入力画像フレームメモリコントローラ１２２は、魚眼補正演算回路１２１により算出された対応座標（X,Y）における最初の画素として、例えば図４(b)内の“１”と記されている画素を特定し当該画素の取得を試みる。この際、特定された目的の画素が含まれる1-2ブロック（図４(a)参照）のデータがキャッシュメモリ１２３に格納されている場合、入力画像フレームメモリコントローラ１２２は、当該キャッシュメモリ１２３から当該画素のデータを取得する。この場合、入力画像フレームメモリコントローラ１２２から入力画像フレームメモリ１３へのメモリアクセスを行わずに済むため、画素のデータ取得に要する時間を大幅に短縮できる。
【００３７】
一方、上記特定された画素が含まれる1-2ブロックのデータがキャッシュメモリ１２３に格納されていない場合、入力画像フレームメモリコントローラ１２２は、入力画像フレームメモリ１３から当該1-2ブロックのデータを取得し（読み込み）、当該ブロックのデータをキャッシュメモリ１２３に格納させた後、当該キャッシュメモリ１２３から上記特定された画素のデータを取得する。
【００３８】
最初の画素のデータが取得された後、引き続き、例えば図４(b)内に記された番号の順（２→３→４→５・・・の順に）に画素のデータを取得する必要があるが、これらの画素が含まれる1-2ブロックのデータは既にキャッシュメモリ１２３に格納されているため、メモリアクセスをせずに、キャッシュメモリ１２３からこれらの画素のデータを取得することができる。
【００３９】
取得対象となる目的の画素が1-2ブロックから2-2ブロックに、またその他のブロックに移っても、同様に対象ブロックのデータがキャッシュメモリ１２３に格納されていれば、入力画像フレームメモリコントローラ１２２は、当該キャッシュメモリ１２３から目的の画素のデータを取得し、キャッシュメモリ１２３に格納されていなければ、対象ブロック毎に、そのデータを入力画像フレームメモリ１３から読み込みキャッシュメモリ１２３に格納するという動作を繰り返す。この際、上述したように、魚眼補正演算回路１２１による演算により求められた対応座標（取得画素座標）が必ずしも整数値ではないため、必要に応じて、複数の画素のデータがキャッシュメモリ１２３から取得され、補間演算処理が行われる。また、キャッシュメモリ１２３に所定数以上のブロック（キャッシュ）が格納される場合には、現在格納されているブロックの中で一番古いブロックのデータが上書きされる。なお、格納されるブロックの個数としては、画像補間回路１２４による補間演算処理を考慮すると、４個以上が望ましい。
【００４０】
このようにブロック単位のキャッシュを利用することで、個々の画素のデータを入力画像フレームメモリ１３から取得する場合に比べ、大きくメモリアクセスの回数を減らすことができる。
【００４１】
（２−２. 入力画像フレームメモリへのデータ格納方法）
次に、入力画像フレームメモリ１３へのデータ格納方法について、図５を用いて説明する。
【００４２】
図５は、入力画像が入力画像フレームメモリ１３に格納される際の様子を示す図である。
【００４３】
上述したように、本発明では、入力画像フレームメモリ１３からブロック単位で画素のデータの読み込みを行うが、入力画像における各画素のデータをラスター順にそのまま入力画像フレームメモリ１３に格納した場合、ブロック単位のデータを入力画像フレームメモリ１３から読み込む際に、複数回のメモリアクセスが必要となってしまう。
【００４４】
そこで、本発明では、入力画像を構成するブロック毎に、当該ブロックに含まれる各画素のデータが入力画像フレームメモリ１３上において１ラインに収まるように格納されるように構成した。
【００４５】
入力画像フレームメモリコントローラ１２２は、カメラモジュール等からの入力画像を入力画像フレームメモリ１３に格納する際に、図５(a),(b)に示すように、同じブロック（例えば、0-0ブロック）に含まれる画素（例えば、(0,0), (1,0),・・・(7,0),(0,1)・・・）のデータが、図５(c),(d)に示すように、１ラインに収まるように格納する。これにより、入力画像フレームメモリコントローラ１２２は、バースト転送を利用した一度のメモリアクセスで１ブロックのデータを入力画像フレームメモリ１３から読み込みキャッシュメモリ１２３に格納することができる。
【００４６】
（２−３．入力画像フレームメモリからのデータ取得順序）
次に、入力画像フレームメモリ１３からのデータ取得順序について、図６及び図７等を用いて説明する。
【００４７】
図６及び図７は、出力画像における各画素に対応する、入力画像における各画素のデータの取得順序を示す図であり、図６は従来例、図７は本実施例を示している。
【００４８】
魚眼補正等の画像変形・変換を行う場合、図６(a)に示すように、出力画像のラスター順（矢印順）に、当該画像における各画素に対応する画素のデータを、入力画像を格納している入力画像フレームメモリ１３から読み出すことで、出力画像を得る方法が一般的である。
【００４９】
この際、図６に示すように、出力画像のあるラインとそのラインの前後に位置する数ラインに対応する入力画像上の画素は近い場所に位置することが多い。つまり、上述したように、入力画像から画素のデータを取得する際にブロック単位のキャッシュを利用する場合、あるラインとその前後数ラインに対応する画素のデータを取得する際には、同じブロックを必要とする可能性が高い（図６(b)）。
【００５０】
しかし、キャッシュとして格納（保持）できるブロック数は有限であるため、出力画像のラスター順に入力画像から画素のデータを取得する場合、あるラインで一度読み込んだブロックのデータは、そのラインの処理中に別ブロックのデータに上書きされてしまうという問題がある。
【００５１】
例えば、キャッシュメモリ１２３が格納できる最大ブロック数が３とし、図６の場合を考えると、出力画像上の(1)ラインに対応する画素のデータを取得するために、入力画像上の(1)ラインの始点から終点に沿って画素のデータを取得する時、キャッシュメモリ１２３には、入力画像におけるブロックＡ，Ｂ，Ｃという順番に画素のデータが格納されていく。そして、ブロックＤのデータが必要となった場合、ブロックＡのデータが上書きされ、ブロックＤのデータが格納される。次に、ブロックＥのデータが必要となった場合にはブロックＢのデータが上書きされ、ブロックＥのデータが格納される。
【００５２】
そして、(1)ライン上の画素のデータが全て取得され、(2)ライン上の画素のデータの取得に移った場合、再びブロックＡのデータが必要となるが、既にブロックＡのデータは上書きされており、再び入力画像フレームメモリ１３から読み込む必要があり、一度入力画像フレームメモリ１３から読み出したデータを再度読み出すという無駄が生じる。なお、本実施例では、キャッシュの更新は、その時点で一番古いキャッシュを対象としていたが、キャッシュの更新方法はこの限りではない。
【００５３】
そこで、本発明では、出力画像（つまり、結果として得られるべき出力画像領域）を所定の大きさに分割し、分割した各ブロックをブロック単位のラスター順に着目すると共に、当該着目したブロックに含まれる各画素をラスター順に着目して、当該着目した画素に対応する、入力画像における画素を特定、そのデータを取得するように構成した。
【００５４】
例えば、図７(a)に示すように、先ず、出力画像におけるブロックaが着目され、当該ブロックaに含まれる各画素がラスター順（図７(a)の矢印順）に着目されつつ、当該画素に対応する、入力画像における画素が入力画像フレームメモリ１３から取得されキャッシュメモリ１２３に格納される。
【００５５】
そして、ブロックa内の全画素に対応する画素が入力画像から取得されブロックaが終了したら、図７(a)に示すブロックb,c,d,e,・・・,lという順番で、これらのブロック内の画素に対応する画素のデータが入力画像から取得されていく。これにより、取得される画素が連続して同じブロック上に位置する確率が高まるため、結果的に、出力画像を生成するのに要するブロックのデータを読みだす回数が減少し、メモリアクセスに要する時間を短縮することができる。
【００５６】
例えば、入力画像フレームメモリコントローラ１２２は、先ず、出力画像におけるブロックaに含まれる画素に対応する画素のデータを、図７(b)に示す入力画像におけるブロックＡ及びＢから取得し、当該ブロックaに含まれる画素のデータを全て取得し終えたら、次に、出力画像におけるブロックbに含まれる画素に対応する画素のデータを入力画像におけるブロックＢ及びＣから取得する。同様にして、出力画像におけるブロックc,dに含まれる画素に対応する画素のデータが入力画像におけるブロックＣ，Ｄ，Ｅから取得される。
【００５７】
ここで、キャッシュメモリ１２３が格納できる最大ブロック数を３とすると、上述したようにブロック単位で入力画像から画素のデータを取得する方法では、同一のブロックに含まれる画素のデータを複数回読みだすことなく、出力画像の３ライン分の画素のデータを取得することができる。
【００５８】
［３．ＬＳＩ回路１２における魚眼補正処理］
次に、ＬＳＩ回路１２により実行される魚眼補正処理について、図８を用いて説明する。
【００５９】
図８は、ＬＳＩ回路１２により実行される魚眼補正処理の一例を示すフローチャートである。なお、以下の説明において、出力画像をブロック分割する際の１ブロックのサイズを(i×j)、ブロック分割した結果の横方向、縦方向のブロック数をそれぞれm+1,n+1とする。
【００６０】
図８に示す処理は、例えばホストコントローラ１１からの開始指令により開始される。
【００６１】
先ず、入力画像フレームメモリコントローラ１２２は、カメラモジュール等から入力画像のデータを取り込み、入力画像フレームメモリ１３に格納する（ステップＳ１）。この際、ブロック単位のデータが１ライン上に配置されるように、入力画像フレームメモリ１３に格納される。
【００６２】
次いで、入力画像フレームメモリコントローラ１２２は、出力画像における縦方向ブロック位置Ｙ（Ｙ＝1〜n+1までの何れかの値）を決定し（ステップＳ２）、当該出力画像における横方向ブロック位置Ｘ（Ｘ＝1〜m+1までの何れかの値）を決定する（ステップＳ３）。これにより、着目するブロックが決定される。かかるステップＳ２，Ｓ３の処理が繰り返されることで、「２−３．入力画像フレームメモリからのデータ取得順序」で述べたように、出力画像における各ブロックがブロック単位のラスター順に着目される（つまり、左端から右端方向へブロックを順次着目し右端のブロックまで到達したら、一段下の、且つ、左端のブロックに移行し、これを繰り返す）ことになる。
【００６３】
次いで、入力画像フレームメモリコントローラ１２２は、上記ステップＳ２及びＳ３の処理により着目したブロック内における縦方向座標y（y＝1〜jまでの何れかの値）を決定し（ステップＳ４）、当該ブロック内における横方向座標x（x＝1〜iまでの何れかの値）を決定する（ステップＳ５）。これにより、上記着目されたブロック内に含まれる１画素が着目される。かかるステップＳ４，Ｓ５の処理が繰り返されることで、「２−３．入力画像フレームメモリからのデータ取得順序」で述べたように、上記着目されたブロックに含まれる各画素が画素単位のラスター順に着目されることになる。
【００６４】
こうして、着目された画素の座標（x,y）等の情報は魚眼補正演算回路１２１に送られ、当該魚眼補正演算回路１２１は、当該着目された画素の座標（x,y）に対応する、入力画像における画素の対応座標（X,Y）を上述したように算出する（ステップＳ６）。これにより、上記着目された画素に対応する、入力画像における画素が特定される。
【００６５】
次いで、入力画像フレームメモリコントローラ１２２は、上記特定された、入力画像における画素が含まれるブロック（入力画像におけるブロック）のデータがキャッシュメモリ１２３に格納されているか否かを判別し（ステップＳ７）、当該ブロックのデータがキャッシュメモリ１２３に格納されていない場合には（ステップＳ７：ＮＯ）、ステップＳ８に進み、当該ブロックのデータがキャッシュメモリ１２３に格納されている場合には（ステップＳ７：ＹＥＳ）、ステップＳ１０に進む。
【００６６】
ステップＳ８では、入力画像フレームメモリコントローラ１２２は、上記特定された、入力画像における画素が含まれるブロックのデータを、入力画像フレームメモリ１３から取得して（読み込む）キャッシュメモリ１２３に格納し（ステップＳ９）、ステップＳ１０に進む。
【００６７】
ステップＳ１０では、入力画像フレームメモリコントローラ１２２は、上記特定された、入力画像における画素のデータを、キャッシュメモリ１２３から取得し、画像補間回路１２４に送る。
【００６８】
次いで、画像補間回路１２４は、上記特定された、入力画像における画素のデータを、出力画像における画素のデータに変換（ステップＳ１１）、つまり、魚眼補正演算回路１２１により算出された対応座標が整数値である場合、キャッシュメモリ１２３から取得された画素のデータは、そのまま、出力画像における画素のデータとされ、当該対応座標が整数値でない場合、上述したように補間演算処理を行い、出力画像における画素のデータを得て、出力画像フレームメモリコントローラ１２５に送る。
【００６９】
次いで、出力画像フレームメモリコントローラ１２５は、上記画素のデータを出力画像フレームメモリ１４に格納する（ステップＳ１２）。
【００７０】
以上のステップＳ２〜Ｓ１２までの処理が、図８に示すように繰り返し行われることで、最終結果としての出力画像が出力画像フレームメモリ１４上に構築される。
【００７１】
そして、出力画像フレームメモリコントローラ１２５は、出力画像フレームメモリ１４上に構築された出力画像に基づきフレームデータを作成し、これをモニター等の外部デバイスへ出力する（ステップＳ１３）。こうして、上記魚眼補正処理により得られた出力画像が例えばモニター上に表示される。
【００７２】
なお、上記図８に示す魚眼補正処理は、ＬＳＩ回路１２内に実装されるハードウェア回路により行われるものであっても良いし、ＬＳＩ回路１２内に実装されるマイクロコンピュータが所定のプログラム（ソフトウェア）を実行することにより行われるものであっても良い。
【００７３】
以上説明したように、上記実施形態によれば、入力画像を所定の大きさのブロック単位に分割し、ブロック単位でのデータアクセスを行い、読み込んだブロックのデータをキャッシュメモリ１２３に格納しておき、当該キャッシュメモリ１２３から画素のデータを取得して出力画像を生成するように構成したので、メモリアクセスに要する時間を短縮し、魚眼画像等の入力画像を平面画像に迅速に変換することができる。
【００７４】
また、出力画像を所定の大きさに分割し、分割した各ブロックをブロック単位のラスター順に着目すると共に、当該着目したブロックに含まれる各画素をラスター順に着目して、当該着目した画素に対応する、入力画像における画素のデータをキャッシュメモリ１２３から取得するように構成したので、上述した態様において、一度入力画像フレームメモリ１３から読み出したデータを再度読み出すという無駄を防止することができる。  
【００７５】
なお、上記実施形態においては、魚眼レンズを用いて撮像された魚眼画像を例にとって説明したが、この他にも、例えば、全方位ミラーを用いて撮像された画像（対象物を湾曲した面に投影した画像）に対しても、本発明を適用することができる。
【符号の説明】
【００７６】
１  画像処理装置
１１  ホストコントローラ
１２  ＬＳＩ回路
１３  入力画像フレームメモリ
１４  出力画像フレームメモリ
１２１  魚眼補正演算回路
１２２  入力画像フレームメモリコントローラ
１２３  キャッシュメモリ
１２４  画像補間回路
１２５  出力画像フレームメモリコントローラ
【図１】
2010176547.tif 000003
【図２】
2010176547.tif 000004
【図３】
2010176547.tif 000005
【図４】
2010176547.tif 000006
【図５】
2010176547.tif 000007
【図６】
2010176547.tif 000008
【図７】
2010176547.tif 000009
【図８】
2010176547.tif 000010