(57)【特許請求の範囲】
【請求項１】
画像を幾何学的に処理する幾何学的処理を実行する画像処理装置（１）であって、
画像の各画素の位置を幾何学的に補正するための小数部を記憶する第１記憶部（６）と、
前記画像の所定画素の位置を幾何学的に補正するための補正用の整数部の初期値を記憶する第２記憶部（７）と、
前記第２記憶部に記憶される前記所定画素の補正用の整数部と、補正対象画素に対応した前記第１記憶部の第１小数部、及び、前記補正対象画素の周辺画素に対応する前記第１記憶部の第２小数部、間の比較部による比較結果と、に基づいて前記補正対象画素に対応した補正用の整数部を更新する処理部（５）と、
を備える画像処理装置。
【請求項２】
前記処理部は、前記補正対象画素の小数部の値、前記補正対象画素の前及び後の隣接画素の小数部の値、並びに、２つ前又は２つ後の画素の小数部の値、の間の前記比較部による比較結果に基づいて前記補正用の整数部を更新する請求項１記載の画像処理装置。
【請求項３】
前記処理部は、前記補正対象画素の小数部、前記補正対象画素の前及び後の隣接画素の小数部の間の比較部による比較結果に基づいて前記補正用の整数部を更新する請求項１記載の画像処理装置。
【請求項４】
前記整数部が桁上がり／桁下がり処理される前記小数部の範囲が予め定められるものであり、
前記処理部は、前記補正対象画素の小数部が前記範囲に存在することを条件として前記整数部の桁上がり／桁下がり処理することで前記補正用の整数部を更新する請求項１から３の何れか一項に記載の画像処理装置。
【請求項５】
前記処理部は、前記比較部による比較結果として、前記画素の小数部の値と当該画素の前の画素の小数部の値とが等しいときには、この比較結果を破棄し、次回の前記比較部による比較結果として、前記画素の前の小数部の値と前記画素の後の画素の小数部の値とを比較させる請求項１から４の何れか一項に記載の画像処理装置。
【請求項６】
前記処理部は、その処理内容についてＣＰＵ（９）が実行する専用の命令セットとして組み込まれる請求項１から５の何れか一項に記載の画像処理装置。
【請求項７】
前記画像として、ステレオ画像を対象とする請求項１から６の何れか一項に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関する。
【背景技術】
【０００２】
従来、例えばステレオカメラを用いて、物体までの距離を測量する方法が開発されている。また近年、車両にステレオカメラを搭載し、当該カメラの画像認識技術を駆使して車両事故の防止、自動運転化する試みがなされている。このステレオカメラは、物体までの距離を複数画像間における対応した画素の視差に基づいて測量する。しかし撮像画像はレンズ歪みの影響から画像中心から離れるに従って歪み、さらに複数カメラの相対回転量、高さずれなどの影響があり、画像処理及び認識処理の際に幾何学的な補正処理を行わなければならない。
【０００３】
幾何学的な補正処理は、各座標の補正前後におけるＸ，Ｙ方向のずれ量について、レンズ歪み、カメラの回転、変位の関数としてモデル化することで計算可能となる。しかし、フレームごとに補正値を計算すると計算コストが大きくなる。このため、カメラを固定して使用するときには、その座標ごとにその補正値をテーブル（ＬＵＴ）に保存して補正する方法が一般的である（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２７７５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
背景技術欄に挙げた技術を採用する場合、整数部の補正値を参照して座標の整数部を補正し、小数部のずれについて隣接画素を参照しバイリニア法で補間する方法を採用することが多い。このとき例えば特許文献１の技術を採用すると、補正値は整数部と小数部に分けてそれぞれ必要になる。また、補正値はＸ方向、Ｙ方向毎にそれぞれ必要とし、例えばステレオ画像の場合にはさらに２画像（例えば左右個別に）必要とする。このため、正確な補正を行うためには、１画像毎に当該１画像の画素数を超える補正値を保持しなければならず、ＬＵＴとしては１画像毎に最大で画像数枚分の情報量を保持しなければならず、莫大な記憶容量を必要としてしまう。しかも画像処理時には、この莫大な記憶容量を有する記憶部へのアクセスを要するため、必要な処理速度を達成できなくなってしまう虞がある。
【０００６】
本発明は、上記事情に鑑みてなされたもので、補正値の記憶容量を極力抑制して高速に処理でき、極力高精度に補正できるようにした画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
請求項１記載の発明は、画像を幾何学的処理する画像処理装置を対象としている。上記目的を達成するために、第１記憶部が画像の各画素の位置を幾何学的に補正するための小数部を記憶し、第２記憶部が画像の所定画素の位置を幾何学的に補正するための補正用の整数部の初期値を記憶する。処理部は、第２記憶部に記憶される所定画素の補正用の整数部と、補正対象画素に対応する第１記憶部の第１小数部、及び、補正対象画素の周辺画素に対応する第１記憶部の第２小数部、間の比較部による比較結果と、に基づいて補正対象画素に対応した補正用の整数部を更新する。
【０００８】
この請求項１に係る発明によれば、第２記憶部は所定画素の位置を幾何学的に補正するための補正用の整数部の初期値を記憶するため、画像領域の全画素に対応した整数部を記憶する必要がなくなり補正値の記憶容量を抑制できる。しかも第２記憶部には所定画素の初期値へのアクセスで済むため高速に処理できる。また、所定画素の補正用の整数部と第１小数部及び第２小数部間の比較結果とに基づいて各画素の補正用の整数部を順次更新できるため極力高精度に補正できる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態において画像処理装置の電気的構成を概略的に示すブロック図
【図２】ステレオカメラの原理を概略的に説明する図
【図３】ＣＰＵの内部処理形態の説明図
【図４】全体の画像処理内容を概略的に示すフローチャート
【図５】座標の位置補正処理の態様を機能的に表すブロック図
【図６】整数部補正値算出部のハードウェア構成例を概略的に表す図
【図７】整数部補正値算出部の処理の流れを概略的に説明するフローチャート
【図８】小数部の値の判定基準と整数部の加算値の関係を示す図
【図９】補正値の小数部の値の画素毎の変化とその大小比較結果の一例を示す図（その１）
【図１０】補正値の小数部の値の画素毎の変化とその大小比較結果の一例を示す図（その２）
【図１１】補正値の小数部の値の画素毎の変化とその大小比較結果の一例を示す図（その３）
【図１２】第２実施形態における整数部補正値算出部のハードウェア構成例を概略的に表す図
【図１３】整数部補正値算出部の処理動作の流れを概略的に説明するフローチャート
【図１４】小数部の値の判定基準と整数部の加算値との関係を示す図
【図１５】補正値の小数部の値の画素毎の変化とその大小比較結果の一例を示す図（その４）
【図１６】第３実施形態における整数部補正値算出部の処理動作の流れを概略的に説明するフローチャート
【図１７】小数部の値の判定基準と整数部の加算値との関係を示す図
【図１８】補正値の小数部の値の画素毎の変化とその大小比較結果の一例を示す図（その５）
【図１９】補正値の小数部の値の画素毎の変化とその大小比較結果の一例を示す図（その６）
【図２０】補正値の小数部の値の画素毎の変化とその大小比較結果の一例を示す図（その７）
【図２１】第４実施形態における補正値の小数部の値の画素毎の変化とその大小比較結果の実施例を示す図（その８）
【発明を実施するための形態】
【００１０】
以下、画像処理装置の幾つかの実施形態について図面を参照しながら説明する。以下に説明する各実施形態において、同一又は類似の動作を行う構成については、同一又は類似の符号を付して必要に応じて説明を省略する。
【００１１】
（第１実施形態）
図１〜図１１は、第１実施形態の説明図を示す。図１に示すように、画像処理装置１は、第１カメラ２および第２カメラ３（例えば左カメラ２及び右カメラ３）によるステレオカメラ４を用いた距離センサとして構成される。この画像処理装置１は、ステレオカメラ４によりステレオ画像を取得し、ステレオカメラ４と対象物Ｐの表面との間の距離データを算出して出力する。画像処理装置１は、これらのステレオカメラ４のステレオ画像を処理するための処理装置であり、ステレオカメラ４で撮像した例えば動画像又は静止画像を処理する装置である。この画像処理装置１は例えば車両用に構成されるものであり例えばマイクロコンピュータなど（ＤＳＰでも良い）を用いた組込みシステムにより構築されている。このため、画像処理装置１はその処理装置の性能やリソースが限られており、しかもステレオ画像を処理するため迅速な応答性能が要求される。
【００１２】
図２にステレオカメラ４の距離算出原理を示す。画像処理装置１は、第１カメラ２の画面上の画素（ピクセル）に対応した第２カメラ３の画像の画素（ピクセル）を求める。対象物Ｐと第１カメラ２の焦点との間に直線ｌ１を引き、対象物Ｐと第２カメラ３の焦点との間の直線ｌ２を引いたとき、対象物Ｐの三次元座標（ｘ，ｙ，ｚ）は、第１カメラ２の画素Ｐ１と第２カメラ３の画素Ｐ２との位置の対応関係（視差）を求めることができれば算出できる。
【００１３】
なお、第１カメラ２の画素Ｐ１と第２カメラ３の画素Ｐ２の距離が短ければ、対象物Ｐの距離が近く、第１カメラ２の画素Ｐ１と第２カメラ３の画素Ｐ２の距離が長ければ、対象物Ｐの距離が遠い。このようにして画像処理装置１は、対象物Ｐまでの距離を互いに異なる２つの画像の視差に基づいて測量する。しかし、複数のカメラ２及び３の機械的な設置位置の絶対／相対的な位置ずれを伴うため、これらのカメラ２及び３の相対回転量、高さずれを考慮し、２つの異なる画像の幾何学的処理（例えば左右画像の水平化及び等しい高さとする幾何学的処理）を要する。
【００１４】
そこで図１に示すような画像処理装置１を採用している。図１に示す画像処理装置１は、主に画像処理する処理部５、第１記憶部６、第２記憶部７などからなるメモリ８を備える。メモリ８は例えばＲＯＭ、ＲＡＭ又は／及びＥＥＰＲＯＭなどにより構成される。メモリ８には、処理部５が幾何学的な補正処理を実行するためのプログラムが格納され、これにより、メモリ８は非遷移的実体的記録媒体として構成される。メモリ８は後述するレジスタ／データメモリ８ａ及び命令メモリ８ｂなどにより構成される。処理部５は、主に画像処理を行うブロックである。第１記憶部６は、前述の幾何学的な補正を行うための補正用の整数部を記憶するためのブロックである。第２記憶部７は、前述の幾何学的な補正を行うための補正用の小数部を記憶するためのブロックであり、画像領域（Ｘ、Ｙ）のルックアップテーブル（ＬＵＴ）を用いて小数部を記憶する。第１記憶部６及び第２記憶部７は、Ｘ方向の補正量、Ｙ方向の補正量について、第１カメラ２及び第２カメラ３の各撮像画像を対象とした記憶領域を備える。
【００１５】
第１記憶部６は、画像の予め定められた所定画素について補正用の整数部を記憶する。例えば、画像の座標領域を（Ｘ、Ｙ）とすると、第１記憶部６は、座標（Ｘ、０）のＹ行分の整数部の初期値を記憶する領域である。例えば横３２０ピクセル、縦２４０ピクセルであるときには、第１記憶部６は縦２４０ピクセル分の整数部の初期値を記憶する。したがって、第１記憶部６は画像の全画素に対応する整数部の記憶領域を備えていない。これによりメモリ８の記憶領域を削減できる。これに対し、第２記憶部７は、画像の全画素に対応して幾何学的補正用の小数部を記憶する。
【００１６】
図３に組込みシステムのハードウェア構成例を示すように、画像処理装置１はマイクロコンピュータの内部にＣＰＵ９を備える。このＣＰＵ９は、第１記憶部６の記憶領域及び第２記憶部７の記憶領域をレジスタ／データメモリ８ａに備える。ＣＰＵ９は、メモリ８に予め記憶されたプログラムを実行するが、このプログラムを実行するときの命令セットが予め定められている。ＣＰＵ９は、プログラムを実行するときに命令メモリ８ｂから命令を読出し（フェッチ）、命令デコーダ／発行ユニット１１により命令コードを解析して実行ユニット１２に発行する。実行ユニット１２には、汎用命令処理と共に、後述する整数部補正値の算出処理を実行可能なハードウェアが構成されており、これにより実行ユニット１２は、命令デコーダ／発行ユニット１１から発行された命令を実行する。
【００１７】
ＣＰＵ９には専用の命令セットが予め組み込まれており、この専用の命令セットに応じて命令デコーダ／発行ユニット１１が特定の命令コードを実行ユニット１２に発行することで、実行ユニット１２は整数部補正値算出処理を実行する。実行ユニット１２が整数部補正値算出処理を実行することで、レジスタ／データメモリ８ａに記憶された小数部補正値や整数部補正値を用いて整数部補正値を更新可能になっている。命令セットには、処理部５の動作、レジスタ／データメモリ８ａ（第１記憶部６の記憶領域及び第２記憶部７の記憶領域）のアドレス指定の仕方、その他周辺のハードウェア構成の制御手順（例えば後述の図６に示すレジスタ２０〜２３、比較器２４、判定部２５、セレクタ２６、加算器２７、等）などが予め組み込まれている。すなわち、ＣＰＵ９がメモリ８から読み出した特定の命令を実行ユニット１２に実行させることで整数部補正値算出処理を実行できる。
【００１８】
図４に示すように、画像処理装置１は、第１カメラ２から一画像（例えば左画像）を入力し、第２カメラ３から他画像（例えば右画像）を入力する（Ｔ１）。処理部５は、これらの一及び他の画像のそれぞれについて、主に比較的暗い領域における輝度値を高める輝度補正を行う（Ｔ２）。そして、処理部５は、幾何学的な補正を行うことで座標の位置補正を行い（Ｔ３）、これらの画像の座標の位置補正後の座標で視差の変換を行い（Ｔ４）、識別処理を行うことで対象物Ｐの三次元位置（ｘ，ｙ，ｚ）を算出できる。
【００１９】
本実施形態では、ステップＴ３の座標の位置補正処理に特徴を備える。図５は、処理部５の処理内容（ステップＴ３の座標の位置補正処理）を機能的に表している。この図５に機能的に示すように、処理部５は、整数部補正値算出部１３、整数部補正部１４、小数部補正部１５を備え、入力画像、及び、第１記憶部６に記憶される整数部の初期値、及び、第２記憶部７に記憶される小数部の補正値、を入力し、出力画像を出力する。
【００２０】
整数部補正値算出部１３は、前述した実行ユニット１２の一部を構成するブロックであり、第１記憶部６から整数部の初期値を入力し、第２記憶部７から小数部の補正値を入力して整数部の補正値を算出する。整数部補正部１４は、整数部補正値算出部１３により算出された整数部の補正値を用いて入力画像中の補正対象画素の整数部を補正する。小数部補正部１５は、補正対象画素の補正後の整数部と、第２記憶部７に記憶された小数部の補正値を用いて小数部を補正する。この結果、幾何学的な位置ずれに対応した補正値を正確に算出できる。これらの処理が画素毎に行われた後に画像を出力できる。
【００２１】
以下、図６を参照し、整数部補正値算出部１３のハードウェア構成例を説明する。整数部補正値算出部１３は、レジスタ２０〜２３、比較器２４、判定部２５、セレクタ２６、加算器２７を接続して構成され、処理部５（ＣＰＵ９）の制御に応じてメモリ８から各画素の補正用の値を入力し、第１記憶部６に記憶されている整数部の補正値を更新する。レジスタ２０〜２３は、それぞれ、整数部の値を記憶するためのレジスタ２０、小数部の値を記憶するためのレジスタ２１、レジスタ２１の記憶内容を転送可能となるレジスタ２２、比較器２４の比較結果を記憶するレジスタ２３、としての機能を備えており、これらの役割の詳細を図６に図示している。メモリ８の第１記憶部６の内容はレジスタ２０に転送可能に構成されており、第２記憶部７の内容はレジスタ２１に転送可能に構成されている。またレジスタ２１の保持値はレジスタ２２に転送可能に構成されている。第２記憶部７に記憶される小数部の値は、処理部５による制御に応じてレジスタ２１、２２に順次転送される。レジスタ２２が例えば補正対象画素（Ｘ，Ｙ）の小数部の値を保持するときには、レジスタ２１は補正対象画素（Ｘ，Ｙ）の周辺画素となる次画素（Ｘ＋１，Ｙ）の小数部の値を保持する。
【００２２】
比較器２４は、これらのレジスタ２１及び２２の保持値を比較し、この比較結果の保持レジスタ２３に記憶させる。判定部２５は、比較器２４の比較結果、及び、この比較器２４の比較結果の保持レジスタ２３の値に応じて、整数部の桁上がり／桁下がりを判定し、この判定結果をセレクタ２６に出力する。セレクタ２６は、判定部２５の判定結果に応じて、桁上がり／桁下がりなし（０）、桁上がり（＋１）、桁下がり（−１）の選択値を加算器２７に出力する。
【００２３】
レジスタ２０には補正対象画素（Ｘ，Ｙ）の整数部が転送されるが、加算器２７はこのレジスタ２０の保持値とセレクタ２６の選択値とを加算して補正後の整数部としてレジスタ２０に記憶させる。レジスタ２０の値は整数部補正部１４に転送可能になっており、整数部補正部１４がこのレジスタ２０の保持値を利用できる。また、レジスタ２２に保持される小数部は、小数部補正部１５に転送可能になっており、小数部補正部１５がこのレジスタ２２の保持値を利用できる。以下では、説明の便宜上、各レジスタ２１、２２には初期値が記憶されていることを前提として説明を行う。
【００２４】
図７に整数部補正値算出部１３の処理動作を概略的に示す。図７に示すように、処理部５は、Ｙ行目の整数部の初期値をレジスタ２０に読出す（Ｓ１）。次に、レジスタ２１の記憶値をレジスタ２２に転送した後、補正対象画素（Ｘ，Ｙ）の次画素（Ｘ＋１，Ｙ）の小数部をレジスタ２１に読出す（Ｓ２）。比較器２４は、レジスタ２１及び２２に保持された補正対象画素（Ｘ，Ｙ）の小数部とその周辺画素である次画素（Ｘ＋１，Ｙ）の小数部とを比較し（Ｓ３）、比較結果をレジスタ２３に格納する。初期状態では、比較器２４は、これらのステップＳ２、Ｓ３の処理を３回繰り返し、隣り合うＸ座標間の「Ｘ−２とＸ−１の比較」、「Ｘ−１とＸの比較」、「ＸとＸ＋１の比較」の結果をレジスタ２３に保持させるが、これらの比較結果が蓄積されると、判定部２５はステップＳ４の処理を行う。
【００２５】
判定部２５は、ステップＳ４にて、レジスタ２３に格納された比較結果を参照し、その対象画素（Ｘ，Ｙ）とその周辺画素の小数部の値の大小の比較結果が、
（Ｘ−２とＸ−１の比較、Ｘ−１とＸの比較、ＸとＸ＋１の比較）
＝（＜，＞，＜）
の関係になると判定した場合には、整数部の値を桁上がり（＋１）とするようにセレクタ２６に選択値を出力する（Ｓ４の（＜，＞，＜））。
【００２６】
また、判定部２５はレジスタ２３に格納された比較結果を参照し、その対象画素（Ｘ，Ｙ）とその周辺画素の小数部の値の大小の比較結果が、
（Ｘ−２とＸ−１の比較、Ｘ−１とＸの比較、ＸとＸ＋１の比較）
＝（＞，＜，＞）
の関係を備えると判定した場合には、整数部の値を桁下がり（−１）とするようにセレクタ２６に選択値を出力する（Ｓ４の（＞，＜，＞））。判定部２５は、これらの比較結果の条件を満たさない場合には、整数部の値の桁上がり／桁下がりなし（０）として、セレクタ２６に選択値を出力する（Ｓ４のその他）。
【００２７】
次に、処理部５が、画素のＸ座標の値を最終列と判定しなければ、座標ＸをインクリメントしてステップＳ２に戻して処理を繰り返す。このとき比較器２４は、補正対象画素を１画素ずつ順次遷移させ比較結果のレジスタ２３を順次更新させ、判定部２５は、順次、補正対象画素を入れ替えて同様に判定処理を行う。また処理部５は、画素のＸ座標の値を最終列と判定したときには、Ｙをインクリメントする（Ｓ９）と共に、座標Ｘを初期値（例えばＸ＝０）とし（Ｓ１０）、ステップＳ１に戻して処理を繰り返す。そして、整数部補正値算出部１３は、これらのステップＳ１〜Ｓ１０の処理を、Ｙ行が最終行となるまで繰り返す。この図７に示すフローチャートは、Ｘ座標を遷移させてＸ方向の補正値を算出する例を示している。整数部補正値算出部１３が幾何学的処理を行うときには、前述のＸ方向の補正値の算出処理に加えて、Ｙ座標を変更してＹ方向の補正値を算出するため、これらのステップＳ１〜Ｓ１０の処理をＹ座標について繰り返す。このようにして１画像分の処理が行われる。なお、本実施形態に示すように、ステレオカメラ４を適用した場合には、第１カメラ２及び第２カメラ３の２つの撮像画像分の処理が行われるが、この処理内容は前述と同一内容の繰り返しであるためその説明を省略する。また図８は小数部の値の判定基準と整数部の加算値の関係をまとめて示すものである。
【００２８】
図９から図１１は、補正値の小数部の値の画素毎の変化と、その大小比較結果の変化例を示している。図９から図１１において、黒点は各画素の小数部の値を離散的に示すものであり、「＜」は小数部の今回値が小数部の前回値より増加したことを示し、「＞」は小数部の今回値が小数部の前回値より減少したことを示す。ここでは、小数部の値は０〜２＾ｎ−１（ｎはビット数（例えば８、１６、３２））で変化する場合の例を示している。例えば８ビットの場合、２進数表現で「００００００００」（＝０）〜「１１１１１１１１」（＝２５５）である。
【００２９】
図９に示すように、補正用の値が単調増加するときには、整数部の値も…Ｅ、Ｅ＋１、Ｅ＋２…（但し、Ｅは所定の整数）で単調増加し、さらに隣接する画素間で桁上がりを生じていないときには小数部の値も単調増加する。また、桁上がりを生じるときには、整数部の値がインクリメント（＋１）されると共に、小数部の値が急激に減少する（２＾ｎ−１付近→０付近）。値が単調増加するときには、小数部の前回値と今回値の関係が連続する４画素間で（＜，＞，＜）の順となったときに桁上がりを生じたと見做すことができる（図９に示すＡ１部分参照）。したがって、図７に示すステップＳ４の大小比較処理において、判定部２５が（＜，＞，＜）であると判定したときに、小数部の前回値と今回値の関係が連続する４画素間で（＜，＞，＜）の順になったものと見做し、このとき桁上がりを生じたものと見做すことができる。
【００３０】
また、図１０に示すように、補正用の値が単調減少するときには、整数部の値もＥ＋２、Ｅ＋１、Ｅ…に単調減少し、さらに隣接する画素間で桁下がりを生じていないときには小数部の値も単調減少する。また、桁下がりを生じるときには整数部の値がデクリメント（−１）されると共に小数部の値が急激に増加する。値が単調減少するときには、小数部の前回値と今回値の関係が、連続する４画素間で（＞，＜，＞）の順となったときに桁下がりを生じたと見做すことができる（図１０に示すＡ２参照）。したがって、図７のステップＳ４の大小比較処理において、判定部２５が（＞，＜，＞）であると判定したときに、小数部の前回値と今回値の関係が連続する４画素間で（＞，＜，＞）の順になったと見做し、桁下がりを生じたと見做すことができる。この結果、小数部の値の大小関係を検出することで桁上がり／桁下がりを検出でき、各画素間の整数部の比較を実行しなくても良くなる。この結果、画像（Ｘ，Ｙ）の全画素分の整数部の値をメモリ８の第１記憶部６に記憶させなくても良いものとなる。
【００３１】
また、図１１に、補正用の値が隣接する画素間で徐々に大きくなって極大値を得てこの極大値から徐々に小さくなるような場合の例を示す。この図１１に示すように、桁上がりを生じるときでも（図１１のＡ３参照）、桁下がりを生じるときでも（図１１のＡ４参照）、前述と同様に小数部の値の大小関係を検出することで桁上がり／桁下がりを検出できる。
【００３２】
本実施形態によれば、処理部５は、レジスタ２０に記憶される所定画素（Ｘ，０）の補正用の整数部の値と、補正対象画素（Ｘ，Ｙ）に対応する第１記憶部６の第１小数部、及び、補正対象画素（Ｘ，Ｙ）の周辺画素（Ｘ−２，Ｙ）（Ｘ−１，Ｙ）（Ｘ，Ｙ）（Ｘ＋１，Ｙ）に対応する第１記憶部６の第２小数部間の比較結果（レジスタ２３の記憶内容）に基づいて、補正対象画素（Ｘ，Ｙ）に対応した補正用の整数部を更新する。これにより、全画素分の整数部の値をメモリ８の第１記憶部６に記憶させる必要がなくなり、整数部の記憶領域を削減でき、メモリ８の使用容量を極力抑制できる。第１記憶部６へのアクセス数も低減できるようになり高速に処理できる。また、レジスタ２０に記憶されている所定画素（Ｘ，０）の補正用の整数部の値と、レジスタ２３に記憶される第１小数部及び第２小数部間の比較結果と、に基づいて整数部の値を更新しているため極力高精度に補正できるようになる。
【００３３】
特に本実施形態に示すように、補正対象画素（Ｘ，Ｙ）の前及び後の隣接画素（Ｘ−１，Ｙ）、（Ｘ＋１，Ｙ）、並びに、２つ前の画素（Ｘ−２，Ｙ）の小数部に基づいて整数部の値を更新することが望ましい。これは、桁上がり／桁下がりの検出の正確性を向上できるためである。本形態は画像処理装置１が車両用の組込みシステムとして構築されリソース等が限られている場合に好適な形態となる。
【００３４】
（第２実施形態）
図１２から図１５は第２実施形態の追加説明図を示す。第１実施形態と同一部分には同一符号を付して説明を省略し、異なる部分を中心に説明する。第２実施形態は、整数部が桁上がり／桁下がり処理される小数部の範囲が予め定められており、小数部がその範囲内に存在することを条件として、整数部の桁上がり／桁下がり処理を行って整数部を更新する形態を示す。
【００３５】
図１２は図６に代えて示す構成であるが、整数部補正値算出部１１３は、第１実施形態に示した整数部補正値算出部１３の構成に加えて、範囲設定レジスタ２８、比較器２９、をさらに備えている。範囲設定レジスタ２８は、整数部の桁上がり／桁下がり処理が行われる小数部の範囲を予め定めるレジスタであり、その最小値ＭＩＮ及び最大値ＭＡＸを保持する。最小値ＭＩＮは、桁上がり処理が行われるときの補正対象画素（Ｘ，Ｙ）の小数部の値の上限度を規定し、最大値ＭＡＸは、桁下がり処理が行われるときの補正対象画素（Ｘ，Ｙ）の小数部の値の下限度を規定する。
【００３６】
比較器２９は、レジスタ２２の保持値と、範囲設定レジスタ２８の最大値ＭＡＸおよび最小値ＭＩＮの保持値とを入力し、レジスタ２２に記憶されている補正対象画素（Ｘ，Ｙ）の小数部の値が、これらの最大値ＭＡＸと最小値ＭＩＮとの間に存在しているか、又は、最大値ＭＡＸより高い又は最小値ＭＩＮより低いか比較し、この比較結果を判定部２５に出力する。
【００３７】
図１３は図７に代わるフローチャートであるが、判定部２５は、第１実施形態と同様に、比較器２４の比較結果を保持するレジスタ２３の値と、比較器２４の比較結果とに基づいて、桁上がり／桁下がりなし（０）、桁上がり（＋１）、桁下がり（−１）の何れであるか、を判定する（図１３のＳ４）。本実施形態では、判定部２５は、この判定条件に加えて、補正対象画素（Ｘ，Ｙ）の小数部の値が最小値ＭＩＮより低いことを条件として（図１３のＳ５ａの「＜ＭＩＮ」）、桁上がりを許可して整数部の値をインクリメント（＋１）する（図１３のＳ５ｂ）ようにセレクタ２６に指示する。また、判定部２５は補正対象画素（Ｘ，Ｙ）の小数部の値が最大値ＭＡＸより高いことを条件として（図１３のＳ６ａの「＞ＭＡＸ」）、桁下がりを許可して整数部の値をデクリメント（−１）する（図１３のＳ６ｂ）ようにセレクタ２６に指示する。
【００３８】
補正対象画素（Ｘ，Ｙ）の小数部の値が、最大値ＭＡＸと最小値ＭＩＮとの間の範囲に存在していれば、たとえステップＳ４の大小比較結果の関係（＜，＞，＜）又は（＞，＜，＞）を満たしたとしても桁上がり／桁下がりを許可しない（図１３のＳ５ａ、Ｓ６ａでその他）。その他の動作は前述実施形態と同様であるため、その説明を省略する。なお、図１４は小数部の値の判定基準と整数部の加算値の関係をまとめて示すものである。
【００３９】
図１５は、画素毎の補正値の小数部の値の変化と、その大小比較結果の例を示す。この図１５の例では、小数部の値が、中央値付近（十進数で０．５付近（例えば０．１〜０．９、０．２〜０．８、０．３〜０．７、又は、０．４〜０．６等））で、例えばノイズの影響などにより細かく変動し、この影響で小数部の値が隣接する画素間で上下変動する場合を含めて記載している。
【００４０】
本実施形態において、値の桁上がりを生じる条件としては、大小比較結果が（＜，＞，＜）を満たしており、且つ、補正対象画素（Ｘ，Ｙ）の小数部の値が最小値ＭＩＮより小さいこととしている。この条件を満たしたときには、処理部５は、整数部の値をインクリメント（＋１）させる（図１５のＡ５参照）。
【００４１】
したがって、小数部の値が中央値付近で隣接する画素間で上下変動する場合、たとえ大小比較結果が隣接する４画素間で（＜，＞，＜）の条件を満たしたとしても、補正対象画素（Ｘ，Ｙ）の小数部の値が最大値ＭＡＸと最小値ＭＩＮとの間に入ることになるため、桁上がりを許可しない（図１５のＢ１、Ｂ３参照）。
【００４２】
また、図１５に示すように、値の桁下がりを生じさせる条件としては、大小比較結果が（＞，＜，＞）を満たしており、且つ、補正対象画素（Ｘ，Ｙ）の小数部の値が最大値ＭＡＸより大きいこととしている。この条件を満たしたときには、処理部５は、整数部の値をデクリメント（−１）させる（図１５のＡ６参照）。
【００４３】
したがって、小数部の値が中央値付近において隣接する画素間で上下変動する場合には、たとえ大小比較結果が隣接する４画素間で（＞，＜，＞）の条件を満たしたとしても、補正対象画素（Ｘ，Ｙ）の小数部の値が最大値ＭＡＸと最小値ＭＩＮとの間に入ることになるため、桁下がりを許可しない（図１５のＢ２参照）。このようにして、小数部の値が中央値付近（十進数で０．５付近）であるときには、整数部の値の桁上がり／桁下がりを回避できる。
【００４４】
本実施形態によれば、処理部５は、補正対象画素（Ｘ，Ｙ）の小数部の値の桁上がり許可範囲が予め定められた最小値ＭＩＮを下回る範囲に存在することを条件として、整数部の値を桁上がり処理する。この結果、例えば隣接する画素間で小数部の値が中央値付近にて上下変動する場合には桁上がり処理を実行することがなくなり、整数部の値の誤った桁上がり処理を回避できる。
【００４５】
また、処理部５は、補正対象画素（Ｘ，Ｙ）の小数部の値の桁下がり許可範囲が予め定められた最大値ＭＡＸを上回る範囲に存在することを条件として、整数部の値を桁下がり処理する。この結果、例えば隣接する画素間で小数部の値が中央値付近にて上下変動する場合には桁下がり処理を実行することがなくなり、整数部の値の誤った桁下がり処理を回避できる。
【００４６】
（第３実施形態）
図１６から図２０は第３実施形態の追加説明図を示す。第１又は第２実施形態と同一部分には同一符号を付して説明を省略し、異なる部分を中心に説明する。第３実施形態では、処理部は、補正対象画素の小数部、補正対象画素の前及び後の隣接画素の小数部に基づいて補正用の整数部を更新する形態を示す。また、整数部が桁上がり／桁下がり処理される小数部の範囲が予め定められており、小数部がその範囲内に存在することを条件として整数部の桁上がり／桁下がり処理を行って整数部を更新する形態を示す。
【００４７】
第１及び第２実施形態では、互いに隣接する４画素の小数部の値の大小比較結果に基づいて整数部の値を更新する形態を示したが、第３実施形態では、互いに隣接する３画素の小数部の値の大小比較結果に基づいて整数部の値を更新する形態を示す。第３実施形態で適用するハードウェア構成は第２実施形態で説明した図１２と同様の構成であるため説明を省略する。
【００４８】
図７及び図１３に対応して動作の流れを図１６に示しており、図８及び図１４に対応して小数部の判定基準を図１７に示している。図１６及び図１７に示すように、本実施形態において、桁上がりを生じたと見做す条件としては、小数部の値の隣接する３画素間の大小比較結果が（＞，＜）を満たしており（図１６のＳ４ａで（＞，＜））、且つ、補正対象画素（Ｘ，Ｙ）の小数部の値が最小値ＭＩＮより小さいこととしている（図１６のＳ５ａで＜ＭＩＮ）。この条件を満たしたときには、処理部５は、整数部の値をインクリメント（＋１）して更新する（図１６のＳ５ｂ）。図１８は、値が単調増加する例を示しているが、この図１８ではＡ７の範囲を参照。
【００４９】
また、本実施形態において、桁下がりを生じたと見做す条件としては、小数部の値の隣接する３画素間の大小比較結果が（＜，＞）を満たしており（図１６のＳ４ａで（＜，＞））、且つ、補正対象画素（Ｘ，Ｙ）の小数部の値が最大値ＭＡＸより大きいこととしている（図１６のＳ６ａで＞ＭＡＸ）。この条件を満たしたときには、整数部の値をデクリメント（−１）する（図１６のＳ６ｂ）。図１９は、値が単調減少する例を示しているが、この図１９ではＡ８の範囲を参照。
【００５０】
図２０は、図１５に対応した例を示すものであり、小数部の値が中央値付近（十進数で０．５付近（例えば０．１〜０．９、０．２〜０．８、０．３〜０．７、又は、０．４〜０．６等））となるときに、隣接する複数の画素間で小数部の値が上下変動する場合の例を示している。この図２０に示すように、隣接する画素間において小数部の値が中央値付近で上下変動する場合には、たとえ大小比較結果が隣接する３画素間で条件（＞，＜）を満たしたとしても、補正対象画素（Ｘ，Ｙ）の小数部の値が最大値ＭＡＸと最小値ＭＩＮとの間に入ることになり桁上がりを許可しない（図２０のＢ５、Ｂ７参照）。
【００５１】
また、小数部の値が中央値付近で上下変動するときには、たとえ大小比較結果が隣接する３画素間で条件（＜，＞）を満たしたとしても、補正対象画素（Ｘ，Ｙ）の小数部の値が最大値ＭＡＸと最小値ＭＩＮとの間に入ることになり桁下がりを許可しない（図２０のＢ４、Ｂ６、Ｂ８参照）。このようにして、小数部の値が中央値付近であるときには、整数部の値の桁上がり／桁下がりを回避できる。
【００５２】
以上説明したように、本実施形態においても前述実施形態と同様の作用効果を奏するものである。
（第４実施形態）
図２１は第４実施形態の追加説明図を示す。第１から第３実施形態と同一部分には同一符号を付して説明を省略し、異なる部分を中心に説明する。第４実施形態では、画素の小数部の値と当該画素の前の画素の小数部の値とが等しいときには、この比較結果を破棄し、画素の前の小数部の値と画素の後の画素の小数部の値とを比較する形態を示す。
【００５３】
小数部の値は、前述した次数ｎを例えば３２ビット、６４ビットなどの比較的大きいビット数で量子化できれば、隣接する画素間の小数部の値が量子化誤差を考慮しても等しくなる可能性を大幅に低減できるが、例えば組込みシステムに適用する場合には処理能力が限られているため、小数部を比較的少ないビット数で表すことがリソースを有効に活用できることになり望ましい。
【００５４】
例えば、小数部の値を例えばｎ＝８ビット（下限値を０とし上限値を２＾ｎ−１＝２５５）と比較的少ないビット数で表現する場合、量子化誤差が大きくなるため、小数部の値が隣接する画素間で同一となる可能性が高まる。このようなとき、例えば、第１実施形態に示した例を適用すると、図２１に示すように、隣接する画素間の小数部の値が例えば桁上がり付近（値が最大値近辺）で同一となる可能性がある（図２１の部分Ａ１０参照）。このように、小数部の値が最大値付近で同一になると、処理部５は、前回の画素（Ｘ−１，Ｙ）の小数部の値と今回の画素（Ｘ，Ｙ）の小数部の値の比較器２４による比較結果を０としてレジスタ２３に記憶させることになり、その後、桁上がりを生じたとしても、例えば図７のステップＳ４の条件（隣接する４画素間で（＜，＞，＜））を満たすことができず、正常に桁上がりを検出できない虞がある。
【００５５】
このように、比較器２４が前回の画素（Ｘ−１，Ｙ）の小数部の値と、今回の画素（Ｘ，Ｙ）の小数部の値の比較結果を０としたとき、処理部５は、これらの比較器２４による比較結果をそのままレジスタ２３に記憶させることなく破棄させることが望ましい。すると、処理部５が、比較器２４によりその次の回に前回の画素（Ｘ，Ｙ）の小数部の値と今回の画素（Ｘ＋１，Ｙ）の小数部の値とを比較させたときには、実質的に前々回の画素（Ｘ−１，Ｙ）の小数部の値と今回の画素（Ｘ＋１，Ｙ）の小数部の値とを比較させることになる。この結果、その後に桁上がりを生じたときには、ステップＳ４の条件（隣接する４画素間で（＜，＞，＜））を満たすことになり、桁上がりの非検出を防止できる（図２１のＡ１１参照）。このような動作は、桁下がり付近でも同様であるが、説明を省略する。
【００５６】
本実施形態によれば、処理部５は、比較部２４の比較結果として、ある画素（Ｘ，Ｙ）の小数部の値と当該画素の前の画素（Ｘ−１，Ｙ）の小数部の値とが等しいときに、その比較部２４の比較結果を破棄し、次回の比較部２４による比較結果として、画素（Ｘ−１，Ｙ）の小数部の値と、画素（Ｘ＋１，Ｙ）の小数部の値とを比較させている。すると、一つ前の比較結果（符号）を踏襲することができ、この結果、桁上がり／桁下がりの非検出を防止でき、誤判定を回避できる。
【００５７】
本実施形態の内容は、隣接する３画素間の小数部の値の比較結果でも同様に適用することができ、第３実施形態の技術思想と組み合わせることができる。当然、本実施形態の内容は第２実施形態の技術思想と組み合わせることもできる。
【００５８】
（他の実施形態）
本発明は、前述した実施形態に限定されるものではなく、例えば、以下に示す変形又は拡張が可能である。これらの各実施形態の構成は適宜組み合わせて適用できる。
画像は動画像でも静止画像でも良い。ステレオカメラ４を適用した形態を示したが、単一のカメラを用いた形態に適用しても良い。
第２実施形態では、桁上がり許可範囲、桁下がり許可範囲を両者共に設定した形態を示したが、何れか一方に設定しても良い。補正対象画素（Ｘ，Ｙ）の前及び後の隣接画素（Ｘ−１，Ｙ）（Ｘ＋１，Ｙ）、並びに、２つ前の画素（Ｘ−２，Ｙ）の小数部に基づいて整数部を更新する形態を示したが、２つ前の画素（Ｘ−２，Ｙ）の小数部に代えて２つ後の画素（Ｘ＋２，Ｙ）の小数部を用いて整数部を更新するようにしても良い。
【００５９】
例えば、画像処理装置１（処理部５）が実行する機能の一部または全部を、実体的なメモリ８に記録されたプログラムおよびそれを実行するコンピュータ、プログラム、ハードウェア、あるいは、それらの組合せによって提供しても良い。
【符号の説明】
【００６０】
図面中、１は画像処理装置、５は処理部、６は第１記憶部、７は第２記憶部、９はＣＰＵ、を示す。
【図１】
0006365386.tif 000002
【図２】
0006365386.tif 000003
【図３】
0006365386.tif 000004
【図４】
0006365386.tif 000005
【図５】
0006365386.tif 000006
【図６】
0006365386.tif 000007
【図７】
0006365386.tif 000008
【図８】
0006365386.tif 000009
【図９】
0006365386.tif 000010
【図１０】
0006365386.tif 000011
【図１１】
0006365386.tif 000012
【図１２】
0006365386.tif 000013
【図１３】
0006365386.tif 000014
【図１４】
0006365386.tif 000015
【図１５】
0006365386.tif 000016
【図１６】
0006365386.tif 000017
【図１７】
0006365386.tif 000018
【図１８】
0006365386.tif 000019
【図１９】
0006365386.tif 000020
【図２０】
0006365386.tif 000021
【図２１】
0006365386.tif 000022