以下、図面を参照して本発明の実施形態について説明する。図1は本発明の第1の実施形態による距離画像処理装置を適用した距離測定装置1の内部構成を示す概略ブロック図である。図1に示すように第1の実施形態による距離測定装置1は、2つの撮像部21A,21B、撮像制御部22、画像処理部23、圧縮/伸長処理部24、フレームメモリ25、メディア制御部26、内部メモリ27、および表示制御部28を備える。
図2は撮像部21A,21Bの構成を示す図である。図2に示すように、撮像部21A,21Bは、レンズ10A,10B、絞り11A,11B、シャッタ12A,12B、CCD13A,13B、アナログフロントエンド(AFE)14A,14BおよびA/D変換部15A,15Bをそれぞれ備える。
レンズ10A,10Bは、被写体に焦点を合わせるためのフォーカスレンズ、ズーム機能を実現するためのズームレンズ等の複数の機能別レンズにより構成され、不図示のレンズ駆動部によりその位置が調整される。なお、本実施形態においては焦点位置は固定されているものとする。
絞り11A,11Bは、不図示の絞り駆動部により、AE処理により得られる絞り値データに基づいて絞り径の調整が行われる。なお、本実施形態においては絞り値データは固定されているものとする。
シャッタ12A,12Bはメカニカルシャッタであり、不図示のシャッタ駆動部により、AE処理により得られるシャッタスピードに応じて駆動される。なお、本実施形態においてはシャッタスピードは固定されているものとする。
CCD13A,13Bは、多数の受光素子を2次元的に配列した光電面を有しており、被写体光がこの光電面に結像して光電変換されてアナログ撮像信号が取得される。また、CCD13A,13Bの前面にはR,G,B各色のフィルタが規則的に配列されたカラーフィルタが配設されている。
AFE14A,14Bは、CCD13A,13Bから出力されるアナログ撮像信号に対して、アナログ撮像信号のノイズを除去する処理、およびアナログ撮像信号のゲインを調節する処理(以下アナログ処理とする)を施す。
A/D変換部15A,15Bは、AFE14A,14Bによりアナログ処理が施されたアナログ撮像信号をデジタル信号に変換する。なお、撮像部21A,21BのCCD13A,13Bにおいて取得され、デジタル信号に変換されることにより得られる画像データは、画素毎にR,G,Bの濃度値を持つRAWデータである。なお、撮像部21Aにより取得される画像データにより表される画像を基準画像G1、撮像部21Bにより取得される画像データにより表される画像を参照画像G2とする。
撮像制御部22は、レリーズボタン押下後に撮像の制御を行う。
なお、本実施形態においては、焦点位置、絞り値データおよびシャッタスピードは固定されているが、AF処理およびAE処理を行って、撮影の都度、焦点位置、絞り値データおよびシャッタスピードを設定するようにしてもよい。この場合、焦点位置、絞り値データおよびシャッタスピードについて基準となる値と、被写体までの距離および撮影環境の明るさに応じて異なる焦点位置、絞り値データおよびシャッタスピードを記録したテーブルを内部メモリ27に記憶しておき、AF処理およびAE処理により得られる被写体までの距離および撮影環境の明るさに応じてこのテーブルを参照して、焦点位置、絞り値データおよびシャッタスピードを設定するようにしてもよい。
画像処理部23は、撮像部21A,21Bが取得したデジタルの画像データに対して、画像データの感度分布のばらつきおよび光学系の歪みを補正する補正処理を施すとともに、2つの画像を並行化するための並行化処理を施す。さらに、並行化処理後の画像に対してホワイトバランスを調整する処理、階調補正、シャープネス補正、および色補正等の画像処理を施す。なお、画像処理部23における処理後の基準画像および参照画像についても、処理前の参照符号G1,G2を用いるものとする。
圧縮/伸長処理部24は、画像処理部23によって処理が施された基準画像G1および参照画像G2を表す画像データ対して、例えば、JPEG等の圧縮形式で圧縮処理を施し、後述するように生成された距離画像の画像データと併せて距離画像の画像ファイルを生成する。この画像ファイルは、基準画像G1、参照画像G2および距離画像の画像データを含むものとなる。また、この画像ファイルには、Exifフォーマット等に基づいて、撮影日時等の付帯情報が記述されたヘッダが付与される。
なお、画像ファイルを生成するに際し、本実施形態においては、距離画像の画像データを量子化および符号化するか否か、すなわち距離画像の変換モードのオン・オフを、撮影者が入出力部37により設定可能であるものとする。ここで、入出力部37は、各種インターフェース並びに撮影者が操作可能なスイッチおよび操作ボタン等を備えてなるものである。
フレームメモリ25は、撮像部21A,21Bが取得した基準画像G1および参照画像G2を表す画像データに対して、前述の画像処理部23が行う処理を含む各種処理を行う際に使用する作業用メモリである。
メディア制御部26は、記録メディア29にアクセスして距離画像の画像ファイルの書き込みと読み込みの制御を行う。
内部メモリ27は、距離測定装置1において設定される各種定数、およびCPU36が実行するプログラム等を記憶する。
表示制御部28は、フレームメモリ25に格納された画像データをモニタ20に表示させたり、記録メディア29に記録されている画像をモニタ20に表示させたりするためのものである。
また、距離測定装置1は、ステレオマッチング部30、距離画像生成部31、距離画像変換部32、距離画像符号化部33、距離画像逆変換部34および距離画像復号化部35を備える。
ステレオマッチング部30は、図3に示すように、基準画像G1上のある画素Paに写像される実空間上の点は、点P1,P2,P3というように点O1からの視線上に複数存在するため、実空間上の点P1 ,P2 ,P3 等の写像である直線(エピポーラ線)上に、画素Paに対応する参照画像R上の画素Pa′が存在するという事実に基づいて、基準画像G1と参照画像G2との対応点を参照画像G2上において探索する。なお、図3において点O1は基準カメラとなる撮像部21Aの視点、点O2は参照カメラとなる撮像部21Bの視点である。ここで、視点とは撮像部21A,21Bの光学系の焦点である。また、対応点の探索は、画像処理が施された基準画像G1および参照画像G2を用いてもよいが、画像処理前の並行化処理のみが施された基準画像G1および参照画像G2を用いることが好ましい。以降では、対応点の探索は画像処理前の基準画像G1および参照画像G2を用いるものとして説明する。
具体的には、ステレオマッチング部30は、対応点の探索を行う際に、あらかじめ定められた相関ウィンドウWをエピポーラ線に沿って移動し、各移動位置において基準画像G1および参照画像G2の相関ウィンドウW内の画素についての相関を算出し、参照画像G2上の相関が最大となる位置における相関ウィンドウWの中心画素を、基準画像G1上の画素Paに対応する対応点とする。なお、相関を評価するための相関評価値としては、差分絶対値和および差分2乗和の逆数等を用いることができる。この場合、相関評価値が小さいほど、相関が大きいものとなる。
図4は並行化処理後の基準画像および参照画像の位置関係を説明するための図である。図4に示すように、撮像部21A,21Bにおける基準画像G1および参照画像G2が得られる面となる画像面は、撮像部21A,21Bの光軸との交点を原点とする。また、画像面上における撮像部21A,21Bの座標系をそれぞれ(u,v)、(u′,v′)とする。ここで、並行化処理により撮像部21A,21Bの光軸は平行となるため、画像面におけるu軸およびu′軸は同一直線上において同一方向を向くこととなる。また、並行化処理により、参照画像G2上におけるエピポーラ線は、u′軸に平行なものとなるため、基準画像G1上におけるu軸も、参照画像G2のエピポーラ線の方向と一致することとなる。
ここで、撮像部21A,21Bの焦点距離をf、基線長をbとする。なお、焦点距離fおよび基線長bはキャリブレーションパラメータとしてあらかじめ算出されて内部メモリ27に記憶されている。このとき、3次元空間上における位置(X,Y,Z)は、撮像部21Aの座標系を基準とすると、下記の式(1)〜(3)により表される。
X=b・u/(u−u′) (1)
Y=b・v/(u−u′) (2)
Z=b・f/(u−u′) (3)
ここでu−u′は、撮像部21A,21Bの画像面上における投影点の横方向のずれ量(視差)である。また、式(3)より、奥行きである距離Zは視差に反比例することが分かる。なお、このようにして算出したX,Y,Zを距離値とする。また、距離値X,Yはその画素の位置を表す位置情報であり、距離値Zは距離すなわち奥行き情報である。なお、距離値X,Y,Zは基準画像G1および参照画像G2の共通する範囲においてのみ算出される。このため、後の処理を容易に行うために、距離値X,Y,Zについては、撮像部21Aの座標系から、撮像部21A,21Bそれぞれの画像面の原点の中間位置を原点とする座標系に変換することとする。以降では、座標系は撮像部21A,21Bのそれぞれの画像面の原点の中間位置を原点とするものとして説明する。
距離画像生成部31は、ステレオマッチング部30が求めた対応点を用いて、上記式(1)〜(3)により距離値X,Y,Zを算出し、算出した距離値X,Y,Zを各画像の画素値とする距離画像の画像データを生成する。なお、距離画像の各画素の距離値Zが撮像部21A,21Bから被写体までの距離を表すものとなる。
距離画像変換部32は、撮影者が距離画像を変換する変換モードをオンに設定した場合に、距離値X,Y,Zを各画素の画素値とする距離画像の画像データのデータ量を非線形処理により低減する変換処理を行う。その際に、距離値X,Y,Zを量子化する。また、距離画像符号化部33は、距離画像変換部32が変換した距離値X,Y,Zを各画素の画素値とする距離画像の画像データを符号化して、符号化された距離画像の画像データを生成する。以下、距離画像変換部32および距離画像符号化部33が行う処理について説明する。
距離画像生成部31が算出した距離値X,Y,Zは、例えば32ビットのデータとなるため、これをそのまま距離画像の画像データとしたのでは、画像ファイルのデータ量が非常に大きなものとなる。この場合、距離値X,Y,Zを32ビットから例えば8ビットに量子化することによりデータ量を低減できるが、量子化すると距離の精度が低下する。
ここで、距離画像生成部31が算出する距離値Zは、撮像部21A,21Bに近いほど精度が高い。このため、第1の実施形態においては、距離画像変換部32は、距離値Zが小さいほど、量子化する際の量子化の割り当て、すなわち量子化数を大きくする。なお、第1の実施形態においては、距離画像変換部32は、距離値Zを8ビットとなるように量子化するものとする。また、量子化するビット数は、8ビット、10ビットおよび16ビット等、入出力部37からの入力により、撮影者が所望とする値に設定できるようにしてもよい。また、距離値X,Yについても8ビットとなるように量子化するものとするが、距離値Zと同様に、10ビットおよび16ビット等、入出力部37からの入力により、撮影者が所望とする値に設定できるようにしてもよい。
図5は量子化数の割り当てを説明するための図である。なお、図5は撮像部21A,21Bを用いた撮影画角をY軸方向から見たものであり、SL1は距離測定装置1が測定可能な最短距離、SL2は距離測定装置1が測定可能な最長距離、Kは量子化数を変更する基準となる基準距離、XL1,XL2は最長距離SL2における距離画像のX軸方向の範囲を、XL1′,XL2′は基準距離Kにおける距離画像のX軸方向の範囲を示す。また、撮像部21Aの画角を実線で、撮像部21Bの画角を破線で示す。また、図示はしていないが、紙面に垂直なY方向についても最長距離SL2における距離画像のY軸方向の範囲YL1,YL2および基準距離Kにおける距離画像のY軸方向の範囲YL1′,YL2′が設定されているものとする。また、距離SL1から基準距離Kまでを範囲a、基準距離Kから距離SL2までを範囲bとする。なお、これらの値は設定値として内部メモリ27に記憶されている。また、撮影者が入力部37を用いて基準距離Kを所望とする値に設定できるようにしてもよい。
図6は第1の実施形態における距離画像生成部31が算出した距離値Zと量子化により得られる距離値Ztiとの関係を示す図である。なお、図6においてはSL1=1m、SL2=10mとしている。図6に示すように、本実施形態においては、最長距離SL2の1/2の5mを基準距離Kとし、基準距離Kの量子化値Pを8ビットのうちの200程度としている。距離画像変換部32は、この関係を使用して、範囲aにある距離値Zを量子化数Pに割り当てて量子化し、範囲bにある距離値Zを量子化数256−Pに割り当てて量子化する。これにより、距離値Zが小さいほど大きい量子化数により量子化がなされる。ここで、基準距離Kを最長距離SL2の1/2としたのは、最長距離SL2の1/2を超えると急速に距離算出の精度が劣化するためである。
なお、第1の実施形態においては、距離画像変換部32は、上記式(1)、(2)により算出した距離値X,Yについても同様に8ビットとなるように量子化する。図7は距離値Xと量子化により得られる距離値Xtiとの関係を示す図である。なお、ここでは、図5に示すZ軸を中心としてXL1=−5m、XL2=5mであるとして説明する。範囲aにおいては、距離値Xが取り得る値は−2.5m〜2.5mであることから、距離画像変換部32は、図7の関係A1に示すように−2.5m〜2.5mの値を8ビットに割り当てるように量子化する。一方、範囲bにおいては、距離値Xが取り得る値は−5m〜5mであることから、図7の関係A2に示すように−5m〜5mの値を8ビットに割り当てるように量子化する。なお、距離値Yについても距離値Xと同様に量子化する。
距離画像符号化部33は、距離画像変換部32が量子化した距離値X,Y,Zを各画素の画素値とする距離画像の画像データを符号化し、符号化された距離画像の画像データを圧縮/伸長処理部24に出力する。
なお、距離画像復号化部35は、後述するように圧縮/伸長処理部24が生成した画像ファイルに含まれる符号化された距離画像の画像データを復号化する。さらに、距離画像逆変換部34は、距離画像復号化部35により復号化された距離画像の各画素値を距離画像変換部32とは逆の変換により変換(以下逆変換とする)する。なお、距離画像復号化部35および距離画像逆変換部34が行う処理については、後述する。
CPU36は、レリーズボタンを含む入出力部37からの信号に応じて距離測定装置1の各部を制御する。
データバス38は、距離測定装置1を構成する各部およびCPU36に接続されており、距離測定装置1における各種データおよび各種情報のやり取りを行う。
次いで、第1の実施形態において行われる処理について説明する。図8は第1の実施形態において行われる処理を示すフローチャートである。なお、ここでは距離画像を圧縮する変換モードはオンに設定されているものとする。また、レリーズボタンが全押しされて撮像の指示が行われた以降の処理について説明する。また、距離画像生成部31が算出した距離値X,Y,Zについては、画素位置を特定する符号iを付与するものとする。なお、画素位置は距離画像上において2次元となるが、説明を簡単にするために1次元で示すものとする。
レリーズボタン4が全押しされることによりCPU36が処理を開始し、撮像部21A,21BがCPU36からの指示により被写体を撮像し、さらに取得した画像データに画像処理部23が、補正処理、並行化処理および画像処理を施して基準画像G1および参照画像G2を取得し、ステレオマッチング部30が対応点を探索し、距離画像生成部31が、探索した対応点に基づいて距離値Xi,Yi,Ziを算出する(ステップST1)。次いで、距離画像変換部32が内部メモリ27から設定値を読み出し(ステップST2)、さらに量子化の対象となる画素を最初の画素に設定する(i=1,ステップST3)。
そして、距離画像変換部32は、距離値Ziが基準距離K以下であるか否かを判定し(ステップST4)、ステップST4が肯定されると、図6における範囲aの関係を表す下記の式(4)により距離値Ziを量子化して、量子化された距離値Ztiを算出する(ステップST5)。さらに、距離値Xi,Yiを下記の式(5)、(6)によりそれぞれ量子化して、量子化された距離値Xti,Ytiを算出する(ステップST6)。
Zti=(Zi−SL1)×P/(K−SL1) (4)
Xti=128Xi(SL2−SL1)/XL2(K−SL1) (5)
Yti=128Yi(SL2−SL1)/YL2(K−SL1) (6)
一方、ステップST4が否定されると、距離画像変換部32は、図6における範囲bの関係を表す下記の式(7)により距離値Ziを量子化して、量子化された距離値Ztiを算出する(ステップST7)。さらに、距離値Xi,Yiを下記の式(8)、(9)によりそれぞれ量子化して、量子化された距離値Xti,Ytiを算出する(ステップST8)。
Zti=P+(Zi−K)(256−P)/(SL2−K1) (7)
Xti=128Xi/XL2 (8)
Yti=128Yi/YL2 (9)
ステップST6,ST8に続いて、距離画像変換部32は、すべての画素の距離値Xi,Yi,Ziについて量子化を終了したか否かを判定し(ステップST9)、ステップST9が否定されると量子化の対象を次の画素に設定し(i=i+1,ステップST10)、ステップST4に戻り、ステップST4以降の処理を繰り返す。
ステップST9が肯定されると、距離画像符号化部33が、量子化された距離値Xti,Yti,Ztiを各画素の画素値とする距離画像の画像データを符号化して、符号化された距離画像の画像データを生成し(ステップST11)、圧縮/伸長処理部24が、基準画像G1および参照画像G2の画像データ並びに符号化された距離画像の画像データから距離画像の画像ファイルを生成する(ステップST12)。そして、CPU36からの指示によりメディア制御部26が画像ファイルを記録メディア29に記録し(ステップST13)、処理を終了する。なお、この際、画像ファイルのヘッダには、図9に示すように、距離関連の情報として内部メモリ27から読み出した設定値、すなわちSL1,SL2,XL1,XL2,YL1,YL2,K,Pが記述される。また、変換モードのオン/オフについても記述される。なお、距離関連の情報以外の撮影日時等の情報については省略している。
このように、第1の実施形態によれば、距離値Ziが小さいほど距離値Ziの量子化数を大きくして量子化を行うようにしたものである。ここで、基準画像G1および参照画像G2から距離値を算出するに際し、距離値Ziが大きいほどその算出の精度が悪くなる。第1の実施形態によれば距離値Ziが小さいほど大きい量子化数により距離値Ziが量子化されるため、距離値Ziが比較的小さい場合における距離精度を損なうことなく、効率よく距離画像の画像ファイルのデータ量を低減することができる。
なお、上記第1の実施形態においては、距離値Ziの範囲を2つのみならず3つあるいはそれ以上に分けて、距離値Ziが小さいほど量子化数を大きくなるようにしてもよい。例えば、図6の一点鎖線に示すように2つの基準距離K11,K12を設定し、SL1〜K11、K11〜K12、K12〜SL2の3つの範囲に分けて距離値Ziの量子化数を設定するようにしてもよい。この場合、距離値Ziの範囲の区分に応じた基準距離が、距離関連の情報として画像ファイルのヘッダに記述される。
次いで、本発明の第2の実施形態について説明する。なお、本発明の第2の実施形態による距離測定装置は、本発明の第1の実施形態による距離測定装置1と同一の構成を有し、距離画像変換部32が行う処理のみが異なるため、ここでは構成についての詳細な説明は省略する。上記第1の実施形態においては、図6に示すように基準距離Kおよび基準距離Kにおける量子化値Pにより、距離値Ziが小さいほど大きい量子化数により距離値Ziを量子化しているが、第2の実施形態においては、図10に示すように距離値Ziが小さいほど量子化数が対数的に連続して小さくなるような変換テーブルLUT1を内部メモリ27に記憶しておき、この変換テーブルLUT1を用いて距離値Ziを量子化するようにした点が第1の実施形態と異なる。
次いで、第2の実施形態において行われる処理について説明する。図11は第2の実施形態において行われる処理を示すフローチャートである。まず、第1の実施形態と同様に距離画像生成部31が距離値Xi,Yi,Ziを算出する(ステップST21)。次いで、距離画像変換部32が内部メモリ27から設定値を読み出し(ステップST22)、さらに量子化の対象となる画素を最初の画素に設定する(i=1,ステップST23)。
そして、距離画像変換部32は、変換テーブルLUT1を参照して距離値Ziを量子化して、量子化された距離値Ztiを算出する(ステップST24)。そして、距離値Ziが基準距離K以下であるか否かを判定し(ステップST25)、ステップST25が肯定されると、距離値Xi,Yiを第1の実施形態と同様に式(5)、(6)によりそれぞれ量子化して、量子化された距離値Xti,Ytiを算出する(ステップST26)。
一方、ステップST25が否定されると、距離画像変換部32は、距離値Xi,Yiを式(8)、(9)によりそれぞれ量子化して、量子化された距離値Xti,Ytiを算出する(ステップST27)。
ステップST26,ST27に続いて、距離画像変換部32は、すべての画素の距離値について量子化を終了したかを判定し(ステップST28)、ステップST28が否定されると量子化の対象を次の画素に設定し(i=i+1,ステップST29)、ステップST24に戻り、ステップST24以降の処理を繰り返す。
ステップST28が肯定されると、距離画像符号化部33が、量子化された距離値Xti,Yti,Ztiを各画素の画素値とする距離画像の画像データを符号化して、符号化された距離画像の画像データを生成し(ステップST30)、圧縮/伸長処理部24が、基準画像G1および参照画像G2の画像データ並びに符号化された距離画像の画像データから距離画像の画像ファイルを生成する(ステップST31)。そして、CPU36からの指示によりメディア制御部26が画像ファイルを記録メディア29に記録し(ステップST32)、処理を終了する。
なお、この際、画像ファイルのヘッダには、図12に示すように、距離関連の情報として内部メモリ27から読み出した設定値、すなわちSL1,SL2,XL1,XL2,YL1,YL2,Kおよび変換テーブルが記述される。また、変換モードのオン/オフについても記述される。
ここで、上記第1および第2の実施形態においては、距離値Ziが基準距離Kより大きい場合、距離値Xi,Yiを8ビットに割り当てるように一律に量子化しているが、距離画像の中心に近いほど、撮像部21A,21Bのレンズの歪みやシェーディングの影響が小さくなるため、距離精度が高くなる。このため、距離値Ziが基準距離Kより大きい場合、距離値Xi,Yiを、Z軸に近いほど大きい量子化数により量子化するようにしてもよい。以下、これを第3の実施形態として説明する。
図13は第3の実施形態における距離値Xiと量子化により得られる距離値Xtiとの関係を示す図である。なお、図13においては、第1の実施形態と同様にSL1=1m、SL2=10m、K=5mとし、XL1=−5m、XL2=5mとする。範囲aにおいては、距離値Xが取り得る値はXL1/2〜XL2/2、すなわち−2.5m〜2.5mであることから、圧縮/伸長処理部24は、上記第1および第2の実施形態と同様に、図13の関係A1に示すように距離値Xiを量子化する。一方、範囲bにおいては、距離値Xが取り得る値は−5m〜5mであることから、図13の関係A3に示すように、−2.5m〜2.5mの範囲の量子化数が−5m〜−2.5mおよび2.5m〜5mの範囲の量子化数よりも大きくなるように、距離値Xiを量子化する。なお、距離値Yiについても同様に範囲aにおいては上記第1および第2の実施形態と同様に量子化し、範囲bにおいては距離値Xiの場合と同様にZ軸に近いほど大きい量子化数により量子化する。
ここで、距離値Xi,Yiを量子化するために、内部メモリ27には基準距離Kにおける量子化数を変更する量子化値±Px,±Py(図13には±Pxのみを示す)を記憶しているものとする。また、量子化数を変更する量子化値および量子化数を変更する境界については撮影者が任意に設定できるようにしてもよい。
次いで、第3の実施形態において行われる処理について説明する。図14は第3の実施形態において行われる処理を示すフローチャートである。なお、第3の実施形態における距離値Xi,Yiの量子化は、第1の実施形態におけるステップST7に続いておよび第2の実施形態におけるステップST25が否定された場合に続いて行われるため、ここでは、ステップST7以降およびステップST25が否定された以降の処理についてのみ説明する。
ステップST7に続いて、およびステップST25が否定されると、距離画像変換部32は、距離値XiについてXL1/2≦Xi≦XL2/2であるか否かを判定する(ステップST35)。ステップST35が肯定されると、図13の関係A3におけるXL1/2≦Xi≦XL2/2の間の関係を表す下記の式(10)により距離値Xiを量子化して、量子化された距離値Xtiを算出する(ステップST36)。ステップST35が否定されると、図13の関係A3におけるX<XL1/2、XL2/2<Xiの間の関係を表す下記の式(11)により距離値Xiを量子化して、量子化された距離値Xtiを算出する(ステップST36)。
Xti=128Xi/(XL2/2) (10)
Xti=Px+(Xi−XL2/2)(128−Px)/(XL2/2) (11)
ステップST36,ST37に続いて、距離画像変換部32は、距離値YiについてYL1/2≦Yi≦YL2/2であるか否かを判定する(ステップST38)。ステップST38が肯定されると、YL1/2≦Yi≦YL2/2の間の関係を表す下記の式(12)により距離値Yiを量子化して、量子化された距離値Ytiを算出する(ステップST39)。ステップST38が否定されると、Y<YL1/2、YL2/2<Yiの間の関係を表す下記の式(13)により距離値Yiを量子化して、量子化された距離値Ytiを算出する(ステップST40)。
Yti=128Yi/(YL2/2) (12)
Yti=Px+(Yi−YL2/2)(128−Px)/(YL2/2) (13)
そして、第1の実施形態におけるステップST9、第2の実施形態におけるステップST28の処理へ進む。これにより、量子化された距離値Xti,Yti,Ztiを各画素の画素値とする距離画像の画像データが符号化され、距離画像の画像ファイルが生成され、画像ファイルが記録メディア29に記録される。なお、この場合、±Pxおよび±Pyの値および量子化数を変更する境界が距離関連の情報として画像ファイルのヘッダに記述される。
ここで、撮像部21A,21Bのレンズの特性およびシェーディングの影響により、基準画像および参照画像の端部ほど距離値の算出精度が低くなる。第3の実施形態においては、光軸の中心に近いほど距離値Xi,Yiの量子化数を大きくするようにしたため、距離画像中心付近における距離精度を損なうことなく、さらに効率よく距離画像の画像ファイルのデータ量を低減することができる。
なお、上記第3の実施形態においては、量子化数を大きくする距離値Xi,Yiの範囲を、X方向およびY方向についてZ軸に関して対称となるようにしているが、これは、撮像部21A,21Bのレンズの歪みやシェーディングが対称に現れるためである。なお、量子化数を大きくする距離値Xi,Yiの範囲を、Z軸に関して非対称となるように設定してもよい。
次いで、本発明の第4の実施形態について説明する。なお、本発明の第4の実施形態による距離測定装置は、本発明の第1の実施形態による距離測定装置1と同一の構成を有し、距離画像変換部32が行う処理のみが異なるため、ここでは構成についての詳細な説明は省略する。第4の実施形態においては、距離値Ziに基づいて、対象とする被写体が存在する距離範囲を判定し、その距離範囲の距離値Ziを他の距離範囲の距離値Ziよりも大きい量子化数により量子化するようにした点が第1の実施形態と異なる。
次いで、第4の実施形態において行われる処理について説明する。図15は第4の実施形態において行われる処理を示すフローチャートである。まず、第1の実施形態と同様に距離画像生成部31が距離値Xi,Yi,Ziを算出する(ステップST41)。次いで、距離画像変換部32が、距離値Ziを横軸に、頻度を縦軸にプロットした距離ヒストグラムを作成する(ステップST42)。
図16は距離ヒストグラムH0を示す図である。図16に示すように距離ヒストグラムH0は、特定の距離範囲に被写体が存在する場合、その範囲の頻度が大きいものとなる。
次いで、距離画像変換部32は、距離ヒストグラムH0において、頻度がしきい値Th1以上に変化する距離Kaおよび頻度がしきい値Th1以下に変化する距離Kbを距離値Ziが小さい方から探索する(ステップST43)。そして、距離Kbと距離Kaとの差の10%(Kt=0.1(Kb−Ka))を距離Kaから減算するとともに距離Kbに加算して(Ka−Kt、Kb+Kt)、被写体の距離範囲を定める基準距離K1,K2をそれぞれ算出する(ステップST44)。
距離画像変換部32は、ステップST44に続いて、基準距離K1,K2の範囲内における距離値Ziの頻度Tuおよび基準距離K1,K2の範囲外における距離値Ziの頻度Tdを算出し、さらに頻度Tuと頻度Tdとの比率Sr(=Tu/Td)を算出する(ステップST45)。そして、比率Srが所定のしきい値Th2以上であるか否かを判定する(ステップST46)。ここで、比率Srがしきい値Th2以上である場合、距離値Ziは基準距離K1,K2の範囲内に多く存在することとなるが、比率Srがしきい値Th2未満である場合、距離値ZiはSL1〜SL2の間において広く分布することとなる。
このため、第4の実施形態においては、比率Srがしきい値Th2以上である場合、距離画像変換部32は、図17のモードaの関係に示すように、基準距離K1,K2の範囲内にある距離値Ziのみを8ビットに割り当てて量子化し、基準距離K1,K2の範囲外にある距離値Ziについては量子化数を割り当てない。一方、比率Srがしきい値Th2未満である場合、距離画像変換部32は、図17のモードbの関係に示すように基準距離K1,K2の範囲内にある距離値Ziの量子化数が、基準距離K1,K2の範囲外にある距離値Ziの量子化数よりも大きくなるように量子化数を割り当てる。なお、図17においては基準距離K1=4m、基準距離K2=7mとしている。
したがって、距離画像変換部32は、ステップST46が肯定されるとモードaによる量子化を行い(ステップST47)、ステップST46が否定されるとモードbによる量子化を行う(ステップST48)。
図18はモードaによる量子化の処理を示すフローチャートである。モードaによる量子化の処理の場合、距離画像変換部32は、図17のモードaの関係を表す下記の式(14)により距離値Ziを量子化して、量子化された距離値Ztiを算出する(ステップST61)。また、距離値Xi,Yiを下記の式(15)、(16)によりそれぞれ量子化して、量子化された距離値Xti,Ytiを算出する(ステップST62)。
Zti=256(Zi−K1)/(K2−K1) (14)
Xti=128Xi(SL2−SL1)/XL2(K2−SL1) (15)
Yti=128Yi(SL2−SL1)/YL2(K2−SL1) (16)
そして、距離画像変換部32は、すべての画素の距離値について量子化を終了したか否かを判定し(ステップST63)、ステップST63が否定されると量子化の対象を次の画素に設定し(i=i+1,ステップST64)、ステップST61に戻り、ステップST61以降の処理を繰り返す。ステップST63が肯定されるとモードaによる量子化の処理を終了する。
図19はモードbによる量子化の処理を示すフローチャートである。モードbによる量子化の処理の場合、距離画像変換部32は、まず、距離値Ziの範囲を判定する(ステップST71)。Zi<K1の場合、図17のモードbにおけるZi<K1の関係を表す下記の式(17)により距離値Ziを量子化して、量子化された距離値Ztiを算出する(ステップST72)。また、距離値Xi,Yiについては上記式(15)、(16)によりそれぞれ量子化して、量子化された距離値Xti,Ytiを算出する(ステップST73)。
Zti=(Zi−SL1)α (17)
なお、α=128/(SL2−SL1)である。
また、K1≦Zi≦K2の場合、距離画像変換部32は、図17のモードbにおけるK1≦Zi≦K2の関係を表す下記の式(18)により距離値Ziを量子化して、量子化された距離値Ztiを算出する(ステップST74)。また、距離値Xi,YiについてはステップST73に進み、上記式(15)、(16)によりそれぞれ量子化して、量子化された距離値Xti,Ytiを算出する。
Zti=(K1−SL1)α+(Zi−K1)β (18)
なお、β={256−(SL2−K2)α−(K1−SL1)α}/(K2−K1)である。
一方、K2<Ziの場合、距離画像変換部32は、図17のモードbにおけるK2<Ziの関係を表す下記の式(19)により距離値Ziを量子化して、量子化された距離値Ztiを算出する(ステップST75)。また、距離値Xi,Yiについては下記の式(20)、(21)によりそれぞれ量子化して、量子化された距離値Xti,Ytiを算出する(ステップST76)。
Zti=256−(SL2−Zi)α (19)
Xti=128Xi/XL2 (20)
Yti=128Yi/YL2 (21)
そして、すべての画素の距離値について量子化を終了したか否かを判定し(ステップST77)、ステップST77が否定されると量子化の対象を次の画素に設定し(i=i+1,ステップST78)、ステップST71に戻り、ステップST71以降の処理を繰り返す。ステップST78が肯定されるとモードbによる処理を終了する。
図15に戻り、ステップST47,ST48に続いて、距離画像符号化部33が、量子化された距離値Xti,Yti,Ztiを各画素の画素値とする距離画像の画像データを符号化して、符号化された距離画像の画像データを生成し(ステップST49)、圧縮/伸長処理部24が、基準画像G1および参照画像G2の画像データ並びに符号化された距離画像の画像データから距離画像の画像ファイルを生成する(ステップST50)。そして、CPU36からの指示によりメディア制御部26が画像ファイルを記録メディア29に記録し(ステップST51)、処理を終了する。なお、この際、画像ファイルのヘッダには、内部メモリ27から読み出した設定値、すなわちSL1,SL2,XL1,XL2,YL1,YL2,K1,K2およびモードa,bの種別が距離関連の情報として記述される。また、変換モードのオン/オフについても記述される。
このように、第4の実施形態においては、所定距離範囲にある距離値Ziについて、所定距離範囲外にある距離値Ziよりも大きい量子化数により量子化するようにしたものである。ここで、撮影時には対象とした被写体はある特定の距離範囲に存在することが多い。このため、所定の距離範囲にある距離値Ziの量子化数を大きくすることにより、所定距離範囲における距離精度を損なうことなく、効率よく距離画像の画像ファイルのデータ量を低減することができる。
なお、上記第4の実施形態においては、距離ヒストグラムH0を算出して基準距離K1,K2を算出しているが、撮影者が設定した基準距離K1,K2を用いて距離ヒストグラムH0を算出することなく、距離値Ziの量子化数を変更するようにしてもよい。この場合、基準距離K1,K2については、経験的に被写体が多く存在する範囲から求めるようにすればよい。また、量子化のモードa,bの設定は撮影者が行うようにすればよい。とくにモードaを設定した場合には、基準距離K1,K2の範囲においてのみ距離値Xi,Yi,Ziを算出すればよいため、演算時間を短縮することができる。
また、上記第4の実施形態において、第3の実施形態と同様に、距離値Xi,YiについてもZ軸からの距離に応じて量子化数を変更するようにしてもよい。
次いで、本発明の第5の実施形態について説明する。なお、本発明の第5の実施形態による距離測定装置は、本発明の第1の実施形態による距離測定装置1と同一の構成を有し、距離画像変換部32が行う処理のみが異なるため、ここでは構成についての詳細な説明は省略する。第5の実施形態においては、距離値Xi,Yi,Ziの量子化の方式をあらかじめ定められた複数の方式から撮影者の指示により選択し、選択された量子化の方式により距離値Xi,Yi,Ziを量子化するようにした点が第1の実施形態と異なる。
ここで、第5の実施形態における距離値Ziの量子化の方式としては、距離値Ziを量子化しない量子化オフ、図6の実線に示すように量子化数を変更して量子化を行う方式1、図6の一点鎖線に示すように量子化数を変更して量子化を行う方式2、図10に示すテーブルLUT1を用いて量子化数を変更して量子化を行う方式3、図17に示すモードaにより量子化を行う方式4、図17に示すモードbにより量子化を行う方式5、および方式4,5について、距離ヒストグラムに基づいて被写体の範囲を判定する方式6,7を選択可能とすることができる。なお、これらの7つの方式すべてを選択可能とする必要はなく、これらのうちの任意の複数種類の方式を選択可能としてもよい。
また、距離値Xi,Yiの量子化の方式としては、距離値Xi,Yiを量子化しない量子化オフ、図7に示す関係A1,A2により量子化数を変更して量子化を行う方式11および図13に示す関係A1,A3により量子化数を変更して量子化を行う方式12を選択可能とすることができる。
なお、距離値Xi,Yi,Ziの量子化方式の選択は、モニタ20に量子化方式の選択画面を表示し、撮影者が表示された方式から所望とする方式を入力部37を用いて選択することにより行うようにすればよい。
次いで、第5の実施形態において行われる処理について説明する。図20は量子化方式の選択の処理のフローチャートである。撮影者が量子化方式の選択の指示を入出力部37から行うことによりCPU36が処理を開始し、量子化方式の選択画面をモニタ20に表示する(ステップST81)。図21は量子化方式の選択画面を示す図である。図21(a)に示すようにモニタ20には、まず距離値Ziについてオフおよび方式1〜7の選択画面が表示される。撮影者は入出力部37を用いて距離値Ziについて所望とする量子化方式を選択することができる。なお、図21(a)においては方式1を選択した状態を示している。距離値Ziの量子化方式の選択後、モニタ20には図21(b)に示すように、距離値Xi,Yiの量子化方式の選択画面が表示される。撮影者は入出力部37を用いて距離値Xi,Yiについて所望とする方式を選択することができる。なお、図21(b)においては方式11を選択した状態を示している。
CPU36は、量子化方式が選択されたか否かの監視を開始し(ステップST82)、ステップST82が肯定されると、選択された量子化方式を表す情報を内部メモリ27に記憶し(ステップST83)、処理を終了する。
図22は第5の実施形態において行われる処理を示すフローチャートである。まず、第1の実施形態と同様に距離画像生成部31が距離値Xi,Yi,Ziを算出する(ステップST91)。次いで、距離画像変換部32が内部メモリ27から距離値Xi,Yi,Ziの量子化方式を読み出し(ステップST92)、量子化の対象となる画素を最初の画素に設定し(ステップST93)、読み出された量子化方式によりまず距離値Ziを量子化する(ステップST94)。続いて、距離画像変換部32は、読み出された量子化方式により距離値Xi,Yiを量子化する(ステップST95)。ステップST95に続いて、距離画像変換部32は、すべての画素の距離値Xi,Yi,Ziについて量子化を終了したか否かを判定し(ステップST96)、ステップST96が否定されると量子化の対象を次の画素に設定し(i=i+1,ステップST97)、ステップST94に戻り、ステップST94以降の処理を繰り返す。
ステップST96が肯定されると、距離画像符号化部33が、量子化された距離値Xti,Yti,Ztiを各画素の画素値とする距離画像の画像データを符号化して、符号化された距離画像の画像データを生成し(ステップST98)、圧縮/伸長処理部24が、基準画像G1および参照画像G2の画像データ並びに符号化された距離画像の画像データから距離画像の画像ファイルを生成する(ステップST99)。そして、CPU36からの指示によりメディア制御部26が画像ファイルを記録メディア29に記録し(ステップST100)、処理を終了する。なお、第5の実施形態においては、撮影者により選択された変換の方式が、距離関連の情報として画像ファイルのヘッダに記述される。
このように、第5の実施形態においては、距離値Xi,Yi,Ziについて、量子化方式を選択可能としたため、撮影者が所望とする量子化方式により距離値Xi,Yi,Ziを変換することができることとなる。
なお、上記第5の実施形態においては、すべての距離値Xi,Yi,Ziについて量子化方式を選択可能としているが、距離値Ziについてのみ量子化方式を選択可能としてもよく、距離値Xi,Yiについてのみ量子化方式を選択可能としてもよい。
ところで、上記第1から第5の実施形態において生成された画像ファイルは、距離画像復号化部35において復号化され、さらに距離画像逆変換部34において逆量子化を含む逆変換が施されて、距離画像が再生される。図23は画像ファイルの逆量子化の処理を示すフローチャートである。なお、ここでは、第1の実施形態により生成された画像ファイルは、距離画像復号化部35により復号化されており、復号化された距離値Xi,Yi,Ziが直ちにフレームメモリ25から読み出される状態にあるものとする。また、画像ファイルのヘッダには、距離関連の情報として設定値SL1,SL2,XL1,XL2,YL1,YL2,K,Pおよび変換モードのオン/オフが記述されているが、変換モードはオンと記述がなされているものとする。
距離画像逆変換部34は、復号化された画像ファイルのヘッダに記述された距離関連の情報を読み出し(ステップST101)、さらに復号化された距離値Xti,Yti,Ztiを読み出す(ステップST102)。そして、距離値Xi,Yi,Ziの算出の対象となる画素を最初の画素に設定し(i=1,ステップST103)、距離値Ztiが量子化値P以下であるか否かを判定する(ステップST104)。
ステップST104が肯定されると、距離画像逆変換部34は、距離関連の情報を用いて、図6における範囲aの逆の関係を表す下記の式(21)により距離値Ziを算出する(ステップST105)。さらに下記の式(22)、(23)により距離値Xi,Yiを算出する(ステップST106)。なお、式(21)〜(23)は、上記式(4)〜(6)をZi,Xi,Yiについて解くことにより求めることができる。
Zi=SL1+Zti(K−SL1)/P (21)
Xi=Xti(K−SL1)XL2/128(SL2−SL1) (22)
Yi=Yti(K−SL1)YL2/128(SL2−SL1) (23)
一方、ステップST104が否定されると、距離画像逆変換部34は、距離関連の情報を用いて、図6における範囲bの逆の関係を表す下記の式(24)により距離値Ziを算出する(ステップST107)。さらに下記の式(25)、(26)により距離値Xi,Yiを算出する(ステップST108)。なお、式(24)〜(26)は、上記式(7)〜(9)をZi,Xi,Yiについて解くことにより求めることができる。
Zi=(Zti−P)(SL2−K)/(256−P)+K (24)
Xi=Xti・XL2/128 (25)
Yi=Yti・YL2/128 (26)
ステップST106,ST108に続いて、距離画像逆変換部34は、すべての画素の距離値Xi,Yi,Ziを逆量子化したか否かを判定し(ステップST109)、ステップST109が否定されると逆量子化の対象を次の画素に設定し(i=i+1,ステップST110)、ステップST104に戻り、ステップST104以降の処理を繰り返す。
ステップST109が肯定されると、表示制御部28が距離値Xi,Yi,Ziを各画素の画素値とする距離画像をモニタ20に再生し(ステップST111)、処理を終了する。
なお、上記第2の実施形態により生成された画像ファイルについては、下記のようにして逆量子化を行う。図24は第2の実施形態により生成された画像ファイルの逆量子化の処理を示すフローチャートである。なお、ここでは、第2の実施形態により生成された画像ファイルは、距離画像復号化部35により復号化されており、復号化された距離値Xi,Yi,Ziが直ちにフレームメモリ25から読み出される状態にあるものとする。また、画像ファイルのヘッダには、距離関連の情報として設定値SL1,SL2,XL1,XL2,YL1,YL2,K,変換テーブルおよび変換モードのオン/オフが記述されているが、変換モードはオンと記述がなされているものとする。
距離画像逆変換部34は、復号化された画像ファイルのヘッダから変換テーブルを含む距離関連の情報を読み出し(ステップST121)、さらに復号化された距離値Xti,Yti,Ztiを読み出す(ステップST122)。そして、距離値Xi,Yi,Ziの算出の対象となる画素を最初の画素に設定し(i=1,ステップST123)、変換テーブルにより距離値Ztiから距離値Ziを算出する(ステップST124)。そして、距離値Ziが基準距離K以下であるか否かを判定する(ステップST125)。
ステップST125が肯定されると、距離画像逆変換部34は、距離関連の情報を用いて上記式(22)、(23)により距離値Xi,Yiを算出する(ステップST126)。ステップST125が否定されると、上記式(25)、(26)により距離値Xi,Yiを算出する(ステップST127)。ステップST126,ST127に続いて、距離画像逆変換部34は、すべての画素の距離値Xi,Yi,Ziを逆量子化したか否かを判定し(ステップST128)、ステップST128が否定されると再生対象を次の画素に設定し(i=i+1,ステップST129)、ステップST124に戻り、ステップST124以降の処理を繰り返す。
ステップST128が肯定されると、表示制御部28が距離値Xi,Yi,Ziを各画素の画素値とする距離画像をモニタ20に再生し(ステップST130)、処理を終了する。
なお、上記第3の実施形態により生成された画像ファイルについては、距離値Ztiが量子化数Pより大きい場合、または距離値Ziが基準距離Kより大きい場合において、−Px≦Xti≦Pxであるか否かを判定し、この判定が肯定された場合に式(10)をXiについて解いた式により距離値Xiを算出し、この判定が否定された場合に式(11)をXiについて解いた式により距離値Xiを算出すればよい。また、距離値Yiについては、−Py≦Yti≦Pyであるか否かを判定し、この判定が肯定された場合に式(12)をYiについて解いた式により距離値Yiを算出し、この判定が否定された場合に式(13)をYiについて解いた式により距離値Yiを算出すればよい。
また、上記第4の実施形態により生成された画像ファイルについては、ヘッダにモードaが記述されている場合、式(14)〜(16)をZi,Xi,Yiについて解いた式により距離値Xi,Yi,Ziを算出すればよい。また、モードbが記述されている場合、Zti<K1の場合には、上記式(17)、(15)、(16)をZi,Xi,Yiについて解いた式により距離値Xi,Yi,Ziを算出し、K1≦Zti≦K2の場合には、上記式(18)、(15)、(16)をZi,Xi,Yiについて解いた式により距離値Xi,Yi,Ziを算出し、K2<Ztiの場合には、上記式(19)〜(21)をZi,Xi,Yiについて解いた式により距離値Xi,Yi,Ziを算出すればよい。
また、上記第5の実施形態により生成された画像ファイルについては、ヘッダに記述された変換の方式に応じて、上述した逆量子化の処理を行うようにすればよい。
なお、上記各実施形態においては、距離測定装置1内において距離画像の画像ファイルを生成しているが、距離画像変換部32および距離画像符号化部33を装置1外に設け、入出力部37から基準画像G1および参照画像G2の画像データを外部の距離画像変換部32および距離画像符号化部33に出力して、距離値Xi,Yi,Ziを変換および符号化するようにしてもよい。また、距離画像逆変換部34および距離画像復号化部35を装置1外に設け、距離画像の画像ファイルを外部の距離画像逆変換部34および距離画像復号化部35に出力して、画像ファイルを復号化および逆変換するようにしてもよい。
また、上記各実施形態においては、被写体までの距離に応じて基準距離を設定してもよい。例えば、上記各実施形態おいては焦点位置を固定して撮影を行っているが、AF処理を行うようにし、AF処理により求められた焦点距離を被写体までの距離と見なして、焦点距離に応じて基準距離を設定してもよい。例えば焦点距離に応じた被写体距離値がFdの場合、図6に示す基準距離K11をFd+1.0m、基準距離K2をK11+1.0mに、図10に示す基準距離KをFd+1.0mに、図17に示す基準距離K1をFd−1.0m、基準距離K2をFd+1.0mにそれぞれ設定すればよい。
また、距離測定装置1にフラッシュ、フラッシュの被写体における反射光量を検出するセンサ、および反射光量に基づいて被写体までの距離を算出する手段を設け、これにより算出した被写体までの距離に応じて基準距離を設定するようにしてもよい。
また、距離測定装置1に対して、撮影時における撮影モードを設定できるようにした場合、撮影モードに応じて被写体までの距離を推定できる場合がある。このような場合、撮影モードに応じて基準距離を設定してもよい。例えば、撮影モードがマクロ撮影を行うためのマクロモードに設定された場合には、近距離にて被写体の撮影が行われるため、図6に示す基準距離K11を0.5mに、基準距離K12を1.0mに、図10に示す基準距離Kを1.0mに、図17に示す基準距離K1を0.5mに、基準距離K2を1.0mにそれぞれ設定すればよい。なお、撮影モードに応じた基準距離は、内部メモリ27に記憶しておけばよい。
また、上記各実施形態においては、距離測定装置1において撮像部21A,21Bにより取得した基準画像G1および参照画像G2を用いて距離画像を生成しているが、撮像部21A,21Bを距離測定装置1とは別個に設け、撮像部21A,21Bが取得した基準画像G1および参照画像G2を距離測定装置に入力し、入力された基準画像G1および参照画像G2を用いて距離画像の画像ファイルを生成するようにしてもよい。
また、上記各実施形態においては、ステレオマッチングの手法を用いて距離値Xi,Yi,Ziを算出しているが、光の反射を用いて被写体までの距離の測定(測距)を行うTOF(Time Of Flight)方式の測距方法により、距離値Xi,Yi,Ziを算出するようにしてもよい。この場合、距離測定装置1には、TOF方式により測距を行うために、赤外光等の測距光を発光する発光部、測距光の被写体による反射光を受光する撮像部、および測距光と反射光との位相差により距離値を算出する距離値算出部が設けられることとなる。なお、この場合、距離値Ziは距離値算出部により算出された距離値となり、距離値Xi,Yiは撮像部が有する撮像素子の位置により表されることとなる。
また、上記各実施形態においては、基準画像G1および参照画像G2の画像データを含む画像ファイルを生成しているが、距離画像の画像データのみを含む画像ファイルを生成してもよい。また、基準画像G1および参照画像G2を圧縮処理しているが、基準画像G1および参照画像G2の画像データを圧縮することなく画像ファイルに含めてもよい。
以上、本発明の実施形態について説明したが、コンピュータを、上記の圧縮/伸長処理部24、ステレオマッチング部30、距離画像生成部31、距離画像変換部32、距離画像符号化部33、距離画像逆変換部34および距離画像復号化部35に対応する手段として機能させ、図8,11,14,15,18〜20,22〜24に示すような処理を行わせるプログラムも、本発明の実施形態の1つである。また、そのようなプログラムを記録したコンピュータ読取り可能な記録媒体も、本発明の実施形態の1つである。