以下、図面を参照しつつ、本発明を実施するための最良の形態の説明を行う。
図1は、本発明の実施例に係る画像生成装置100の構成例を概略的に示すブロック図である。
画像生成装置100は、例えば、建設機械に搭載されたカメラ2が撮像した入力画像に基づいて出力画像を生成し、その出力画像を運転者に提示する装置であって、制御部1、カメラ2、入力部3、記憶部4、及び表示部5で構成される。
図2は、画像生成装置100が搭載されるショベル60の構成例を示す図であり、ショベル60は、クローラ式の下部走行体61の上に、旋回機構62を介して、上部旋回体63を旋回軸PVの周りで旋回自在に搭載している。
また、上部旋回体63は、その前方左側部にキャブ(運転室)64を備え、その前方中央部に掘削アタッチメントEを備え、その右側面、左側面、及び後面にカメラ2(右側方カメラ2R、左側方カメラ2L、後方カメラ2B)を備えている。なお、キャブ64内の運転者が視認し易い位置には表示部5が設置されている。
次に、画像生成装置100の各構成要素について説明する。
制御部1は、CPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)、NVRAM(Non-Volatile Random Access Memory)等を備えたコンピュータである。制御部1は、例えば、後述する座標対応付け手段10及び出力画像生成手段11のそれぞれに対応するプログラムをROMやNVRAMに記憶し、一時記憶領域としてRAMを利用しながら各手段に対応する処理をCPUに実行させる。
カメラ2は、ショベル60の周辺を映し出す入力画像を取得するための装置であり、例えば、キャブ64にいる運転者の死角となる領域を撮像できるよう上部旋回体63の右側面、左側面、及び後面に取り付けられる(図2参照。)。
また、カメラ2は、制御部1からの制御信号に応じて入力画像を取得し、取得した入力画像を制御部1に対して出力する。
入力部3は、操作者が画像生成装置100に対して各種情報を入力できるようにするための装置であり、例えば、タッチパネル、ボタンスイッチ、ポインティングデバイス、キーボード等である。
記憶部4は、各種情報を記憶するための装置であり、例えば、ハードディスク、光学ディスク、又は半導体メモリ等である。
表示部5は、画像情報を表示するための装置であり、例えば、建設機械のキャブ64(図2参照。)内に設置された液晶ディスプレイ又はプロジェクタ等であって、制御部1が出力する各種画像を表示する。
また、画像生成装置100は、入力画像に基づいて処理対象画像を生成し、その処理対象画像に画像変換処理を施して出力画像を生成する。そして、画像生成装置100は、この出力画像を操作者に提示することにより、操作者がショベル60と周辺障害物との位置関係や距離感を直感的に把握できるようにする。
「処理対象画像」は、入力画像に基づいて生成される画像である。また、処理対象画像は、例えば、スケール変換、アフィン変換、歪曲変換、視点変換処理等の画像変換処理の対象となる画像である。また、処理対象画像は、例えば、入力画像を所定の空間モデルに投影した後で、その空間モデルに投影された投影画像を別の二次元平面に再投影することによって得られる。空間モデルへの投影は、入力画像を画像変換処理で用いた場合にその入力画像が不自然に表示されてしまうのを防止するために行われる。具体的には、地表を上方から撮像するカメラによる入力画像であってその広い画角により水平方向の画像(例えば、空の部分である。)を含む入力画像を画像変換処理で用いた場合に、空の部分が地表にあるかのように不自然に表示されてしまうのを防止するために行われる。なお、処理対象画像は、画像変換処理を施すことなくそのまま出力画像として用いられてもよい。
「空間モデル」は、少なくとも、処理対象画像が位置する平面である処理対象画像平面以外の平面又は曲面を含む、一又は複数の平面若しくは曲面で構成される、入力画像の投影対象である。なお、処理対象画像平面以外の平面又は曲面は、例えば、処理対象画像平面に平行な平面、又は、処理対象画像平面との間で角度を形成する平面若しくは曲面である。
なお、画像生成装置100は、処理対象画像を生成することなく、その空間モデルに投影された投影画像に画像変換処理を施すことによって出力画像を生成してもよい。また、投影画像は、画像変換処理を施すことなくそのまま出力画像として用いられてもよい。
図3は、入力画像が投影される空間モデルMDの一例を示す図であり、図3(A)は、ショベル60を側方から見たときのショベル60と空間モデルMDとの間の関係を示し、図3(B)は、ショベル60を上方から見たときのショベル60と空間モデルMDとの間の関係を示す。
図3で示されるように、空間モデルMDは、略円筒形状を有し、その底面内部の平面領域R1とその側面内部の曲面領域R2とを有する。
また、図4は、空間モデルMDと処理対象画像平面との間の関係の一例を示す。図4に示すように、処理対象画像平面R3は、例えば、空間モデルMDの平面領域R1を含む平面である。なお、図4は、明確化のために、空間モデルMDを、図3で示すような略円筒形状ではなく、円筒形状で示しているが、空間モデルMDは、略円筒形状及び円筒形状の何れであってもよい。以降の図においても同様である。また、処理対象画像平面R3は、上述のように、空間モデルMDの平面領域R1を含む円形領域であってもよく、空間モデルMDの平面領域R1を含まない環状領域であってもよい。
次に、制御部1が有する各種手段について説明する。
座標対応付け手段10は、カメラ2が撮像した入力画像が位置する入力画像平面上の座標と、空間モデルMD上の座標と、処理対象画像平面R3上の座標とを対応付けるための手段である。また、座標対応付け手段10は、例えば、カメラ2に関する各種パラメータと、予め決定された、入力画像平面、空間モデルMD、及び処理対象画像平面R3の相互の位置関係とに基づいて、入力画像平面上の座標と、空間モデルMD上の座標と、処理対象画像平面R3上の座標とを対応付ける。そして、座標対応付け手段10は、それらの対応関係を記憶部4の入力画像・空間モデル対応マップ40及び空間モデル・処理対象画像対応マップ41に記憶する。カメラ2に関する各種パラメータは、カメラ2の光学中心、焦点距離、CCDサイズ、光軸方向ベクトル、カメラ水平方向ベクトル、射影方式等を含み、予め設定された値であってもよく、入力部3を介して入力される値であってもよい。
なお、座標対応付け手段10は、処理対象画像を生成しない場合には、空間モデルMD上の座標と処理対象画像平面R3上の座標との対応付け、及び、その対応関係の空間モデル・処理対象画像対応マップ41への記憶を省略する。
出力画像生成手段11は、出力画像を生成するための手段であり、例えば、処理対象画像にスケール変換、アフィン変換、又は歪曲変換を施すことによって、処理対象画像平面R3上の座標と出力画像が位置する出力画像平面上の座標とを対応付ける。そして、出力画像生成手段11は、その対応関係を記憶部4の処理対象画像・出力画像対応マップ42に記憶する。そして、出力画像生成手段11は、入力画像・空間モデル対応マップ40及び空間モデル・処理対象画像対応マップ41を参照し、出力画像における各画素の値と入力画像における各画素の値とを関連付けて出力画像を生成する。各画素の値は、例えば、輝度値、色相値、彩度値等を含む。
また、出力画像生成手段11は、仮想カメラに関する各種パラメータに基づいて、処理対象画像平面R3上の座標と出力画像平面上の座標とを対応付け、その対応関係を記憶部4の処理対象画像・出力画像対応マップ42に記憶する。そして、出力画像生成手段11は、入力画像・空間モデル対応マップ40及び空間モデル・処理対象画像対応マップ41を参照し、出力画像における各画素の値と入力画像における各画素の値とを関連付けて出力画像を生成する。仮想カメラに関する各種パラメータは、仮想カメラの光学中心、焦点距離、CCDサイズ、光軸方向ベクトル、カメラ水平方向ベクトル、射影方式等を含み、予め設定された値であってもよく、入力部3を介して入力される値であってもよい。
なお、出力画像生成手段11は、仮想カメラの概念を用いることなく、処理対象画像のスケールを変更して出力画像を生成してもよい。
また、出力画像生成手段11は、処理対象画像を生成しない場合には、施した画像変換処理に応じて空間モデルMD上の座標と出力画像平面上の座標とを対応付ける。そして、出力画像生成手段11は、入力画像・空間モデル対応マップ40を参照し、出力画像における各画素の値と入力画像における各画素の値とを関連付けて出力画像を生成する。この場合、出力画像生成手段11は、処理対象画像平面R3上の座標と出力画像平面上の座標との対応付け、及び、その対応関係の処理対象画像・出力画像対応マップ42への記憶を省略する。
次に、座標対応付け手段10及び出力画像生成手段11による具体的な処理の一例について説明する。
座標対応付け手段10は、例えば、ハミルトンの四元数を用いて、入力画像平面上の座標と空間モデル上の座標とを対応付けることができる。
図5は、入力画像平面上の座標と空間モデル上の座標との対応付けを説明するための図である。図5において、カメラ2の入力画像平面は、カメラ2の光学中心Cを原点とするUVW直交座標系における一平面として表され、空間モデルは、XYZ直交座標系における立体面として表される。
最初に、座標対応付け手段10は、XYZ座標系の原点を光学中心C(UVW座標系の原点)に並行移動させた上で、X軸をU軸に、Y軸をV軸に、Z軸を−W軸にそれぞれ一致させるようXYZ座標系を回転させる。空間モデル上の座標(XYZ座標系上の座標)を入力画像平面上の座標(UVW座標系上の座標)に変換するためである。なお、−W軸における符号「−」は、Z軸とは方向が逆であることを意味する。これは、UVW座標系がカメラ前方を+W方向とし、XYZ座標系が鉛直下方を−Z方向としていることに起因する。
なお、カメラ2が複数存在する場合、カメラ2のそれぞれが個別のUVW座標系を有する。そのため、座標対応付け手段10は、複数のUVW座標系のそれぞれに対して、XYZ座標系を並行移動させ且つ回転させる。
上述の変換は、カメラ2の光学中心CがXYZ座標系の原点となるようにXYZ座標系を並行移動させた後に、Z軸が−W軸に一致するよう回転させ、更に、X軸がU軸に一致するよう回転させることによって実現される。座標対応付け手段10は、この変換をハミルトンの四元数で記述することにより、それら二回の回転を一回の回転演算に纏めることができる。
ところで、あるベクトルAを別のベクトルBに一致させるための回転は、ベクトルAとベクトルBとが形成する面の法線を軸としてベクトルAとベクトルBとが形成する角度だけ回転させる処理に相当する。そのため、その角度をθとすると、ベクトルAとベクトルBとの内積から、角度θは、
で表される。
また、ベクトルAとベクトルBとが形成する面の法線の単位ベクトルNは、ベクトルAとベクトルBとの外積から
で表される。
なお、四元数は、i、j、kをそれぞれ虚数単位とした場合、
を満たす超複素数である。本実施例において、四元数Qは、実成分をt、純虚成分をa、b、cとして、
で表され、四元数Qの共役四元数は、
で表される。
四元数Qは、実成分tを0(ゼロ)としながら、純虚成分a、b、cで三次元ベクトル(a,b,c)を表現することができ、また、t、a、b、cの各成分により任意のベクトルを軸とした回転動作を表現することもできる。
更に、四元数Qは、連続する複数回の回転動作を統合して一回の回転動作として表現することができ、例えば、任意の点S(sx,sy,sz)を、任意の単位ベクトルC(l,m,n)を軸としながら角度θだけ回転させたときの点D(ex,ey,ez)を以下のように表現することができる。
ここで、本実施例において、Z軸を−W軸に一致させる回転を表す四元数をQzとすると、XYZ座標系におけるX軸上の点Xは、点X'に移動させられるので、点X'は、
で表される。
また、本実施例において、X軸上にある点X'と原点とを結ぶ線をU軸に一致させる回転を表す四元数をQxとすると、「Z軸を−W軸に一致させ、更に、X軸をU軸に一致させる回転」を表す四元数Rは、
で表される。
以上により、空間モデル(XYZ座標系)上の任意の座標Pを入力画像平面(UVW座標系)上の座標で表現したときの座標P'は、
で表され、四元数Rがカメラ2のそれぞれで不変であることから、座標対応付け手段10は、以後、この演算を実行するだけで空間モデル(XYZ座標系)上の座標を入力画像平面(UVW座標系)上の座標に変換することができる。
空間モデル(XYZ座標系)上の座標を入力画像平面(UVW座標系)上の座標に変換した後、座標対応付け手段10は、カメラ2の光学中心C(UVW座標系上の座標)と空間モデル上の任意の座標PをUVW座標系で表した座標P'とを結ぶ線分CP'と、カメラ2の光軸Gとが形成する入射角αを算出する。
また、座標対応付け手段10は、カメラ2の入力画像平面R4(例えば、CCD面)に平行で且つ座標P'を含む平面Hにおける、平面Hと光軸Gとの交点Eと座標P'とを結ぶ線分EP'と、平面HにおけるU'軸とが形成する偏角φ、及び線分EP'の長さを算出する。
カメラの光学系は、通常、像高さhが入射角α及び焦点距離fの関数となっているので、座標対応付け手段10は、通常射影(h=ftanα)、正射影(h=fsinα)、立体射影(h=2ftan(α/2))、等立体角射影(h=2fsin(α/2))、等距離射影(h=fα)等の適切な射影方式を選択して像高さhを算出する。
その後、座標対応付け手段10は、算出した像高さhを偏角φによりUV座標系上のU成分及びV成分に分解し、入力画像平面R4の一画素当たりの画素サイズに相当する数値で除算することにより、空間モデルMD上の座標P(P')と入力画像平面R4上の座標とを対応付けることができる。
なお、入力画像平面R4のU軸方向における一画素当たりの画素サイズをaUとし、入力画像平面R4のV軸方向における一画素当たりの画素サイズをaVとすると、空間モデルMD上の座標P(P')に対応する入力画像平面R4上の座標(u,v)は、
で表される。
このようにして、座標対応付け手段10は、空間モデルMD上の座標と、カメラ毎に存在する一又は複数の入力画像平面R4上の座標とを対応付け、空間モデルMD上の座標、カメラ識別子、及び入力画像平面R4上の座標を関連付けて入力画像・空間モデル対応マップ40に記憶する。
また、座標対応付け手段10は、四元数を用いて座標の変換を演算するので、オイラー角を用いて座標の変換を演算する場合と異なり、ジンバルロックを発生させることがないという利点を有する。しかしながら、座標対応付け手段10は、四元数を用いて座標の変換を演算するものに限定されることはなく、オイラー角を用いて座標の変換を演算してもよい。
なお、複数の入力画像平面R4上の座標への対応付けが可能な場合、座標対応付け手段10は、空間モデルMD上の座標P(P')を、その入射角αが最も小さいカメラに関する入力画像平面R4上の座標に対応付けるようにしてもよく、操作者が選択した入力画像平面R4上の座標に対応付けるようにしてもよい。
次に、空間モデルMD上の座標のうち、曲面領域R2上の座標(Z軸方向の成分を持つ座標)を、XY平面上にある処理対象画像平面R3に再投影する処理について説明する。
図6は、座標対応付け手段10による座標間の対応付けを説明するための図である。また、図6(A)は、一例として通常射影(h=ftanα)を採用するカメラ2の入力画像平面R4上の座標と空間モデルMD上の座標との間の対応関係を示す図である。図2に示すように、座標対応付け手段10は、カメラ2の入力画像平面R4上の座標とその座標に対応する空間モデルMD上の座標とを結ぶ線分のそれぞれがカメラ2の光学中心Cを通過するようにして、両座標を対応付ける。
図6(A)の例では、座標対応付け手段10は、カメラ2の入力画像平面R4上の座標K1を空間モデルMDの平面領域R1上の座標L1に対応付け、カメラ2の入力画像平面R4上の座標K2を空間モデルMDの曲面領域R2上の座標L2に対応付ける。このとき、線分K1−L1及び線分K2−L2は共にカメラ2の光学中心Cを通過する。
なお、カメラ2が通常射影以外の射影方式(例えば、正射影、立体射影、等立体角射影、等距離射影等である。)を採用する場合、座標対応付け手段10は、それぞれの射影方式に応じて、カメラ2の入力画像平面R4上の座標K1、K2を空間モデルMD上の座標L1、L2に対応付けるようにする。
具体的には、座標対応付け手段10は、所定の関数(例えば、正射影(h=fsinα)、立体射影(h=2ftan(α/2))、等立体角射影(h=2fsin(α/2))、等距離射影(h=fα)等である。)に基づいて、入力画像平面上の座標と空間モデルMD上の座標とを対応付ける。この場合、線分K1−L1及び線分K2−L2がカメラ2の光学中心Cを通過することはない。
図6(B)は、空間モデルMDの曲面領域R2上の座標と処理対象画像平面R3上の座標との間の対応関係を示す図である。図6(B)に示すように、座標対応付け手段10は、XZ平面上に位置する平行線群PLであって、処理対象画像平面R3との間で角度βを形成する平行線群PLを導入し、空間モデルMDの曲面領域R2上の座標とその座標に対応する処理対象画像平面R3上の座標とが共に平行線群PLのうちの1つに乗るようにして、両座標を対応付ける。
図6(B)の例では、座標対応付け手段10は、空間モデルMDの曲面領域R2上の座標L2と処理対象画像平面R3上の座標M2とが共通の平行線に乗るとして、両座標を対応付けるようにする。
なお、座標対応付け手段10は、空間モデルMDの平面領域R1上の座標を曲面領域R2上の座標と同様に平行線群PLを用いて処理対象画像平面R3上の座標に対応付けることが可能であるが、図6(B)の例では、平面領域R1と処理対象画像平面R3とが共通の平面となっているので、空間モデルMDの平面領域R1上の座標L1と処理対象画像平面R3上の座標M1とは同じ座標値を有するものとなっている。
このようにして、座標対応付け手段10は、空間モデルMD上の座標と、処理対象画像平面R3上の座標とを対応付け、空間モデルMD上の座標及び処理対象画像平面R3上の座標を関連付けて空間モデル・処理対象画像対応マップ41に記憶する。
図6(C)は、処理対象画像平面R3上の座標と一例として通常射影(h=ftanα)を採用する仮想カメラ2Vの出力画像平面R5上の座標との間の対応関係を示す図である。図6(C)に示すように、出力画像生成手段11は、仮想カメラ2Vの出力画像平面R5上の座標とその座標に対応する処理対象画像平面R3上の座標とを結ぶ線分のそれぞれが仮想カメラ2Vの光学中心CVを通過するようにして、両座標を対応付ける。
図6(C)の例では、出力画像生成手段11は、仮想カメラ2Vの出力画像平面R5上の座標N1を処理対象画像平面R3(空間モデルMDの平面領域R1)上の座標M1に対応付け、仮想カメラ2Vの出力画像平面R5上の座標N2を処理対象画像平面R3上の座標M2に対応付ける。このとき、線分M1−N1及び線分M2−N2は共に仮想カメラ2Vの光学中心CVを通過する。
なお、仮想カメラ2Vが通常射影以外の射影方式(例えば、正射影、立体射影、等立体角射影、等距離射影等である。)を採用する場合、出力画像生成手段11は、それぞれの射影方式に応じて、仮想カメラ2Vの出力画像平面R5上の座標N1、N2を処理対象画像平面R3上の座標M1、M2に対応付けるようにする。
具体的には、出力画像生成手段11は、所定の関数(例えば、正射影(h=fsinα)、立体射影(h=2ftan(α/2))、等立体角射影(h=2fsin(α/2))、等距離射影(h=fα)等である。)に基づいて、出力画像平面R5上の座標と処理対象画像平面R3上の座標とを対応付ける。この場合、線分M1−N1及び線分M2−N2が仮想カメラ2Vの光学中心CVを通過することはない。
このようにして、出力画像生成手段11は、出力画像平面R5上の座標と、処理対象画像平面R3上の座標とを対応付け、出力画像平面R5上の座標及び処理対象画像平面R3上の座標を関連付けて処理対象画像・出力画像対応マップ42に記憶し、座標対応付け手段10が記憶した入力画像・空間モデル対応マップ40及び空間モデル・処理対象画像対応マップ41を参照しながら、出力画像における各画素の値と入力画像における各画素の値とを関連付けて出力画像を生成する。
なお、図6(D)は、図6(A)〜図6(C)を組み合わせた図であり、カメラ2、仮想カメラ2V、空間モデルMDの平面領域R1及び曲面領域R2、並びに、処理対象画像平面R3の相互の位置関係を示す。
次に、図7を参照しながら、画像生成装置100が処理対象画像を生成する処理(以下、「処理対象画像生成処理」とする。)、及び、生成した処理対象画像を用いて出力画像を生成する処理(以下、「出力画像生成処理」とする。)について説明する。なお、図7は、処理対象画像生成処理(ステップS1〜ステップS3)及び出力画像生成処理(ステップS4〜ステップS6)の流れを示すフローチャートである。また、カメラ2(入力画像平面R4)、空間モデル(平面領域R1及び曲面領域R2)、並びに、処理対象画像平面R3の配置は予め決定されているものとする。
最初に、制御部1は、座標対応付け手段10により、処理対象画像平面R3上の座標と空間モデルMD上の座標とを対応付ける(ステップS1)。
具体的には、座標対応付け手段10は、平行線群PLと処理対象画像平面R3との間に形成される角度を取得し、処理対象画像平面R3上の一座標から延びる平行線群PLの1つが空間モデルMDの曲面領域R2と交差する点を算出する。そして、座標対応付け手段10は、算出した点に対応する曲面領域R2上の座標を、処理対象画像平面R3上のその一座標に対応する曲面領域R2上の一座標として導き出し、その対応関係を空間モデル・処理対象画像対応マップ41に記憶する。なお、平行線群PLと処理対象画像平面R3との間に形成される角度は、記憶部4等に予め記憶された値であってもよく、入力部3を介して操作者が動的に入力する値であってもよい。
また、座標対応付け手段10は、処理対象画像平面R3上の一座標が空間モデルMDの平面領域R1上の一座標と一致する場合には、平面領域R1上のその一座標を、処理対象画像平面R3上のその一座標に対応する一座標として導き出し、その対応関係を空間モデル・処理対象画像対応マップ41に記憶する。
その後、制御部1は、座標対応付け手段10により、上述の処理によって導き出された空間モデルMD上の一座標と入力画像平面R4上の座標とを対応付ける(ステップS2)。
具体的には、座標対応付け手段10は、通常射影(h=ftanα)を採用するカメラ2の光学中心Cの座標を取得し、空間モデルMD上の一座標から延びる線分であり、光学中心Cを通過する線分が入力画像平面R4と交差する点を算出する。そして、座標対応付け手段10は、算出した点に対応する入力画像平面R4上の座標を、空間モデルMD上のその一座標に対応する入力画像平面R4上の一座標として導き出し、その対応関係を入力画像・空間モデル対応マップ40に記憶する。
その後、制御部1は、処理対象画像平面R3上の全ての座標を空間モデルMD上の座標及び入力画像平面R4上の座標に対応付けたか否かを判定し(ステップS3)、未だ全ての座標を対応付けていないと判定した場合には(ステップS3のNO)、ステップS1及びステップS2の処理を繰り返すようにする。
一方、制御部1は、全ての座標を対応付けたと判定した場合には(ステップS3のYES)、処理対象画像生成処理を終了させた上で出力画像生成処理を開始させ、出力画像生成手段11により、処理対象画像平面R3上の座標と出力画像平面R5上の座標とを対応付ける(ステップS4)。
具体的には、出力画像生成手段11は、処理対象画像にスケール変換、アフィン変換、又は歪曲変換を施すことによって出力画像を生成し、施したスケール変換、アフィン変換、又は歪曲変換の内容によって定まる、処理対象画像平面R3上の座標と出力画像平面R5上の座標との間の対応関係を処理対象画像・出力画像対応マップ42に記憶する。
或いは、出力画像生成手段11は、仮想カメラ2Vを用いて出力画像を生成する場合には、採用した射影方式に応じて処理対象画像平面R3上の座標から出力画像平面R5上の座標を算出し、その対応関係を処理対象画像・出力画像対応マップ42に記憶するようにしてもよい。
或いは、出力画像生成手段11は、通常射影(h=ftanα)を採用する仮想カメラ2Vを用いて出力画像を生成する場合には、その仮想カメラ2Vの光学中心CVの座標を取得した上で、出力画像平面R5上の一座標から延びる線分であり、光学中心CVを通過する線分が処理対象画像平面R3と交差する点を算出する。そして、出力画像生成手段11は、算出した点に対応する処理対象画像平面R3上の座標を、出力画像平面R5上のその一座標に対応する処理対象画像平面R3上の一座標として導き出し、その対応関係を処理対象画像・出力画像対応マップ42に記憶するようにしてもよい。
その後、制御部1は、出力画像生成手段11により、入力画像・空間モデル対応マップ40、空間モデル・処理対象画像対応マップ41、及び処理対象画像・出力画像対応マップ42を参照する。そして、制御部1は、入力画像平面R4上の座標と空間モデルMD上の座標との対応関係、空間モデルMD上の座標と処理対象画像平面R3上の座標との対応関係、及び処理対象画像平面R3上の座標と出力画像平面R5上の座標との対応関係を辿る。そして、制御部1は、出力画像平面R5上の各座標に対応する入力画像平面R4上の座標で特定される画素が有する値(例えば、輝度値、色相値、彩度値等である。)を取得する。そして、制御部1は、その取得した値を、対応する出力画像平面R5上の各座標で特定される画素の値として採用する(ステップS5)。すなわち、出力画像生成手段11は、出力画像上の画素の値と入力画像上の画素の値とを関連付けて出力画像を生成する。なお、出力画像平面R5上の一座標に対して複数の入力画像平面R4上の複数の座標が対応する場合、出力画像生成手段11は、それら複数の入力画像平面R4上の複数の座標で特定される複数の画素のそれぞれの値に基づく統計値(例えば、平均値、最大値、最小値、中間値等である。)を導き出し、出力画像平面R5上のその一座標で特定される一画素の値としてその統計値を採用するようにしてもよい。
その後、制御部1は、出力画像上の全画素の値を入力画像上の画素の値に対応付けたか否かを判定し(ステップS6)、未だ全ての画素の値を対応付けていないと判定した場合には(ステップS6のNO)、ステップS4及びステップS5の処理を繰り返すようにする。
一方、制御部1は、全ての画素の値を対応付けたと判定した場合には(ステップS6のYES)、出力画像を生成して、この一連の処理を終了させる。
なお、画像生成装置100は、処理対象画像を生成しない場合には、処理対象画像生成処理を省略し、出力画像生成処理におけるステップS4の"処理対象画像平面上の座標"を"空間モデル上の座標"で読み替えるものとする。
以上の構成により、画像生成装置100は、建設機械と周辺障害物との位置関係を操作者に直感的に把握させることが可能な処理対象画像及び出力画像を生成することができる。
また、画像生成装置100は、処理対象画像平面R3から空間モデルMDを経て入力画像平面R4に遡るように座標の対応付けを実行することにより、処理対象画像平面R3上の各座標を入力画像平面R4上の一又は複数の座標に確実に対応させることができる。また、画像生成装置100は、入力画像平面R4から空間モデルMDを経て処理対象画像平面R3に至る順番で座標の対応付けを実行する場合と比べ、より良質な処理対象画像を迅速に生成することができる。入力画像平面R4から空間モデルMDを経て処理対象画像平面R3に至る順番で座標の対応付けを実行する場合には、入力画像平面R4上の各座標を処理対象画像平面R3上の一又は複数の座標に確実に対応させることができるが、処理対象画像平面R3上の座標の一部が、入力画像平面R4上の何れの座標にも対応付けられない場合があり、その場合にはそれら処理対象画像平面R3上の座標の一部に補間処理等を施す必要があるためである。
また、画像生成装置100は、空間モデルMDの曲面領域R2に対応する画像のみを拡大或いは縮小する場合には、平行線群PLと処理対象画像平面R3との間に形成される角度を変更して空間モデル・処理対象画像対応マップ41における曲面領域R2に関連する部分のみを書き換えるだけで、入力画像・空間モデル対応マップ40の内容を書き換えることなく、所望の拡大或いは縮小を実現させることができる。
また、画像生成装置100は、出力画像の見え方を変更する場合には、スケール変換、アフィン変換又は歪曲変換に関する各種パラメータの値を変更して処理対象画像・出力画像対応マップ42を書き換えるだけで、入力画像・空間モデル対応マップ40及び空間モデル・処理対象画像対応マップ41の内容を書き換えることなく、所望の出力画像(スケール変換画像、アフィン変換画像又は歪曲変換画像)を生成することができる。
同様に、画像生成装置100は、出力画像の視点を変更する場合には、仮想カメラ2Vの各種パラメータの値を変更して処理対象画像・出力画像対応マップ42を書き換えるだけで、入力画像・空間モデル対応マップ40及び空間モデル・処理対象画像対応マップ41の内容を書き換えることなく、所望の視点から見た出力画像(視点変換画像)を生成することができる。
次に、図8を参照しながら、出力画像の構成例について説明する。なお、図8は、ショベル60に搭載された3台のカメラ2(右側方カメラ2R、左側方カメラ2L、及び後方カメラ2B)の入力画像を用いて生成される出力画像を表示部5に表示させたときの表示例である。
画像生成装置100は、それら3台のカメラ2のそれぞれの入力画像を空間モデルMDの平面領域R1及び曲面領域R2上に投影した上で処理対象画像平面R3に再投影して処理対象画像を生成する。そして、画像生成装置100は、その生成した処理対象画像に画像変換処理(例えば、スケール変換、アフィン変換、歪曲変換、視点変換処理等である。)を施すことによって出力画像を生成する。そして、画像生成装置100は、ショベル60の近傍を上空から見下ろした画像(平面領域R1における画像)と、ショベル60から水平方向に周辺を見た画像(処理対象画像平面R3における画像)とを同時に表示する。
なお、出力画像は、画像生成装置100が処理対象画像を生成しない場合には、空間モデルMDに投影された画像に画像変換処理(例えば、視点変換処理である。)を施すことによって生成される。
また、出力画像は、ショベル60が旋回動作を行う際の画像を違和感なく表示できるよう、円形にトリミングされ、その円の中心CTRが空間モデルMDの円筒中心軸上で、且つ、ショベル60の旋回軸PV上となるように生成されており、ショベル60の旋回動作に応じてその中心CTRを軸に回転するように表示される。この場合、空間モデルMDの円筒中心軸は、再投影軸と一致するものであってもよく、一致しないものであってもよい。
なお、空間モデルMDの半径は、例えば、5メートルであり、平行線群PLが処理対象画像平面R3との間で形成する角度は、ショベル60の旋回中心から掘削アタッチメントEの最大到達距離(例えば12メートルである。)だけ離れた位置に物体(例えば、作業員である。)が存在する場合にその物体が表示部5で十分大きく(例えば、7ミリメートル以上である。)表示されるように、設定され得る。
更に、出力画像は、ショベル60のCG画像を、ショベル60の前方が表示部5の画面上方と一致し、且つ、その旋回中心が中心CTRと一致するように配置するようにしてもよい。ショベル60と出力画像に現れる物体との間の位置関係をより分かり易くするためである。なお、出力画像は、方位等の各種情報を含む額縁画像をその周囲に配置するようにしてもよい。
次に、図9を参照して、出力画像で発生するジャギーについて説明する。なお、図9は、出力画像生成手段11による補間処理の効果を説明する図である。また、図9(A)は入力画像を示し、図9(B)は補間処理が施されていない出力画像を示し、図9(C)は補間処理が施された出力画像を示す。また、図9(B)及び図9(C)の出力画像は、図9(A)の点線領域G1で示す入力画像の一部を反時計回りに回転し且つ拡大した画像である。
ジャギーは、ラスター画像の輪郭に見られるギザギザであり、例えば入力画像を回転させて出力画像を生成するために入力画像平面上の実数座標点を整数座標点に変換するときの丸め誤差によって引き起こされる。
具体的には、入力画像上の画素を特定する座標値及び出力画像上の画素を特定する座標値は何れも整数値で表されるが、出力画像平面上の座標に対応する入力画像平面上の座標を導き出す際にその入力画像平面上の座標値を実数値(小数を含む値)として算出する場合がある。この場合、実数値は、例えば、小数点以下が四捨五入されて整数値に変換される。入力画像上の画素を特定する座標値として実数値を用いることができないためである。したがって、出力画像平面上の整数座標点で特定される画素(以下、「出力画素」とする。)は、入力画像平面上の実数座標点の最も近くにある整数座標点で特定される画素に対応付けられる。そして、例えば輝度値の全く異なる2つの画素を特定する2つの整数座標点の間にその実数座標点が存在していたとしても、出力画像上の画素は、入力画像平面上の2つの整数座標点のうちの一方で特定される画素に対応付けられる。そして、それら2つの整数座標点のうちの他方で特定される画素の値が出力画像上の画素の値に反映されることはない。その結果、出力画像に含まれる各画像の輪郭はギザギザに表現されてしまう。
このように、ジャギーは、四捨五入の際の丸め誤差によって引き起こされる。そして、ジャギーは、表示部5の解像度が低い程より顕著なものとなる。
そこで、出力画像生成手段11は、図10及び図11を参照して説明する補間処理を用いてジャギーを軽減させる。
図10は、補間処理を説明する概略図であり、入力画像平面の一部を示す。入力画像平面は、XY直交座標系で表され、整数座標点A(0、0)、B(0、1)、C(1、1)、D(1、0)を含む。また、図11は、出力画像生成手段11の構成例を示す機能ブロック図である。
本実施例では、図11に示すように、出力画像生成手段11は、主に、整数座標点選択部110、重み導出部111、及び加重平均部112を含む。
整数座標点選択部110は、出力画素に対応する入力画像平面上の実数座標点(以下、「対応実数座標点」とする。)の近くにある2つ以上の整数座標点から2つの整数座標点を選択する機能要素である。本実施例では、対応実数座標点は、図5及び図6で説明した関係を用いて出力画像生成手段11が導き出す座標点である。また、本実施例では、整数座標点選択部110は、対応実数座標点の周囲にある4つの整数座標点から2つの整数座標点を選択する。具体的には、図10に示すように、対応実数座標点P(0.63、0.19)の周囲にある4つの整数座標点は、A(0、0)、B(0、1)、C(1、1)、及びD(1、0)である。そして、整数座標点選択部110は、A−B、A−C、A−D、B−C、B−D、及びC−Dの6つの組み合わせ(整数座標点のペア)のうちの1つを選択する。
本実施例では、整数座標点選択部110は、対応実数座標点Pから6つの線分AB、AC、AD、BC、BD、CDのそれぞれに垂線を下ろす。そして、整数座標点選択部110は、6つの垂線PQ、PR、PS、PT、PU、PVのうち最も短い垂線PV及びその垂線PVに関連する線分BDを選択し、さらに線分BDに関連する2つの整数座標点B、Dを選択する。
また、本実施例では、X軸方向及びY軸方向における整数座標点の間隔は値「1」であり、4つの整数座標点A、B、C、Dは正方形を構成する。そのため、実数座標点Q(0.00、0.19)及びS(1.00、0.19)のY座標の値は何れも対応実数座標点P(0.63、0.19)のY座標の値に等しい。同様に、実数座標点R(0.63、1.00)及びT(0.63、0.00)のX座標の値は対応実数座標点P(0.63、0.19)のX座標の値に等しい。
また、実数座標点U(0.41、0.41)は、線分AC上の実数座標点であるため、整数座標点Aに対するX座標の値の増分とY座標の値の増分とが等しい関係にある。同様に、線分PV上の実数座標点は、対応実数座標点Pに対するX座標の値の増分とY座標の値の増分とが等しい関係にある。
また、実数座標点V(0.72、0.28)は、線分BD上の実数座標点であるため、整数座標点Bに対するX座標の値の増分とY座標の値の減分とが等しい関係にある。同様に、線分UP上の実数座標点は、実数座標点Uに対するX座標の値の増分とY座標の値の減分とが等しい関係にある。
具体的には、実数座標点UのX座標及びY座標の値は何れも、対応実数座標点PのX座標の値とY座標の値の合計「0.82」を二等分した値「0.41」である。また、実数座標点VのX座標の値は、値「1」から合計「0.82」を差し引いた差「0.18」を二等分した値「0.09」を対応実数座標点PのX座標の値「0.63」に加えた値「0.72」である。また、実数座標点VのY座標の値は、差「0.18」を二等分した値「0.09」を対応実数座標点PのY座標の値「0.19」に加えた値「0.28」である。
このように、実数座標点Q〜Vの座標値は、対応実数座標点Pの座標値から直接的に、或いは、加算、減算、二等分といった簡単な演算によって導き出される。そのため、対応実数座標点の周囲にある4つの整数座標点から2つの整数座標点を選択する上述の選択方法は、二進数演算に適した選択方法である。
重み導出部111は、選択された2つの整数座標点で特定される2つの画素(以下、「入力画素」とする。)の値から出力画素の値を決定する際の各入力画素の値の重みを導き出す機能要素である。
本実施例では、重み導出部111は、2つの整数座標点B、Dが選択された場合、線分BDの長さに対する線分BVの長さの比率を、整数座標点Dで特定される入力画素の値の重みαとして導き出す。また、重み導出部111は、線分BDの長さに対する線分VDの長さの比率を、整数座標点Bで特定される入力画素の値の重みβ(=1−α)として導き出す。
具体的には、図10に示すように、実数座標点VのX座標の値の小数部分は、線分ADの長さ「1」に対する線分AWの長さの比率に相当する。なお、実数座標点Wは、線分ADに対して実数座標点Vから下ろした垂線の交点である。そして、線分BDの長さに対する線分BVの長さの比率は、線分ADの長さに対する線分AWの長さの比率に等しい。そのため、重み導出部111は、実数座標点VのX座標の値の小数部分を、整数座標点Dで特定される入力画素の値の重みαとして採用する。また、重み導出部111は、実数座標点VのY座標の値の小数部分を、整数座標点Bで特定される入力画素の値の重みβとして採用する。なお、実数座標点VのY座標の値の小数部分は、値「1」から実数座標点VのX座標の値の小数部分を差し引いた値であり、1−αに相当する。このように、重み導出部111は、重みα、βを対応実数座標点Pの座標値から直接的に導き出し、比の計算等の比較的複雑な演算を省略できる。
加重平均部112は、2つの入力画素の値を加重平均する機能要素である。本実施例では、加重平均部112は、重み導出部111が導き出した重みα、βを用いて2つの入力画素の値を加重平均する。具体的には、加重平均部112は、2つの入力画素のうちの一方(以下、「第1画素」とする。)の値に重みαを乗算し、出力画素の値における第1画素の値の寄与分を算出する。また、加重平均部112は、2つの入力画素のうちの他方(以下、「第2画素」とする。)の値に重みβを乗算し、出力画素の値における第2画素の値の寄与分を算出する。そして、加重平均部112は、第1画素の値の寄与分と第2画素の値の寄与分の合計である2つの入力画素の値の加重平均を出力画素の値として導き出す。
例えば、整数座標点B、Dで特定される2つの入力画素のそれぞれの輝度値を加重平均する場合、加重平均部112は、実数座標点Vの座標値を用いる。具体的には、加重平均部112は、整数座標点Dで特定される入力画素(第1画素)の輝度値に対して、実数座標点VのX座標の値の小数部分(重みα)を乗算して第1画素の輝度値の寄与分を算出する。また、加重平均部112は、整数座標点Bで特定される入力画素(第2画素)の輝度値に対して、実数座標点VのY座標の値の小数部分(重みβ)を乗算して第2画素の輝度値の寄与分を算出する。そして、加重平均部112は、第1画素の輝度値の寄与分と第2画素の輝度値の寄与分とを合計することで出力画素の輝度値を導き出す。
また、上述の実施例では、垂線PVが最短となる場合について説明したが、他の垂線が最短となる場合についても同様の説明が適用される。
なお、上述の補間方法は、対応実数座標点Pが4つの整数座標点A〜D以外の位置に存在する場合に適用される。そのため、出力画像生成手段11は、対応実数座標点Pが整数座標点A〜Dの何れかの位置に存在する場合には、2つの整数座標点の選択、重みの導出、及び加重平均の演算を実行することなく、整数座標点としての対応実数座標点Pで特定される1つの入力画素の値をそのまま出力画素の値として採用する。また、6つの垂線のうちの最短のものが2つ以上存在する場合に対しては、出力画像生成手段11は、それら同じ長さの垂線のうちの何れを選択するかを予め決めておく。例えば、出力画像生成手段11は、予め設定された優先順位に基づいて1つの垂線を選択してもよい。また、上述の補間方法は、対応実数座標点PのX座標及びY座標の値が何れも0以上1以下の場合に適用されているが、i以上i+1以下(iは整数)の場合にも同様に適用される。
次に、図12を参照して、出力画像生成手段11が2つの入力画素の値を用いて1つの出力画素の値を導き出す補間処理の流れについて説明する。なお、図12は、補間処理の流れを示すフローチャートである。出力画像生成手段11は、例えば、図7のステップS5においてこの補間処理を実行する。また、以下のフローでは、垂線PVが最短となる場合について説明するが、他の垂線が最短となる場合についても同様の説明が適用される。
最初に、整数座標点選択部110は、対応実数座標点Pの周囲の4つの整数座標点A〜Dから2つの整数座標点B、Dを選択する(ステップS51)。具体的には、整数座標点選択部110は、対応実数座標点Pから6つの線分AB、AC、AD、BC、BD、CDのそれぞれに垂線を下ろす。そして、整数座標点選択部110は、6つの垂線PQ、PR、PS、PT、PU、PVのうち最も短い垂線PV及びその垂線PVに関連する線分BDを選択し、さらに線分BDに関連する2つの整数座標点B、Dを選択する。
その後、整数座標点選択部110は、選択した2つの整数座標点B、Dを結ぶ線分BDに対して対応実数座標点Pから下ろした垂線PVの垂線交点(実数座標点)Vの座標値を導き出す(ステップS52)。
なお、整数座標点選択部110は、対応実数座標点Pの位置(座標値)と最短垂線との対応関係を表す最短垂線参照テーブルを用いて整数座標点のペアを選択してもよい。具体的には、最短垂線参照テーブルは、m行m列の配列であり、隣接する整数座標点の間をm等分したときの補間処理に対応する。なお、mは2以上の自然数であり、好適には二進数演算に最適な2のべき乗数(例えば16)である。この最短垂線参照テーブルにより、整数座標点選択部110は、対応実数座標点Pの座標値から整数座標点のペアを一意に導き出すことができる。また、最短垂線参照テーブルは、対応実数座標点Pの位置(座標値)と垂線交点の位置(座標値)との対応関係を保持していてもよい。この場合、整数座標点選択部110は、対応実数座標点Pの座標値から垂線交点の座標値を一意に導き出すことができる。
その後、重み導出部111は、垂線交点の座標値に基づいて重みα、βを導き出す(ステップS53)。具体的には、重み導出部111は、垂線交点のX座標の値の小数部分を、整数座標点Dで特定される第1画素の値の重みαとして採用する。また、重み導出部111は、垂線交点のY座標の値の小数部分を、整数座標点Bで特定される第2画素の値の重みβとして採用する。
なお、重み導出部111は、二進数演算に適するように垂線交点のX座標及びY座標のそれぞれの小数部分をn段階で表現してもよい。同様に、重み導出部111は、十進数で0以上1以下の実数値を有する重みαをn段階で表現してもよい。なお、nは2のべき乗数であり、例えば、256である。この場合、整数座標点選択部110は、垂線交点のX座標及びY座標のそれぞれの小数部分を256段階(8ビット)で量子化した状態で導き出す。重みαについても同様である。
図13は、垂線交点のX座標の小数部分dx及びY座標の小数部分dyと、第1画素の値の重みαとの関係を示す図である。なお、dx、dy、及びαは何れも0〜255の範囲内の十進数の整数、すなわち8ビットで表現可能な値である。また、図13の値「255」は、理論的には値「256」であるところ、垂線交点の座標値の小数部分を8ビットで表現するために値「256」の代わりに使用される。
図13に示すように、第1画素を特定する整数座標点が整数座標点Aであり、第2画素を特定する整数座標点が整数座標点Dの場合、第1画素の値の重みαは(255−dx)で表される。また、第1画素を特定する整数座標点が整数座標点Bであり、第2画素を特定する整数座標点が整数座標点Dの場合、第1画素の値の重みαは、{255−(255−dy+dx)/2}で表される。他の組み合わせについても同様である。なお、値「2」による除算は、1回の右シフト演算によって実現される。
その後、加重平均部112は、2つの整数座標点で特定される2つの入力画素の値を加重平均して出力画素の値を導き出す(ステップS54)。具体的には、加重平均部112は、第1画素の値の重みαに基づいて出力画素の値を導き出す。例えば、第1画素がYCbCr方式の色データ(Y1、Cb1、Cr1)を有し、第2画素が色データ(Y2、Cb2、Cr2)を有する場合を考える。なお、Y1、Y2は輝度信号であり、例えば、256段階(8ビット)のレベルを有する。また、Cb1、Cb2、Cr1、Cr2は色差信号であり、例えば、256段階(8ビット)のレベルを有する。この場合、出力画素の輝度信号Yは、Y={α×Y1+(255−α)×Y2}/256で表される。また、出力画素の色差信号Cbは、Cb={α×Cb1+(255−α)×Cb2}/256で表され、色差信号Crは、Cr={α×Cr1+(255−α)×Cr2}/256で表される。なお、値「256」の代わりに値「255」を用いるのは上述の理由による。また、値「256」による除算は、8回の右シフト演算によって実現される。
以上の構成により、画像生成装置100は、対応実数座標点Pの周囲の4つの整数座標点のうちの2つの整数座標点で特定される2つの入力画素のそれぞれの値を加重平均することで出力画素の値を導き出す。そのため、演算負荷の増大を押さえながらも画質を向上させることができる。例えば、画像生成装置100は、色の再現性を高めることで画質を向上させることができる。そのため、ショベル60に搭載されたカメラ2が撮像した入力画像に基づいて生成される出力画像において、ショベルの旋回、走行、掘削作業等に起因するカメラ2の振動に応じて発生するジャギーを目立たなくすることができる。
また、画像生成装置100で実行される補間処理は、バイリニア補間のように対応実数座標点Pの周囲の4つの整数座標点で特定される4つの入力画素のそれぞれの値を加重平均する処理に比べ、加重平均処理の実行回数を3回から1回に削減でき、演算時間を短縮できる。また、画像生成装置100で実行される補間処理は、FPGA等による組込実装に適した低演算量を実現できる。そのため、画像生成装置100は、除算回路等の搭載を回避できる。
次に、図14〜図19を参照しながら、画像生成装置100が入力画像間の明るさ(輝度)の差を際立たせないようにする処理について説明する。
図14は、ショベル60に搭載された三台のカメラ2(左側方カメラ2L、右側方カメラ2R、及び後方カメラ2B)のそれぞれの入力画像と、それら入力画像を用いて生成される出力画像とを示す図である。
画像生成装置100は、それら三台のカメラ2のそれぞれの入力画像を空間モデルMDの平面領域R1及び曲面領域R2上に投影した上で処理対象画像平面R3に再投影して処理対象画像を生成し、その生成した処理対象画像に画像変換処理(例えば、スケール変換、アフィン変換、歪曲変換、視点変換処理等である。)を施すことによって出力画像を生成して、ショベル60の近傍を上空から見下ろした画像(平面領域R1における画像)と、ショベル60から水平方向に周辺を見た画像(処理対象画像平面R3における画像)とを同時に表示している。
図14において、左側方カメラ2Lの入力画像及び後方カメラ2Bの入力画像はそれぞれ、ショベル60の周囲における同じ場所を異なる角度から撮像した重複部分を含むが、それら重複部分はそれぞれ、各カメラに関する照明環境等の違いにより異なる明るさで撮像されており、その輝度が異なるものとなっている。右側方カメラ2Rの入力画像と後方カメラ2Bの入力画像との間の重複部分についても同様である。
そのため、それら3つの入力画像に基づいて生成される出力画像は、その出力画像平面上の座標が複数の入力画像平面上の座標に対応付け可能な場合に、その出力画像平面上の座標が入射角の最も小さいカメラに関する入力画像平面上の座標に対応付けられるものとすると、同じ場所を撮像しているにもかかわらず、左側方カメラ2Lの入力画像に基づく出力画像上の領域と後方カメラ2Bの入力画像に基づく出力画像上の領域との間の境界(図の一点鎖線で囲まれる領域R6参照。)、及び、右側方カメラ2Rの入力画像に基づく出力画像上の領域と後方カメラ2Bの入力画像に基づく出力画像上の領域との間の境界(図の一点鎖線で囲まれる領域R7参照。)のところでその輝度が急激に変化することとなり、その出力画像を見た運転者に不自然さを感じさせてしまうこととなる。
そこで、画像生成装置100は、チェッカーシャドー錯視(同色錯視)による効果を利用して、入力画像間の輝度の差を際立たせないようにする。
図15は、同色錯視を説明するための図(Edward H. Adelson、"Checker shadow illusion"、1995年、インターネット<URL: http://web.mit.edu/persci/people/adelson/checkershadow_illusion.html>)であり、図15(A)は、同色錯視をもたらすために利用されるチェッカーパタン(格子模様)を示し、図15(B)は、チェッカーパタン(格子模様)上の点P1〜点P3及び点P4〜点P6における輝度の推移を表すグラフを示す。
図15(A)で示されるように、点P2を含む単位パタンの輝度よりも高い輝度を有する2つの単位パタン(点P1を含む単位パタン及び点P3を含む単位パタンである。)で挟まれたその点P2を含む単位パタンの輝度は、点P5を含む単位パタンの輝度よりも低い輝度を有する2つの単位パタン(点P4を含む単位パタン及び点P6を含む単位パタンである。)で挟まれたその点P5を含む単位パタンの輝度よりも低いように見える。
しかしながら、この輝度の差は、それぞれの単位パタンが格子模様を形成していること、及び、点P4〜点P6を含む単位パタン群が物体OBJの影に入っていることを認識している観察者の錯視によるものであり、実際には、図15(B)で示されるように、点P2を含む単位パタンの輝度は、点P5を含む単位パタンの輝度に等しいものとなっている。
このように、その観察者は、点P1、点P3、及び点P5のそれぞれを含む単位パタンが同じ輝度を有し、点P2、点P4、及び点P6のそれぞれを含む単位パタンが同じ輝度を有するものと錯覚することとなる。
図16は、同色錯視をもたらす明暗パタンを生成する方法の一例を説明するための図であり、2つの波源(例えば、右側方カメラ2R及び後方カメラ2Bである。なお、右側方カメラ2Rが図の左側に示されているが、これは図の明瞭化のためであり、ここでは、図の右斜め上方が、ショベル60の後方に対応するものとする。)から山(実線円)及び谷(破線円)を形成しながら拡がって互いに干渉する2つの波を示す。
また、図16において、2つの扇形領域2Ra、2Baはそれぞれ、右側方カメラ2Rの撮像範囲、及び、後方カメラ2Bの撮像範囲を示し、太い実線で表される腹線ANLは、2つの波が互いに強め合う点を連ねた線を示し、太い破線で表される節線NLは、2つの波が互いに弱め合う点を連ねた線を示す。なお、腹線ANL及び節線NLは、図16で示されるように、交互に現れることとなる。
また、図16において、右側方カメラ2Rを波源として拡がる波の1つの谷が描く線(破線円)と、その1つの谷の次に発生する1つの山が描く線(実線円)と、後方カメラ2Bを波源として拡がる波の1つの谷が描く線(破線円)と、その1つの谷の次に発生する1つの山が描く線(実線円)とで定められる菱形状の領域のそれぞれは、単位パタン領域LTを形成するものとする。
図16で示される複数の単位パタン領域LTが出力画像平面上に描かれたものとし、単位パタン領域LTのうちの腹線ANLが通過する(灰色で塗り潰される)単位パタン領域LT1に後方カメラ2Bの入力画像が対応付けられ、且つ、単位パタン領域LTのうちの節線NLが通過する(白色で塗り潰される)単位パタン領域LT2に右側方カメラ2Rの入力画像が対応付けられるものとすると、平均輝度がそれぞれ異なる2つの入力画像は、同色錯視をもたらす格子模様を形成できる。
なお、単位パタン領域LTのうちの腹線ANLが通過する(灰色で塗り潰される)単位パタン領域LT1に右側方カメラ2Rの入力画像が対応付けられ、且つ、単位パタン領域LTのうちの節線NLが通過する(白色で塗り潰される)単位パタン領域LT2に後方カメラ2Bの入力画像が対応付けられる場合も同様に、平均輝度がそれぞれ異なる2つの入力画像は、同色錯視をもたらす格子模様を形成できる。
また、図16の格子模様は、波長及び位相が等しい2つの波を用いて形成されるが、波長及び位相の一方又は双方が異なる2つの波を用いて形成されてもよい。単位パタン領域LT1、LT2のサイズや形状を柔軟に調整できるようにするためである。
図17は、図16で示される格子模様を出力画像平面(平面領域R1)上に配置した状態を示し、ショベル60のCG画像の右後方(図の右下方向)にある、右側方カメラ2Rの撮像範囲と後方カメラ2Bの撮像範囲との重複領域に配置される格子模様と、ショベル60のCG画像の左後方(図の左下方向)にある、左側方カメラ2Lの撮像範囲と後方カメラ2Bの撮像範囲との重複領域に配置される格子模様とを示す。
図17において、右側方カメラ2Rの撮像範囲と後方カメラ2Bの撮像範囲との重複領域に配置される格子模様は、例えば、(灰色で塗り潰される)単位パタン領域LT1に右側方カメラ2Rの入力画像が対応付けられ、(白色で塗り潰される)単位パタン領域LT2に後方カメラ2Bの入力画像が対応付けられるものとする。
また、左側方カメラ2Lの撮像範囲と後方カメラ2Bの撮像範囲との重複領域に配置される格子模様は、例えば、(灰色で塗り潰される)単位パタン領域LT3に左側方カメラ2Lの入力画像が対応付けられ、(白色で塗り潰される)単位パタン領域LT4に後方カメラ2Bの入力画像が対応付けられるものとする。
図18は、画像生成装置100が、2つのカメラのそれぞれの撮像範囲の重複領域に対応する出力画像平面上の各座標に、それら2つのカメラの何れか一方の入力画像平面上の座標を対応付け、同色錯視をもたらす格子模様を形成する処理(以下、「格子模様形成処理」とする。)の流れを示すフローチャートである。
画像生成装置100の制御部1は、例えば、座標対応付け手段10により、図7の処理対象画像生成処理のステップS2において、空間モデルMDの平面領域R1上の一座標と複数の入力画像平面上の座標との対応付けが可能な場合に、空間モデルMDの平面領域R1上の一座標と2つのカメラのそれぞれに対応する2つの入力画像平面のうちの1つにおける一座標とを対応付ける際に、この格子模様形成処理を実行するものとする。
最初に、制御部1は、2つのカメラ(例えば、右側方カメラ2R及び後方カメラ2Bである。)の撮像範囲が重複する領域に対応する、空間モデルMDの平面領域R1上の一座標を取得する(ステップS11)。
次に、制御部1は、2つのカメラのそれぞれにおける光学中心の座標を取得する(ステップS12)。
次に、制御部1は、ステップS11で取得した空間モデルMDにおける平面領域R1上の一座標に対応付けるカメラを選択する(ステップS13)。
具体的には、制御部1は、右側方カメラ2Rの光学中心の座標を(Xcam1、Ycam1)とし、後方カメラ2Bの光学中心の座標を(Xcam2、Ycam2)とし、対応付けの対象である空間モデルMDの平面領域R1上の一座標を(Xtarget、Ytarget)とし、右側方カメラ2Rを波源として拡がる波の波長をλ1[mm]、位相をP1[rad]とし、後方カメラ2Bを波源として拡がる波の波長をλ2[mm]、位相をP2[rad]とすると、
で表される条件式が真である場合、その平面領域R1上の一座標に対応付けるカメラとして右側方カメラ2Rを選択し、上述の条件式が偽である場合、その平面領域R1上の一座標に対応付けるカメラとして後方カメラ2Bを選択する。
なお、制御部1は、上述の条件式が真である場合に、その平面領域R1上の一座標に対応付けるカメラとして後方カメラ2Bを選択し、上述の条件式が偽である場合に、その平面領域R1上の一座標に対応付けるカメラとして右側方カメラ2Rを選択するようにしてもよい。
なお、上述の条件式は、平面領域R1上の座標(Xtarget、Ytarget)が、図17で示される単位パタン領域LT1に含まれるか、或いは、単位パタン領域LT2に含まれるかの判定式に相当する。
また、本実施例において、制御部1は、光学中心の座標が二次元座標であり、波源から発生する波が平面波であるという前提で、平面領域R1上の一座標(二次元座標)と2つのカメラのそれぞれの光学中心の座標(平面領域R1を含む平面上に投影された二次元座標)との間の二次元距離に基づいてカメラを選択するが、光学中心の座標を(高さ情報を含む)三次元座標とし、波源から発生する波を球面波としながら、平面領域R1上の一座標(三次元座標)と2つのカメラのそれぞれの光学中心の座標(三次元座標)との間の三次元距離に基づいてカメラを選択するようにしてもよい。
また、本実施例において、制御部1は、2つのカメラ(例えば、右側方カメラ2R及び後方カメラ2Bである。)の撮像範囲が重複する領域に対応する、空間モデルMDの平面領域R1上の一座標に対応付けるカメラを選択しているが、2つのカメラの撮像範囲が重複する領域に対応する、処理対象画像平面R3上の一座標に対応付けるカメラを選択するようにしてもよい。
この場合、制御部1は、処理対象画像平面R3上の一座標(二次元座標)と2つのカメラのそれぞれの光学中心の座標(処理対象画像平面R3を含む平面上に投影された二次元座標)との間の二次元距離に基づいてカメラを選択するようにしてもよく、処理対象画像平面R3上の一座標(三次元座標)と2つのカメラのそれぞれの光学中心の座標(三次元座標)との間の三次元距離に基づいてカメラを選択するようにしてもよい。なお、処理対象画像平面R3は、平面領域R1を含むものであってもよい。
その後、制御部1は、座標対応付け手段10により、選択したカメラの入力画像平面上の一座標と、空間モデルMDの平面領域R1上の一座標とを対応付け(ステップS14)、空間モデルMD上の座標、カメラ識別子、及び入力画像平面上の座標を関連付けて入力画像・空間モデル対応マップ40に記憶する。
その後、制御部1は、2つのカメラの撮像範囲が重複する領域に対応する、空間モデルMDの平面領域R1上の全ての座標を、2つのカメラのうちの1つの入力画像平面上の座標に対応付けたか否かを判定し(ステップS15)、未だ全ての座標を対応付けていないと判定した場合には(ステップS15のNO)、ステップS11〜ステップS14の処理を繰り返すようにする。
一方、制御部1は、全ての座標を対応付けたと判定した場合には(ステップS15のYES)、この格子模様形成処理を終了させる。
なお、上述において、制御部1は、2つのカメラの撮像範囲が重複する領域に対応する、空間モデルMDの平面領域R1上の各座標、又は、処理対象画像平面R3上の各座標を、2つのカメラのうちの1つの入力画像平面上の座標に対応付けるようにするが、更に、2つのカメラの撮像範囲が重複する領域に対応する、空間モデルMDの曲面領域R2上の各座標を、2つのカメラのうちの1つの入力画像平面上の座標に対応付けるようにしてもよい。
このように、制御部1は、上述のような条件式を用いて空間モデルMD上の各座標を2つのカメラのうちの1つの入力画像平面上の座標に容易に対応付けることができ、適切な格子模様を生成することができる。
図19は、図14で示される出力画像と、図14の出力画像に同色錯視をもたらす格子模様が適用された出力画像との違いを表す対比図であり、図19(A)が図14で示される出力画像を示し、図19(B)が同色錯視をもたらす格子模様が適用された出力画像を示す。
左側方カメラ2Lの入力画像に基づく出力画像上の領域と後方カメラ2Bの入力画像に基づく出力画像上の領域との間の境界を含む図19(A)の一点鎖線で囲まれた領域R6は、顕著な輝度の違いを提示しているが、左側方カメラ2Lの入力画像に基づく出力画像上の領域と後方カメラ2Bの入力画像に基づく出力画像上の領域とが格子模様となって混在する図19(B)の一点鎖線で囲まれた領域R8は、その輝度の違いが目立たなくなっており、その領域R8を含む出力画像を見た運転者に不自然さを感じさせ難くしている。
同様に、右側方カメラ2Rの入力画像に基づく出力画像上の領域と後方カメラ2Bの入力画像に基づく出力画像上の領域との間の境界を含む図19(A)の一点鎖線で囲まれた領域R7は、顕著な輝度の違いを提示しているが、右側方カメラ2Rの入力画像に基づく出力画像上の領域と後方カメラ2Bの入力画像に基づく出力画像上の領域とが格子模様となって混在する図19(B)の一点鎖線で囲まれた領域R9は、その輝度の違いが目立たなくなっており、その領域R9を含む出力画像を見た運転者に不自然さを感じさせ難くしている。
次に、図20〜図22を参照しながら、画像生成装置100が、2つのカメラのそれぞれの撮像範囲の重複領域に対応する出力画像部分を生成する際にその出力画像部分にある物体が消失するのを防止する処理について説明する。
図20は、ショベル60に搭載された三台のカメラ2(左側方カメラ2L、右側方カメラ2R、及び後方カメラ2B)のそれぞれの入力画像と、それら入力画像を用いて生成される出力画像とを示す図である。
画像生成装置100は、それら三台のカメラ2のそれぞれの入力画像平面上の座標を空間モデルMDの平面領域R1及び曲面領域R2上の座標に投影した上で処理対象画像平面R3に再投影して処理対象画像を生成し、その生成した処理対象画像に画像変換処理(例えば、スケール変換、アフィン変換、歪曲変換、視点変換処理等である。)を施すことによって出力画像を生成して、ショベル60の近傍を上空から見下ろした画像(平面領域R1における画像)と、ショベル60から水平方向に周辺を見た画像(処理対象画像平面R3における画像)とを表示している。
図20において、右側方カメラ2Rの入力画像、及び、後方カメラ2Bの入力画像はそれぞれ、右側方カメラ2Rの撮像範囲と後方カメラ2Bの撮像範囲との重複領域内に人物(右側方カメラ2Rの入力画像における二点鎖線で囲まれる領域R10、及び、後方カメラ2Bの入力画像における二点鎖線で囲まれる領域R11参照。)を捉えている。
しかしながら、それら右側方カメラ2Rの入力画像、及び、後方カメラ2Bの入力画像に基づいて生成される出力画像は、その出力画像平面上の座標が入射角の最も小さいカメラに関する入力画像平面上の座標に対応付けられるものとすると、図20で示されるように、その重複領域内の人物を消失させてしまうこととなる(出力画像内の一点鎖線で囲まれる領域R12参照。)。
そこで、画像生成装置100は、同色錯視をもたらすために形成される格子模様を利用して、2つのカメラのそれぞれの撮像範囲の重複領域に対応する出力画像部分を生成する際にその出力画像部分にある物体が消失するのを防止するものとする。
図21は、2つのカメラのそれぞれの撮像範囲の重複領域における物体の消失防止効果を説明するための図であり、図21(A)は、図16で示される同色錯視をもたらすための格子模様を形成するための波の図を示し、図21(B)は、図21(A)の一部拡大図を示す。
図21(A)において、破線で囲まれる投影像PRJ1は、後方カメラ2Bの入力画像における物体OBJ1の像が、路面画像を生成するための視点変換によって、その後方カメラ2Bとその物体OBJ1とを結ぶ線の延長方向に伸長されたもの(後方カメラ2Bの入力画像を用いてその出力画像部分における路面画像を生成した場合に表示される像である。)を表す。
また、破線で囲まれる投影像PRJ2は、右側方カメラ2Rの入力画像における物体OBJ1の像が、路面画像を生成するための視点変換によって、その右側方カメラ2Rとその物体OBJ1とを結ぶ線の延長方向に伸長されたもの(右側方カメラ2Rの入力画像を用いてその出力画像部分における路面画像を生成した場合に表示される像である。)を表す。
なお、投影像PRJ1及び投影像PRJ2は、最終的な出力画像上にそのままの状態で表示されることはなく、図21(B)で示されるように、一部が切り欠かれた状態で表示されることとなる。
また、図21(A)において、投影像PRJ1を表す破線領域のうち、灰色で塗り潰された部分は、腹線ANLが通過する単位パタン領域LT1(図16参照。)との重なり部分を表し、その重なり部分に対応する出力画像上の各座標には後方カメラ2Bの入力画像平面上の座標(物体OBJ1の像を形成する領域内の座標)が対応付けられることを示す。
一方、投影像PRJ1を表す破線領域のうち、白色で塗り潰された部分は、節線NLが通過する単位パタン領域LT2(図16参照。)との重なり部分を表し、その重なり部分に対応する出力画像上の各座標には右側方カメラ2Rの入力画像平面上の座標(物体OBJ1の像を形成しない領域内の座標)が対応付けられることを示す。
なお、投影像PRJ1を表す破線領域のうち、灰色で塗り潰された部分に対応する出力画像上の各座標に、右側方カメラ2Rの入力画像平面上の座標(物体OBJ1の像を形成しない領域内の座標)が対応付けられ、投影像PRJ1を表す破線領域のうち、白色で塗り潰された部分に対応する出力画像上の各座標に、後方カメラ2Bの入力画像平面上の座標(物体OBJ1の像を形成する領域内の座標)が対応付けられるようにしてもよい。
この場合、投影像PRJ1は、図21(B)で示されるように、その伸長方向に直交する円(後方カメラ2Bの位置を波源とする波の山及び谷が描く円である。)の一部をその境界線として含む単位パタン領域LT2によって切り欠かれることとなるが、隣接する単位パタン領域LT1が互いに頂点を接触させているので繊切り状に分断され難く、単位パタン領域LT2のそれぞれがその伸長方向に直交する円の一部を含むため、その輪郭も認識され易いはっきりした状態で保存されることとなる。
また、投影像PRJ1は、物体OBJ1の高さが高い程、カメラから遠ざかる方向により長く伸長され、且つ、カメラから遠ざかる程、より大きく拡大される傾向を有するが、単位パタン領域LT1及びLT2は何れもカメラから遠ざかる程、その投影像PRJ1と同じ度合いで、より大きく拡大していくので、その切り欠き状態もほぼ均一に維持されることとなる。
また、図21(A)において、投影像PRJ2を表す破線領域のうち、黒色で塗り潰された部分は、節線NLが通過する単位パタン領域LT2(図16参照。)との重なり部分を表し、その重なり部分に対応する出力画像上の各座標には右側方カメラ2Rの入力画像平面上の座標(物体OBJ1の像を形成する領域内の座標)が対応付けられることを示す。
一方、投影像PRJ2を表す破線領域のうち、白色で塗り潰された部分は、腹線ANLが通過する単位パタン領域LT1(図16参照。)との重なり部分を表し、その重なり部分に対応する出力画像上の各座標には後方カメラ2Bの入力画像平面上の座標(物体OBJ1の像を形成しない領域内の座標)が対応付けられることを示す。
なお、投影像PRJ2を表す破線領域のうち、黒色で塗り潰された部分に対応する出力画像上の各座標に後方カメラ2Bの入力画像平面上の座標(物体OBJ1の像を形成しない領域内の座標)が対応付けられ、投影像PRJ2を表す破線領域のうち、白色で塗り潰された部分に対応する出力画像上の各座標に右側方カメラ2Rの入力画像平面上の座標(物体OBJ1の像を形成する領域内の座標)が対応付けられるようにしてもよい。
この場合、投影像PRJ2は、投影像PRJ1と同様に、図21(B)で示されるように、その伸長方向に直交する円(右側方カメラ2Rの位置を波源とする波の山及び谷が描く円である。)の一部をその境界線として含む単位パタン領域LT1によって切り欠かれることとなるが、隣接する単位パタン領域LT2が互いに頂点を接触させているので繊切り状に分断され難く、単位パタン領域LT1のそれぞれがその伸長方向に直交する円の一部を含むため、その輪郭も認識され易いはっきりした状態で保存されることとなる。
また、投影像PRJ2は、投影像PRJ1と同様に、物体OBJ1の高さが高い程、カメラから遠ざかる方向により長く伸長され、且つ、カメラから遠ざかる程、より大きく拡大される傾向を有するが、単位パタン領域LT1及びLT2は何れもカメラから遠ざかる程、その投影像PRJ2と同じ度合いで、より大きく拡大していくので、その切り欠き状態もほぼ均一に維持されることとなる。
図22は、図20で示される出力画像と、図20の出力画像に同色錯視をもたらす格子模様が適用された出力画像との違いを表す対比図であり、図22(A)が図20で示される出力画像を示し、図22(B)が同色錯視をもたらす格子模様が適用された出力画像を示す。
右側方カメラ2Rの入力画像に基づく出力画像上の領域と後方カメラ2Bの入力画像に基づく出力画像上の領域との間の境界を含む図22(A)の一点鎖線で囲まれた領域R13は、人物が消失した状態を提示しているが、右側方カメラ2Rの入力画像に基づく出力画像上の領域と後方カメラ2Bの入力画像に基づく出力画像上の領域とが格子模様となって混在する図22(B)の一点鎖線で囲まれた領域R14は、人物を消失させることなく、その人物を認識し易い状態で提示し、その領域R14を含む出力画像を見た運転者にその人物の存在を確実に認識させることができるようにしている。
以上の構成により、画像生成装置100は、同色錯視をもたらすための格子模様を利用することにより、2つのカメラのそれぞれの撮像範囲の重複領域に対応する出力画像部分を生成する際にその出力画像部分にある物体が消失するのを防止することができる。また、画像生成装置100は、2つの入力画像のそれぞれの部分領域が櫛歯状に交互に配置されるように2つの入力画像を繋ぎ合わせる場合に比べ、その重複領域に対応する出力画像部分にある物体の投影像の輪郭を視認し易い形で保存でき、その一部が切り欠かれることとなるその物体の投影像を、運転者がより認識し易い状態で表示することができる。
しかしながら、画像生成装置100は、格子模様を利用する限り、その投影像の断片化による見栄えの悪化を受け入れざるを得ない。特に、出力画像の解像度が低い場合、単位パタン領域LT1、LT2の細部が劣化するため、ノイズの発生等による見栄えの悪化はより顕著となる。その結果、投影像の輪郭を視認し易い形で保存するという本来の設計意図を発揮できない場合が生じ得る。
なお、格子模様を利用せずに、重複領域に対応する出力画像部分を生成する際に後方カメラ2Bの入力画像における画素の値と右側方カメラ2Rの入力画像における画素の値とを平均化した場合、制御部1は、投影像の断片化による見栄えの悪化を防止できるが、投影像の半透明化により投影像の視認性を悪化させてしまう。また、そもそも格子模様を利用しなければ格子模様による上述の効果を実現できないため、このような平均化をそのまま採用することはできない。
そこで、画像生成装置100の制御部1は、投影像の視認性を維持しながらも見栄えの悪化を防止するために、単位パタン領域LT1、LT2のそれぞれの細部における画素の値を調整する。具体的には、制御部1は、後方カメラ2Bの入力画像における画素の値と右側方カメラ2Rの入力画像における画素の値とを加重平均して単位パタン領域LT1、LT2を形成する画素の値を導き出す。なお、本実施例では、制御部1は、補間処理の際に利用した加重平均部112を利用し、後方カメラ2Bの入力画像における画素の値と右側方カメラ2Rの入力画像における画素の値との加重平均を導き出すことができる。この構成により、制御部1は、格子模様と平均化とを併用し、その出力画像部分の視認性を維持しながら見栄えの低下を防止できる。なお、格子模様による視認性の改善と平均化による見栄えの改善とはトレードオフの関係にある。具体的には、各画素の値として採用される加重平均値が単純平均値に近づくほど見栄えは改善されるが視認性は低下する。格子模様による断片化が解消されるが、投影像が半透明化するためである。そのため、制御部1は、以下で説明するように、各画素の位置に応じて加重平均の際に用いる重み係数を適切に調整することで視認性と見栄えのバランスを図るようにする。
図23は、重複領域に対応する出力画像部分の見栄えを改善するために制御部1が後方カメラ2Bの入力画像における画素の値と側方カメラ2L、2Rの入力画像における画素の値とを加重平均する処理(以下、「平均化境界処理」とする。)の流れを示す概略図である。なお、以下では、説明の便宜上、後方カメラ2Bの入力画像における画素の値と右側方カメラ2Rの入力画像における画素の値とを加重平均する場合を説明する。しかしながら、後方カメラ2Bの入力画像における画素の値と左側方カメラ2Lの入力画像における画素の値とを加重平均する場合にも同様の説明が適用され得る。
最初に、制御部1は、出力画像平面に「場」を設定する。「場」とは、時空(出力画像平面上)の各点に関連する物理量である。「場」では、座標を指定すればある1つの物理量が定まる。上述の
は「場」の一例であり、右側方カメラ2Rの位置を波源とする波と後方カメラ2Bの位置を波源とする波の合成波の振幅に関する物理量である。なお、(Xcam1、Ycam1)は右側方カメラ2Rの光学中心の座標を表し、(Xcam2、Ycam2)は後方カメラ2Bの光学中心の座標を表し、(Xtarget、Ytarget)は空間モデルMDの平面領域R1上の一座標を表し、λ1は右側方カメラ2Rを波源として拡がる波の波長[mm]を表し、P1は右側方カメラ2Rを波源として拡がる波の位相[rad]を表し、λ2は後方カメラ2Bを波源として拡がる波の波長[mm]を表し、P2は後方カメラ2Bを波源として拡がる波の位相[rad]を表す。
本実施例では、制御部1は、上述の式で表される場を設定する。この場合、「場」の値fは、−1≦f≦1で表される。そして、図17に示す単位パタン領域LT1内の「場」の値fは0<f≦1で表され、単位パタン領域LT2内の「場」の値fは−1≦f≦0で表される。
また、制御部1は、右側方カメラ2Rの位置を波源とする波と後方カメラ2Bの位置を波源とする波の合成波の振幅に関する物理量である
を「場」として設定してもよい。この場合、「場」の値fは、−1≦f≦1で表される。そして、図17に示す単位パタン領域LT1内の「場」の値fは0<f≦1で表され、単位パタン領域LT2内の「場」の値fは−1≦f≦0で表される。
その後、制御部1は、「場」の値fを「重み」の値wに変換する。「重み」は、加重平均の際に用いる重み係数である。本実施例では、制御部1は、「場」の値fを、後方カメラ2Bの入力画像における画素値の「重み」の値wBに変換する。また、値wBは、右側方カメラ2Rの入力画像における画素値の「重み」の値wRと相補的な関係にあり、値wBと値wRの合計は常に一定とされ、値wBが増加すると値wRが減少する。
図24は、「場」の値fから「重み」の値wBへの変換に用いる変換曲線の一例である。図24の変換曲線は、
で表され、例えば重複領域に対応する出力画像部分における格子模様のコントラストを強める際に用いられる。なお、A0は、急峻さを表すパラメータであり、例えば、0<A0≦0.12である。
図25は、「場」の値fから「重み」の値wBへの変換に用いる変換曲線の別の一例である。図25の変換曲線は、w=A1f3+(1−A1)fで表され、例えば重複領域に対応する出力画像部分における格子模様のコントラストを弱める際に用いられる。なお、A1は、急峻さを表すパラメータであり、例えば、0≦A1≦1であり、A1=0のときに線形となる。
また、現段階では、「重み」の値wBは、−1以上+1以下の値となるように変換される。後続の処理で使用される際の便宜のためである。この変換には、丸め処理(最小値、最大値で制限)、スケール変換(線形変換)等が用いられる。
また、上述の「場」及び変換曲線を用いた場合、単位パタン領域LT1内の画素の値は、後方カメラ2Bの入力画像における画素値の重みwBが右側方カメラ2Rの入力画像における画素値の重みwR以上となる状態で導き出される。すなわち、後方カメラ2Bの入力画像における画素値の影響(寄与度)が右側方カメラ2Rの入力画像における画素値の影響(寄与度)以上となるように導き出される。また、単位パタン領域LT2内の画素の値は、右側方カメラ2Rの入力画像における画素値の重みwRが後方カメラ2Bの入力画像における画素値の重みwB以上となる状態で導き出される。すなわち、右側方カメラ2Rの入力画像における画素値の影響(寄与度)が後方カメラ2Bの入力画像における画素値の影響(寄与度)以上となるように導き出される。
なお、単位パタン領域LT1内の画素に関して重みwRが重みwB以上となる状態で導き出され、且つ、単位パタン領域LT2内の画素に関して重みwBが重みwR以上となる状態で導き出されてもよい。また、単位パタン領域LT1内の画素に関する重みwB、wRは、画素毎に異なる値であってもよく同じ値であってもよい。単位パタン領域LT2内の画素に関する重みwB、wRについても同様である。
更に、単位パタン領域LT1内の全ての画素に関する重みwBが重みwR以上で、且つ単位パタン領域LT2内の全ての画素に関する重みwRが重みwB以上となる必要はなく、単位パタン領域LT1内の各画素に関する重みwBの平均値が重みwRの平均値以上となり、且つ単位パタン領域LT2内の各画素に関する重みwRの平均値が重みwBの平均値以上となるような変換曲線を用いて重みwB、wRが導き出されてもよい。単位パタン領域LT1内の画素に関する重みwRが重みwB以上となる状態で導き出され、且つ、単位パタン領域LT2内の画素に関する重みwBが重みwR以上となる状態で導き出される場合も同様である。
図26は、単位パタン領域LT1における画素に関する重みwBの値と単位パタン領域LT2における画素に関する重みwBの値との関係を示す図である。具体的には、図26(A)は、単位パタン領域LT1及び単位パタン領域LT2における各画素の配置を示す図であり、単位パタン領域LT1は画素G1〜G5を含み、単位パタン領域LT2は画素G6〜G10を含む。本実施例では、画素G1、G5は、単位パタン領域LT1の周縁部にある画素であり、画素G3は、単位パタン領域LT1の中心部にある画素であり、画素G2、G4は、単位パタン領域LT1の中心部と周縁部との間の中間部にある画素である。
同様に、画素G6、G10は、単位パタン領域LT2の周縁部にある画素であり、画素G8は、単位パタン領域LT2の中心部にある画素であり、画素G7、G9は、単位パタン領域LT2の中心部と周縁部との間の中間部にある画素である。
また、図26(B)及び図26(C)は、図26(A)の各画素に関する重みwBの値を示し、図26(B)は、単位パタン領域LT1における重みwBの値の推移を表す推移線TL1(破線)と、単位パタン領域LT2における重みwBの値の推移を表す推移線TL2(一点鎖線)とが、単位パタン領域LT1と単位パタン領域LT2との境界線BLを値ゼロで横切る際に連続的となる例を示す。なお、図26(B)に示す例は、2種類の単位パタン領域の境界が比較的目立たない出力画像をもたらす。また、図26(C)は、推移線TL1、TL2が境界線BLを横切る際に不連続となる例を示す。なお、図26(C)に示す例は、2種類の単位パタン領域の境界が比較的目立つ出力画像をもたらす。
具体的には、図26(B)は、単位パタン領域LT1に含まれる画素G1〜G5のそれぞれに関する重みwBの値が0以下、すなわち重みwR以下であることを示し、且つ、単位パタン領域LT2に含まれる画素G6〜G10のそれぞれに関する重みwBの値が0以上、すなわち重みwR以上であることを示す。
また、図26(C)は、単位パタン領域LT1に含まれる画素G1及びG5並びに単位パタン領域LT2に含まれる画素G7〜G9のそれぞれに関する重みwBの値が0以上、すなわち重みwR以上であることを示し、且つ、単位パタン領域LT1に含まれる画素G2〜G4並びに単位パタン領域LT2に含まれる画素G6及びG10のそれぞれに関する重みwBの値が0以下、すなわち重みwR以下であることを示す。
また、図26(B)及び図26(C)の何れにおいても、推移線TL1の軌跡は、推移線TL2の軌跡の正負を反転させた関係にある。具体的には、単位パタン領域LT1の中心から輪郭に向かう際の重みwBの推移線TL1の軌跡は、単位パタン領域LT2の中心から輪郭に向かう際の重みwBの推移線TL2の軌跡の正負を反転させた関係にある。重みwRについても同様である。
その後、制御部1は、導き出した「重み」の値wBを必要に応じて修正する。本実施例では、制御部1は、加算修正及び乗算修正を実行する。加算修正は、「重み」の値wBに加算修正値を加算する処理である。加算修正値は、望ましくは、「重み」の値wBの最大値と最小値とを反転できる大きさを有し、「重み」の値wBが−1以上1以下の場合、−2以上2以下の値を取り得る。本実施例では、加算修正値の値が大きいほど、「重み」の値wBが大きくなり、後方カメラ2Bの入力画像における画素値の影響が大きくなる。乗算処理は、「重み」の値wBに乗算修正値を乗算する処理である。乗算修正値は、0以上1以下の値を取り得る。本実施例では、乗算修正値の値が小さいほど、「重み」の値wBがゼロ(中間値)に近づき、出力画像における画素値は、後方カメラ2Bの入力画像における画素値と右側方カメラ2Rの入力画像における画素値との単純平均に近づく。そして、乗算修正値の値がゼロのときに値wBが値wRと等しくなり、値wB及び値wRを用いて算出される加重平均値は単純平均値となる。
本実施例では、制御部1は、加算修正の一例である周辺減光対策処理を実行する。図27は、周辺減光対策処理を説明する図である。周辺減光対策処理は、周辺光量の低下に起因する入力画像の周辺部の暗さを目立たなくする処理である。
具体的には、制御部1は、後方カメラ2Bの入力画像における画素の位置に応じた加算修正値CB1を導き出し、導き出した加算修正値CB1を0以上1以下の値に丸め処理(最小値0、最大値1で制限)した後に−2を乗じた値を、対応する「重み」の値wBに加算する。なお、加算修正値CB1に−2(負値)を乗ずるのは、後方カメラ2Bの入力画像の周辺部における画素値の重みの値wBを小さくしてその画素値の影響を小さくするためである。
加算修正値CB1は、以下の式で表される。なお、B0は急峻さを表すパラメータであり、例えば、1≦B0≦52である。また、rは後方カメラ2Bの入力画像の中心点からの半径[ピクセル]を表す。また、B1は加算修正値CB1が値1に達するときのrの値を表し、本実施例では400[ピクセル]である。
同様に、制御部1は、右側方カメラ2Rの入力画像における画素の位置に応じた加算修正値CR1(図示省略。)を導き出し、導き出した加算修正値CR1を0以上1以下の値に丸め処理(最小値0、最大値1で制限)した後に+2を乗じた値を、対応する「重み」の値wBに加算する。なお、加算修正値CR1に+2(正値)を乗ずるのは、後方カメラ2Bの入力画像における画素値の重みの値wBを大きくしてその画素値の影響を大きくすることで、右側方カメラ2Rの入力画像の周辺部における画素値の影響を小さくするためである。
また、制御部1は、加算修正の別の一例であるサイドエッジ対策処理を実行する。図28は、サイドエッジ対策処理を説明する図である。サイドエッジ対策処理は、一方の入力画像の側端部の画素に対応する出力画像上の画素が、他方の入力画像の画素に対応する出力画像上の画素に隣接したときの画素値の急激な変化を目立たなくする処理である。
具体的には、制御部1は、後方カメラ2Bの入力画像における画素の位置に応じた加算修正値CB2を導き出し、導き出した加算修正値CB2を0以上1以下の値に丸め処理(最小値0、最大値1で制限)した後に−2を乗じた値を、対応する「重み」の値wBに加算する。なお、加算修正値CB2に−2(負値)を乗ずるのは、後方カメラ2Bの入力画像の側端部における画素値の重みの値wBを小さくしてその画素値の影響を小さくするためである。
加算修正値CB2は、以下の式で表される。なお、B2は急峻さを表すパラメータであり、例えば、0≦B2≦1である。また、xは後方カメラ2Bの入力画像の中心点からの水平距離[ピクセル]を表す。また、B3は加算修正値CB2が値1に達するときのxの値を表し、本実施例では±320[ピクセル]である。
同様に、制御部1は、右側方カメラ2Rの入力画像における画素の位置に応じた加算修正値CR2(図示省略。)を導き出し、導き出した加算修正値CR2を0以上1以下の値に丸め処理(最小値0、最大値1で制限)した後に+2を乗じた値を、対応する「重み」の値wBに加算する。なお、加算修正値CR2に+2(正値)を乗ずるのは、後方カメラ2Bの入力画像における画素値の重みの値wBを大きくしてその画素値の影響を大きくすることで、右側方カメラ2Rの入力画像の側端部における画素値の影響を小さくするためである。
また、制御部1は、乗算修正の一例である遠方領域パタン化対策処理を実行する。図29は、遠方領域パタン化対策処理を説明する図である。なお、図中の白色は、「重み」の値wBが−1であることを表し、図中の黒色は、「重み」の値wBが+1であることを表し、図中の中間色は、「重み」の値wBが−1より大きく+1より小さいことを表す。遠方領域パタン化対策処理は、重複領域に対応する出力画像部分の遠方領域(空間モデルMDの中心から遠い領域)における格子模様を目立たなくする処理である。具体的には、遠方領域パタン化対策処理は、遠方領域における画素の値として採用される加重平均値を単純平均値に近づける。すなわち、乗算修正値をゼロに近づけることによって値wBを値wRに近づける。そのため、遠方領域パタン化対策処理は、重複領域に対応する出力画像部分の遠方領域以外の領域における立体物像の視認性を維持しながら、遠方領域における立体物像の見栄えを改善できる。なお、遠方領域では、見下ろし画像としての性質が弱まるため中心に近い領域に比べて立体物像の消失が発生しにくい。そのため、画素値として採用される加重平均値が単純平均値に近づいたとしても、出力画像を視認する操作者は、立体物像の存在を適切に認識できる。
具体的には、制御部1は、出力画像における画素の位置に応じた乗算修正値CPを導き出し、導き出した乗算修正値CPを、対応する「重み」の値wBに乗算する。遠方領域における画素の値を、後方カメラ2Bの入力画像における画素の値と右側方カメラ2Rの入力画像における画素の値との単純平均に近づけるためである。
乗算修正値CPは、以下の式で表される。なお、B4は急峻さを表すパラメータであり、例えば、0≦B4≦10である。また、Rは空間モデルMDの中心点からの半径[ピクセル]を表す。また、B5は乗算修正値CPが変曲点に達するときのRの値を表し、本実施例では150[ピクセル]である。
このように、制御部1は、加算修正及び乗算修正を実行して「重み」の値wBを修正する。本実施例では、制御部1は、以下の式で示すように「重み」の値wBを修正する。なお、以下の式において値w'Bは修正後の値を表す。
なお、制御部1は、周辺減光対策処理、サイドエッジ対策処理、及び遠方領域パタン化対策処理の少なくとも1つを省略してもよい。例えば、制御部1は、周辺減光対策処理、サイドエッジ対策処理、及び遠方領域パタン化対策処理の全てを省略してもよく、周辺減光対策処理又はサイドエッジ対策処理を省略してもよい。
その後、制御部1は、修正した「重み」の値w'Bをハードウェアに実装可能な形式に換算する。本実施例では、制御部1は、「重み」の値w'Bを0以上255以下の値にスケール変換する。二進数演算に適した値とするためである。
また、制御部1は、後方カメラ2Bの入力画像における画素値の「重み」の値w'Bと右側方カメラ2Rの入力画像における画素値の「重み」の値w'Rとの合計が255となるように値w'B、w'Rを導き出す。なお、値w'Rは、修正した「重み」の値w'Bから導き出される値である。
例えば、制御部1は、後方カメラ2Bの入力画像における画素値の「重み」の値w'Bが最大値である255であれば、右側方カメラ2Rの入力画像における画素値の「重み」の値w'Rを最小値である0とする。この場合、制御部1は、右側方カメラ2Rの入力画像における画素値の寄与度をゼロとし、後方カメラ2Bの入力画像における画素値をそのまま出力画像の画素値として用いる。
或いは、制御部1は、値w'Bが最小値である0であれば、値w'Rを最大値である255とする。この場合、制御部1は、後方カメラ2Bの入力画像における画素値の寄与度をゼロとし、右側方カメラ2Rの入力画像における画素値をそのまま出力画像の画素値として用いる。
或いは、制御部1は、値w'Bが153であれば、値w'Rを102とする。この場合、制御部1は、後方カメラ2Bの入力画像における画素値の寄与度と右側方カメラ2Rの入力画像における画素値の寄与度との比が3:2となるように出力画像の画素値を決定する。
本実施例では、後方カメラ2Bの入力画像における画素値と右側方カメラ2Rの入力画像における画素値との加重平均は、制御部1の出力画像生成手段11における加重平均部112(図11参照。)を用いて実行される。加重平均部112は、後方カメラ2Bの入力画像における画素値の重みw'Bに基づいて出力画像における画素値を導き出す。例えば、後方カメラ2Bの入力画像における画素値がYCbCr方式の色データ(Y3、Cb3、Cr3)を有し、右側方カメラ2Rの入力画像における画素値が色データ(Y4、Cb4、Cr4)を有する場合を考える。なお、Y3、Y4は輝度信号であり、例えば、256段階(8ビット)のレベルを有する。また、Cb3、Cb4、Cr3、Cr4は色差信号であり、例えば、256段階(8ビット)のレベルを有する。この場合、輝度信号Yは、Y={w'B×Y3+(255−w'B)×Y4}/256で表される。また、色差信号Cbは、Cb={w'B×Cb3+(255−w'B)×Cb4}/256で表され、色差信号Crは、Cr={w'B×Cr3+(255−w'B)×Cr4}/256で表される。なお、値「256」の代わりに値「255」を用いるのは上述の理由による。また、値「256」による除算は、8回の右シフト演算によって実現される。この構成により、画像生成装置100は、補間処理における加重平均と同様、平均化境界処理における加重平均に関してもFPGA等による組込実装に適した低演算量を実現できる。そのため、画像生成装置100は、補間処理に加えて平均化境界処理を実装する場合であっても、除算回路等の搭載を回避できる。
図30は、平均化境界処理の効果を説明する図であり、図30(A)は、平均化境界処理を適用せずに格子模様形成処理を適用して生成された出力画像の1例を示す。また、図30(B)は、平均化境界処理を適用して生成された出力画像の1例であり、重複領域に対応する出力画像部分において後方カメラ2Bの入力画像における画素値と側方カメラ2L、2Rの入力画像における画素値とが加重平均された状態を示す。また、図30(C)は、平均化境界処理を適用して生成された出力画像の別の1例であり、重複領域に対応する出力画像部分において後方カメラ2Bの入力画像における画素値と側方カメラ2L、2Rの入力画像における画素値とが単純平均された状態を示す。なお、画像生成装置100は、平均化境界処理を適用して図30(A)に示す出力画像を生成することもできる。
図30に示すように、重複領域に対応する出力画像部分における立体物像の視認性は、図30(A)において最も高く、図30(B)、図30(C)の順に低下する。すなわち、操作者は、図30(A)に示す出力画像において重複領域に対応する出力画像部分の立体物像を最もはっきりと視認でき、図30(B)、図30(C)に示す出力画像では、加重平均又は単純平均による画素値の混合により立体物像がぼやけて立体物像を視認しにくくなる。
一方で、重複領域に対応する出力画像部分の見栄えは、図30(C)において最も良く、図30(B)、図30(A)の順に低下する。すなわち、操作者は、図30(C)に示す出力画像では格子模様に煩わされることはないが、図30(B)、図30(A)に示す出力画像では、格子模様の存在により不自然さを感じる場合がある。
上述の性質を踏まえ、画像生成装置100の操作者は、ショベルの作業環境、天候、周囲の明るさ等に応じて、トレードオフの関係にある視認性と見栄えのバランスを自由に調整できる。その結果、操作者は、出力画像の見栄えを必要に応じて改善できる。
次に、図31を参照して、出力画像生成手段11が出力画像における画素の位置に応じて平均化境界処理と補間処理とを選択的に実行して出力画像を改善する処理(以下、「出力画像改善処理」とする。)の流れについて説明する。なお、図31は、出力画像改善処理の流れを示すフローチャートである。また、出力画像生成手段11は、例えば、図7のステップS5において図12の補間処理を単独で実行する代わりに、この出力画像改善処理を実行する。
最初に、出力画像生成手段11は、画素値を導き出そうとする画素が、重複領域に対応する出力画像部分に属するか否かを判定する(ステップS61)。
重複領域に対応する出力画像部分に属すると判定した場合(ステップS61のYES)、出力画像生成手段11は平均化境界処理を実行する(ステップS62)。
一方で、重複領域に対応する出力画像部分に属さないと判定した場合(ステップS61のNO)、出力画像生成手段11は補間処理を実行する(ステップS63)。
なお、平均化境界処理における加重平均と補間処理における加重平均は何れも出力画像生成手段11の加重平均部112によって実行される。本実施例では、加重平均部112は、それら2つを特に区別することなく、二進数演算を用いて加重平均を実行する。具体的には、加重平均部112は、補間処理では、重みαを用いて1つの入力画像における2つの画素値を加重平均し、平均化境界処理では、重みwを用いて2つの入力画像における2つの画素値を加重平均する。そのため、画像生成装置100は、平均化境界処理における加重平均のための機能要素と、補間処理における加重平均のための機能要素とを別々に用意する必要はない。この構成は、出力画像生成手段11がFPGAで実現される場合等、制御部1のリソースに一定の制限がある場合に有効である。
以上の構成により、画像生成装置100は、出力画像平面に設定される「場」の値を用いて一方のカメラの入力画像における画素値の重みと他方のカメラの入力画像における画素値の重みとを調整可能に決定する。なお、「場」の値は、撮像範囲が一部重複する2つのカメラのうちの一方のカメラを波源とする波と他方のカメラを波源とする波の合成波の振幅に関する物理量である。そして、一方のカメラの入力画像における画素値と他方のカメラの入力画像における画素値とを加重平均することで重複領域に対応する出力画像部分における画素の値を導き出す。そのため、トレードオフの関係にある出力画像の視認性と見栄えとのバランスを自由に調整でき、必要に応じて出力画像部分の見栄えを改善できる。
また、制御部1は、上述の2つの波の合成波の振幅に関する物理量である「場」の値を、一方のカメラの入力画像における画素値の「重み」の値に変換する。また、他方のカメラの入力画像における画素値の「重み」の値を、一方のカメラの入力画像における画素値の「重み」の値から導き出す。また、一方のカメラの入力画像における画素値の「重み」の値、及び、他方のカメラの入力画像における画素値の「重み」の値を何れも所定範囲(例えば0以上255以下)内の値に変換する。また、一方のカメラの入力画像における画素値の「重み」の値と、他方のカメラの入力画像における画素値の「重み」の値の合計を常に一定(例えば255)に維持する。そのため、画像生成装置100は、平均化境界処理における加重平均に関し、FPGA等による組込実装に適した低演算量を実現できる。
また、制御部1は、所定の変換曲線を用いて、「場」の値を一方のカメラの入力画像における画素値の「重み」の値に変換する。そのため、画像生成装置100は、重複領域に対応する出力画像部分における各画素に関し、2つのカメラの位置関係に基づいて2つのカメラのそれぞれの入力画像における画素値の「重み」の値を一意に決定できる。
また、制御部1は、2つの入力画像のそれぞれの周辺部の画素の値の重みを低めに修正する。そのため、画像生成装置100は、重複領域に対応する出力画像部分において、周辺光量の低下に起因する入力画像の周辺部の暗さを目立たなくすることができる。
また、制御部1は、2つの入力画像のそれぞれの側端部の画素の値の重みを低めに修正する。そのため、画像生成装置100は、重複領域に対応する出力画像部分において、一方の入力画像の側端部の画素に対応する出力画像上の画素が、他方の入力画像の画素に対応する出力画像上の画素に隣接したときの画素値の急激な変化を目立たなくすることができる。
また、制御部1は、重複領域に対応する出力画像部分の遠方領域における画素に関し、一方のカメラの入力画像の画素値の重みが、他方のカメラの入力画像の画素値の重みに近づくように、2つの入力画像のそれぞれの画素値の重みを修正する。そのため、画像生成装置100は、遠方領域における格子模様を目立たなくすることができる。
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなしに上述した実施例に種々の変形及び置換を加えることができる。
例えば、上述の実施例において、画像生成装置100は、「場」の値f、「重み」の値w、加算修正値CB1、CR1、CB2、CR2、乗算修正値CP、修正した「重み」の値w'等の各種値を演算式を用いて導き出してもよく、予め用意しておいた参照テーブルを用いて導き出してもよい。
また、画像生成装置100は、「重み」の値w、加算修正値CB1、CR1、CB2、CR2、乗算修正値CP等を所定範囲内の値に変換する場合、丸め処理のほか、スケール変換等を用いてもよい。また、個々の演算時に個別に変換処理を行ってもよいし、いくつかの連続する演算の後に変換処理を行ってもよい。
また、画像生成装置100は、空間モデルとして円筒状の空間モデルMDを採用するが、多角柱等の他の柱状の形状を有する空間モデルを採用してもよく、底面及び側面の二面から構成される空間モデルを採用してもよく、或いは、側面のみを有する空間モデルを採用してもよい。
また、画像生成装置100は、バケット、アーム、ブーム、旋回機構等の可動部材を備えながら自走する建設機械にカメラと共に搭載され、周囲画像をその運転者に提示しながらその建設機械の移動及びそれら可動部材の操作を支援する操作支援システムに組み込まれているが、産業用機械若しくは固定式クレーン等のように可動部材を有するが自走はしない他の被操作体にカメラと共に搭載され、それら他の被操作体の操作を支援する操作支援システムに組み入れられてもよい。