【文献】
山下 健策 外3名,3次元情報を用いた車両検出アルゴリズムとそのVLSIアーキテクチャ,電子情報通信学会技術研究報告 Vol.107 No.287 ICD2007−98〜111 集積回路,日本,社団法人電子情報通信学会,2007年10月18日,第107巻 第287号,pp.5-9,ISSN 0913-5685
【文献】
石山 豊 外4名,セグメントベーストステレオにおける対応候補探索,電子情報通信学会技術研究報告 Vol.96 No.491 PRMU96−129〜140 パターン認識・メディア理解,日本,社団法人電子情報通信学会,1997年 1月23日,第96巻 第491号,pp.57-64
(58)【調査した分野】(Int.Cl.,DB名)
前記水平分割部は、前記所定のしきい値として第1しきい値を用いて前記分割を実施して前記水平ラインを複数の第1セグメントに分割し、かつ、前記第1しきい値よりも小さい第2しきい値を用いて前記分割を実施して前記水平ラインを複数の第2セグメントに分割し、
前記視差計算部は、前記第1セグメントそれぞれ、および、前記第2セグメントそれぞれに対して、前記探索範囲において当該セグメントと最も類似する領域との視差および類似度を計算し、
前記視差画像生成部は、前記第1セグメントと前記第2セグメントとで重複する領域について、当該第1セグメントに対して算出された類似度と当該第2セグメントに対して算出された類似度とを比較し、類似度が高いセグメントに対して算出された視差を、当該重複する領域の視差とする
ことを特徴とする請求項2に記載の画像処理装置。
【発明を実施するための形態】
【0012】
(発明の基礎となった知見)
本発明者らが、エッジに沿ってブロックを分割するマッチング処理について鋭意研究したところ、以下に示す課題を知見した。
【0013】
<ブロック形状と処理量について>
画像によりエッジの形状は様々であり、ブロックをエッジに沿って分割すると、ブロックの形状が複雑化する。マッチング処理において、ブロック同士の類似性を計算するために、ブロック内に所属する画素の画素値を取得する必要があるが、ブロックの形状が複雑化することにより、ブロック内に所属する画素の画素値を取得する処理が煩雑化する。
【0014】
具体的に説明すると、分割する前は、範囲指定により一括してブロック内の画素の画素値を取得できていたものが、分割により複雑化したブロックでは、ブロック内に所属する画素とそうでない画素とを区別して取得する必要がある。すなわち、ブロックが複雑化することにより、ブロック内に所属する画素とそうでない画素を区別する処理が新たに発生する。
【0015】
このブロック内に所属する画素とそうでない画素を区別する処理が、ブロックマッチング全体の処理量を増大させる一因になっている。
【0016】
<エッジ分割によるマッチングの冗長化>
エッジは、画像に写る対象物の輪郭である。従って、エッジに沿って注目ブロックを分割した場合、注目ブロックに所属する画素は、同一の対象物を描画している画素である可能性が高い。
【0017】
ところで、画像に写る対象物は、同一の対象物内で奥行に差が出にくいという特徴がある。その結果、同一の対象物を描画している画素からは、ほぼ同一の視差が計算される。
【0018】
従って、画像上の全画素に対して、別々にブロックマッチングを行う構成は、結果の変わらない処理を行う冗長な構成となる可能性がある。
【0019】
<エッジ強度しきい値について>
エッジ検出処理では、通常、画像内の各画素の輝度勾配を計算し、その絶対値をエッジ強度として用いる。エッジ強度について、例えば、オブジェクトの輪郭などは、エッジ強度の強い強エッジとして計算され、オブジェクト表面の凹凸や模様などは、エッジ強度の弱い弱エッジとして計算される傾向にある。
【0020】
エッジを用いたブロックの分割において、ブロックの分割に用いるエッジと分割に用いないエッジと区別するために、エッジ強度のしきい値が設定される。エッジ強度のしきい値について、必要なエッジ(例えば、画像対で画素値が大きく異なる領域とそうでない領域との境界にあるエッジ)を検出できるようにしきい値を設定する必要がある。
【0021】
しかしながら、画像によって、計算されるエッジ強度の分布は様々であり、画像内でもエッジ強度の分布に偏りがある可能性がある。そのような分布内で、必要なエッジがどのあたりに存在するかを知ることは事前に知ることは困難である。その結果、エッジ強度のしきい値として適切な値を設定することが困難になっている。
【0022】
また、ブロックマッチングにおいて、マッチング精度は、ブロックサイズに影響を受ける。例えば、ブロックサイズが小さいと、細やかな高解像の視差を計算できるが、ノイズの影響や画素値の類似する他の領域との区別の困難性により視差エラーが多くなる。逆に、ブロックサイズが大きいと、視差エラーは抑制できるが、小さい領域の対応関係を正確に求めることが困難になる。
【0023】
エッジによってブロックを分割する場合、分割後のブロックサイズは、分割するエッジを識別するために用いるエッジ強度のしきい値に影響を受ける。すなわち、分割に用いるエッジを識別するしきい値として高い値を用いると、強エッジのみによって分割されるので、ブロックサイズは比較的大きくなり、しきい値として低い値を用いると、弱エッジによっても分割されるので、ブロックサイズは比較的小さくなる。
【0024】
この理由により、マッチング精度にも影響を与えることになるため、エッジ強度のしきい値に適切な値を設定することがさらに困難になっている。
【0025】
本発明者らは、上述の知見を基礎として、以下に示す発明を想到するに至ったものである。以下、本発明の実施の形態について、図面を参照しながら説明する。
(1.実施の形態1)
<1−1.構成>
まず、本実施の形態に係る画像処理装置の構成について説明する。
図1は、本実施の形態に係る画像処理装置100の機能構成図である。
図1に示すように、画像処理装置100は、カメラ110、カメラ111、前処理部120、前処理部121、垂直エッジ抽出部130、水平分割部140、視差計算部150、視差画像生成部160、および、視差補正部170を備える。
【0026】
カメラ110およびカメラ111は、対象物を異なる位置から同時に撮影することにより、一対のステレオ画像を生成するステレオカメラである。
【0027】
前処理部120および前処理部121は、カメラ110およびカメラ111の生成したステレオ画像に対して、歪み補正、ステレオ平行化(エピポーラ幾何におけるエピポーラ線の平行化)などの前処理を行う。
図2に、前処理部120および121によって前処理の施されたステレオ画像を示す。
図2において、画像200は、カメラ110によって撮影され、前処理部120によって前処理の施された画像を示し、画像201は、カメラ111によって撮影され、前処理部121によって前処理の施された画像を示す。
【0028】
図1の垂直エッジ抽出部130は、前処理部121により前処理が施された画像201から垂直エッジを抽出する。具体的には、垂直エッジ抽出部130は、画像201に対して、水平方向のSobelフィルタを適用させて、画素ごとに水平方向の輝度勾配を求め、その絶対値を垂直エッジ強度として計算する。
【0029】
図3のフィルタ300は、水平方向のSobelフィルタを模式的に示している。Sobelフィルタは、注目画素を中心とした9つの画素の画素値に対して、図に示す係数を乗算し、乗算結果の総和を計算するフィルタである。
【0030】
フィルタ処理によって抽出されるエッジは、複数の画素にわたる幅を持つことがある。そこで、垂直エッジ抽出部130は、計算した垂直エッジ強度について、水平方向のピーク位置(隣接画素よりも垂直エッジ強度が強い画素の位置)を検出し、ピーク位置の垂直エッジ強度のみ残し、その他の垂直エッジ強度を0とする細線化処理を行う。
【0031】
図3の画像301は、画像201から、垂直エッジを抽出し、細線化を行った例を示している。なお、図は、画像201のすべての画素の垂直エッジが抽出された様子を示しているが、これは説明のために示したものであり、本実施の形態において、垂直エッジ抽出部130は、画像201の水平ライン単位で垂直エッジの抽出処理を行う。
【0032】
図1の水平分割部140は、前処理部121により前処理が施された画像201の水平ラインを、垂直エッジ抽出部130で算出した垂直エッジ強度を用いて分割する。具体的には、水平分割部140は、垂直エッジ強度が所定のしきい値を超える画素を境界として、水平ラインを複数の水平セグメントに分割する。さらに、水平分割部140は、複数のしきい値を用いて上述した水平ラインの分割を行うことにより、水平セグメントを階層化する。
【0033】
図4を用いて、水平分割部140の行う、水平ラインの水平セグメントへの分割および水平セグメントの階層化について、詳細に説明する。
【0034】
図4(a)は、画像201の処理対象となる水平ラインについて、垂直エッジ抽出部130により細線化を行った後の垂直エッジ強度をグラフ化したものである。横軸は、画像201のX座標を示し、縦軸は計算された垂直エッジ強度を示す。図に示すように、細線化処理により、垂直エッジ強度のうち極値以外の値は0に補正され、エッジの位置が明確になっている。なお、しきいちTh1、Th2、および、Th3は、分割に用いる複数のしきい値である。
【0035】
図4(b)は、複数のしきい値を用いて、画像201の処理対象の水平ラインを分割する処理を模式的に示した図である。図の例では、しきい値Th1を用いて分割を行うと、処理対象の水平ラインは、seg1−1、seg1−2およびseg1−3の3つの水平セグメントに分割される。また、しきい値Th2を用いて分割を行うと、処理対象の水平ラインは、seg2−1、seg2−2、seg2−3、seg2−4、seg2−5およびseg2−6の6つの水平セグメントに分割される。さらに、しきい値Th3を用いて分割を行うと、処理対象の水平ラインは、seg3−1からseg3−9の9つの水平セグメントに分割される。なお、本実施の形態では、分割する境界となる画素について、前後のセグメントのうちどちらか一方のセグメントに固定的に所属させる。
【0036】
しきい値Th1よりも小さいしきい値Th2を超えるエッジは、しきい値Th1を超えるエッジを含んでいるため、しきい値Th2による分割結果の水平セグメントは、しきい値Th1による分割結果の水平セグメントをさらに分割したセグメントとなる。例えば、しきい値Th2を用いて分割して得たseg2−2およびseg2−3は、しきい値Th1を用いて分割して得たseg1−2をさらに分割した水平セグメントとなる。しきい値Th2としきい値Th3とを用いて分割された結果の水平セグメントの関係もまた同様である。
【0037】
このように、複数のしきい値を用いて分割した場合、分割結果の水平セグメントは、階層構造を有するようになる。従って、本明細書では、複数のしきい値を用いて水平ラインを水平セグメントに分割することを、水平セグメントの階層化と呼ぶ。なお、より値の大きいしきい値を用いて分割して得た水平セグメントをより上位階層の水平セグメントとし、より値の小さいしきい値を用いて分割して得た水平セグメントをより下位階層の水平セグメントとする。
【0038】
水平分割部140は、分割結果の水平セグメントそれぞれについて、セグメントの位置(X座標およびY座標)、セグメントサイズ、および、セグメントに所属する画素それぞれの画素値を対応付けたセグメントデータを生成し、視差探索部150へ出力する。
【0039】
図1の視差探索部150は、水平分割部140から入力されるセグメントデータそれぞれに対して、前処理部120から入力される画像200上で類似する領域を検出し、検出した領域との間の視差および類似度を計算する。
【0040】
本実施の形態において、類似する領域の検出には、ブロックマッチングでよく用いられる差分絶対和(SAD:Sum of Absolute Difference)を用いる。SADは、2つの集まりの類似性を示す指標であり、2つの集まりは、SADの値が小さいほど類似していると言える。
【0041】
水平分割部140から入力される水平セグメントをセグメントi(X座標:x
i,Y座標:y
i,セグメントサイズ:N)とすると、セグメントiと、画像200上の視差量dに対応する領域とのSADは、以下の式(1)で与えることができる。
【0042】
【数1】
上記式(1)において、I
L(x,y)は、画像201の座標(x,y)における画素値を示し、I
R(x,y)は、画像200の座標(x,y)における画素値を示す。
【0043】
視差探索部150は、あらかじめ定められた探索範囲で視差量dを変化させ、最小のSADを与える視差量dを検出し、検出した視差量dをセグメントiの視差D
iとする。
【0044】
図5は、探索範囲内で視差量dを変化させて計算したSADを示すグラフの一例である。
図5において、R
iは、探索範囲内におけるSADの最小値であり、以下の式(2)で与えられる。
【0045】
【数2】
R
iは、上述したように類似性の指標となる値であるが、セグメントサイズに依存した値であり、サイズの違うセグメント同士で単純に比較をすることができない。サイズの違うセグメント同士で比較を行うためには、R
iをセグメントサイズNで正規化した値で比較する必要がある。
【0046】
そこで、視差探索部150は、セグメントiと検出した領域との間の類似度S
iを、以下の式(3)を用いて計算する。
【0047】
【数3】
なお、上記式(3)では、セグメントiと検出された領域との間の類似性が高いほど、類似度S
iが大きな値を示すように、R
iをセグメントサイズNで正規化した値の逆数を類似度S
iとしている。
【0048】
視差探索部150は、セグメントの視差および類似度を計算すると、セグメントの位置、セグメントサイズ、視差、および類似度を対応付けた視差データを生成し、視差画像生成部160へ出力する。
【0049】
図6は、
図1の視差画像生成部160の内部構成を示した図である。
図6に示すように、視差画像生成部160は、内部に階層間比較部161、視差・類似度格納部162および視差画像構築部163を備える。
【0050】
階層間比較部161は、視差探索部150から入力される視差データが、上位階層のない最上位の水平セグメントのものである場合は、視差データを更新せずに、そのまま視差・類似度格納部162および視差画像構築部163に出力する。
【0051】
階層間比較部161は、視差探索部150から入力される視差データが、最上位の水平セグメントのものでない場合は、以下に示す階層間比較処理を実施し、処理結果の視差データを視差・類似度格納部162および視差画像構築部163に出力する。このとき、視差探索部150から入力される視差データの示す水平セグメント(処理セグメント)の1つ上位階層の水平セグメントであって、視差探索部150から入力される水平セグメントと重複する領域を持つ水平セグメント(親セグメント)の視差データが、既に視差・類似度格納部162に記憶されている。
【0052】
階層間比較処理を開始すると、階層間比較部161は、視差・類似度格納部162から親セグメントの視差データを取得し、親セグメントの類似度と、処理セグメントの類似度を比較する。親セグメントの類似度が、処理セグメントの類似度よりも大きい場合、階層間比較部161は、処理セグメントの視差データの視差および類似度を、親セグメントの視差データの視差および類似度に更新し、更新した視差データを視差・類似度格納部162および視差画像構築部163に出力する。親セグメントの類似度が、処理セグメントの類似度以下の場合、階層間比較部161は、処理セグメントの視差データをそのまま視差・類似度格納部162および視差画像構築部163に出力する。以上が、階層間比較部161の行う階層間比較処理である。
【0053】
視差・類似度格納部162は、階層間比較部161から入力される視差データを一時的に記憶する一時記憶領域である。
【0054】
視差画像構築部163は、階層間比較部162から入力される視差データに従って、視差画像を構築する。具体的には、視差画像構築部163は、画像全画素の視差を格納する記憶領域(図示せず)に対して、視差データの示す位置およびセグメントサイズに対応する画素それぞれの視差を、視差データの示す視差に更新していくことによって1つの視差画像を構築していく。
【0055】
図1の視差画像補正部170は、視差画像生成部160で生成された視差画像について、水平方向よりも垂直方向に長いノイズ除去フィルタによるノイズ除去処理を行って、ノイズ除去された視差画像を生成する。なお、本実施の形態では、ノイズ除去フィルタとして、メディアンフィルタを用いる。
【0056】
図7は、色の薄い領域ほど視差の大きい領域を示す視差画像の一例である。視差画像生成部160で生成される視差画像において、視差エラーは、
図7の符号701、702および703に示すように、水平方向に長い水平セグメント単位で発生する。垂直方向よりも水平方向に長い視差エラーは、水平方向よりも垂直方向に長いノイズ除去フィルタを用いることで、フィルタに含まれる正常な画素(視差エラーではない画素)の割合が高まり、効果的に視差エラーを除去することが可能である。
【0057】
前処理部120、前処理部121、垂直エッジ130、水平分割部140、視差探索部150、視差画像構成部160および視差画像補正部170の各機能ブロックは、画像処理装置100を構成する図示しないCPUが、画像処理装置100を構成する図示しないメモリに記憶されているプログラムを実行することで実現される。かかる構成により、本実施の形態に係る画像処理装置100は、カメラ110および111で撮影した画像200および画像201から視差画像を生成する。
<1−2.動作>
次に、本実施の形態に係る画像処理装置100の動作について説明する。
【0058】
図8は、画像処理装置100の動作を示すフローチャートである。
図8に示すように、画像処理装置100は処理を開始すると、まず、カメラ110および111が、画像200および画像201を取得し、前処理部120および121が、画像200および画像201に対して前処理を施す(S801)。
【0059】
次に、画像処理装置100は、処理対象となる水平ラインを決定し、処理対象のラインに対してステップS803〜S810の処理を実行する。画像処理装置100は、すべての水平ラインに対して処理を実行するまでループ処理を行う(S802)。
【0060】
垂直エッジ抽出部130は、画像201の処理対象の水平ラインおよび前後1つずつの計3つの水平ラインの画素値を取得し、処理対象の水平ラインの各画素について、垂直エッジ強度を計算する(S803)。
【0061】
画像処理装置100は、あらかじめ定められている複数のエッジ強度のしきい値について、しきい値の大きい順にしきい値を1つ選択し、ステップS805〜S809の処理を実行する。画像処理装置100は、すべてのしきい値に対して処理を実行するまでループ処理を行う(S804)。
【0062】
水平分割部140は、垂直エッジ抽出部で計算された処理対象の水平ラインの各画素の垂直エッジ強度およびS804で選択されたしきい値を用いて、画像201の水平ラインを複数のセグメントに分割し、セグメントデータを生成する(S805)。
【0063】
視差探索部150は、水平分割部140の生成した複数のセグメントデータそれぞれに対して視差および類似度を計算し、視差データを生成する(S806)。
【0064】
階層間比較部162は、視差探索部150で生成した視差データおよび視差・類似度格納部161で記憶してある視差データを用いて階層間比較処理を実行する(S807)。
【0065】
視差画像構築部163は、階層間比較部162から入力される視差データに基づいて視差画像を生成する(S808)。
【0066】
画像処理装置100は、すべてのエッジ強度のしきい値に対して、ステップS805〜S808の処理を実行したか否かを判定し、実行していなければステップS804に戻り、実行していればステップS810に進む(S809)。
【0067】
画像処理装置100は、すべての水平ラインに対して、ステップS803〜S809の処理を実行したか否かを判定し、実行していなければステップS802に戻り、実行していればステップS811に進む(S810)。
【0068】
視差画像補正部170は、視差画像構築部163の生成した視差画像についてノイズ除去処理を行いノイズの除去された視差画像を生成する。
【0069】
上記処理ステップS801〜S811の処理を実行して、画像処理装置100は、視差画像を生成する。
<1−3.まとめ>
本実施の形態に係る画像処理装置100は、水平ラインを分割した水平セグメントをブロックとして、ブロックマッチングを行っている。水平セグメントは、画像における位置およびサイズを指定するだけで一括してブロックに所属する画素の画素値を取得できる。すなわち、画像処理装置100は、ライン単位で処理を行うことで、ブロックの形状が複雑化することを防止している。
【0070】
また、画像処理装置100は、水平セグメント単位で計算した視差に基づいて、視差画像の生成を行っている。同一の対象物は、同一の奥行を持つということを仮定しているが、この構成によると、画像処理装置100は、冗長な処理を排除して、少ない演算量で画像の視差を計算することができる。
【0071】
さらに、画像処理装置100は、複数のしきい値を用いて、階層化された水平セグメントでブロックマッチングを行っている。この構成によると、画像処理装置100は、複数のしきい値を用いることで、より多くの画像で、適切なエッジを検出することが可能になり、その結果、適切なエッジを用いて分割されたセグメントでマッチング処理を行うことが可能となる。
【0072】
また、画像処理装置100は、階層化された水平セグメントを、上位階層から下位階層へ、順にブロックマッチングを行い、信頼度を伝播させながら、徐々にブロックサイズを縮小している。この構成によると、画像処理装置100は、ブロックサイズに起因する視差エラーの発生を抑制しつつ、高解像の視差画像を生成することが可能である。
【0073】
さらに、エピポーラ線の平行化のされたステレオ画像は、垂直方向の視差はないという特徴がある。従って、画像処理装置100は、ライン処理を行うことにより、垂直方向に関して、視差エラーを発生させることなく高解像の視差画像を生成することが可能である。
(2.実施の形態2)
実施の形態1でも説明したが、視差画像生成部160で生成される視差画像において、視差エラーは、
図7に示すように、水平セグメント単位で発生する。実施の形態2では、水平セグメント単位で発生する視差エラーを、より効果的に除去できる構成を備えた画像処理装置900について説明する。
<2−1.構成>
図9は、本実施の形態に係る画像処理装置900の機能構成図である。
図9に示すように、画像処理装置900は、画像処理装置100と比較して、視差画像生成部170の代わりに水平エッジ抽出部171、垂直分割部172および垂直処理部173を備える。
【0074】
水平エッジ抽出部171は、垂直エッジ抽出部130の行う処理に関して水平方向と垂直方向を入れ替えた処理を行う。具体的には、水平エッジ抽出部171は、画像201に対して、垂直方向のSobelフィルタを適用させて、画素ごとに垂直方向の輝度勾配を求め、その絶対値を水平エッジ強度として計算する。
【0075】
水平エッジ抽出部171は、垂直エッジ抽出部130と同様に、計算した垂直エッジ強度について、垂直方向のピーク位置を検出し、ピーク位置の水平エッジ強度のみ残し、その他の水平エッジ強度を0とする細線化処理を行う。
【0076】
垂直分割部172は、視差画像生成部160により生成された視差画像の垂直ラインを、水平エッジ抽出部171で算出した水平エッジ強度を用いて分割する。具体的には、垂直分割部172は、水平エッジ強度が所定のしきい値を超える画素を境界として、垂直ラインを複数の垂直セグメントに分割する。水平分割部140と違い、垂直分割部172は、1つのしきい値を用いて分割を行う。
【0077】
垂直分割部172は、分割結果の垂直セグメントそれぞれについて、セグメントの位置(X座標およびY座標)、セグメントサイズ、および、セグメントに所属する画素それぞれの視差を対応付けた垂直セグメントデータを生成し、垂直処理部173へ出力する。
【0078】
垂直処理部173は、垂直分割部172から入力される垂直セグメントデータに従って、視差画像を補正する。具体的には、まず、垂直処理部173は、入力される垂直セグメントデータごとに、各セグメントに所属する画素の視差の中央値を計算する。次に、垂直処理部173は、画像全画素の視差を格納する記憶領域に対して、垂直セグメントデータの示す位置およびセグメントサイズに対応する画素それぞれの視差を、算出した中央値に更新していくことによって、視差画像を補正する。
【0079】
かかる構成により、本実施の形態に係る画像処理装置900は、カメラ110および111で撮影した画像200および画像201から視差画像を生成する。
<2−2.動作>
次に、画像処理装置900の動作について説明する。画像処理装置900は、画像処理装置100と比較して、視差画像補正部170の行うステップS811の処理の代わりに、
図10にフローチャートを示す垂直補正処理を行う。
【0080】
画像処理装置900は、垂直補正処理を開始すると、処理対象となる垂直ラインを決定し、処理対象のラインに対してステップS1002〜S1005の処理を実行する。画像処理装置900は、すべての垂直ラインに対して処理を実行するまでループ処理を行う(S1001)。
【0081】
水平エッジ抽出部171は、画像201の処理対象の垂直ラインおよび前後1つずつの計3つの垂直ラインの画素値を取得し、処理対象の垂直ラインの各画素について、水平エッジ強度を計算する(S1002)。
【0082】
垂直分割部172は、水平エッジ抽出部で計算された処理対象の垂直ラインの各画素の水平エッジ強度およびあらかじめ定められたしきい値を用いて、視差画像生成部160の生成した視差画像の処理対象の垂直ラインを複数のセグメントに分割し、垂直セグメントデータを生成する(S1003)。
【0083】
垂直処理部173は、垂直分割部172から入力される垂直セグメントデータに基づいて視差画像を補正する(S1004)。
【0084】
画像処理装置900は、すべての垂直ラインに対して、ステップS1002〜S1004の処理を実行したか否かを判定し、実行していなければステップS1001に戻り、実行していれば垂直補正処理を終了する(S1005)。
<2−3.まとめ>
実施の形態2に係る画像処理装置900によれば、水平エッジによって分割された垂直セグメント単位で、視差画像の補正を行っている。上述したように、エッジによって分割されたセグメント内の画素は、同一の対象物を描画している画素である可能性が高い。そして、同一の対象物は、同一の奥行を持つという仮定によると、垂直セグメント内の画素の視差は、視差エラーが混入していなければ、ほぼ同じ値を持っているはずである。視差エラーは、特異的に発生することを考えると、垂直セグメント内の画素の中央値は、対象物の視差を示していることになる。従って、画像処理装置900によって、効率的に視差エラーを除去することが可能である。
(3.補足)
以上、本発明に係る画像処理装置の実施の形態を説明したが、例示した画像処理装置を以下のように変形することも可能であり、本発明は、上述の実施形態で示した画像処理装置に限られるものではない。以下、本発明の思想に含まれる各種変形例について説明する。
【0085】
(3−1)上述の実施形態において、水平分割部130および垂直分割部172で用いられるしきい値は、あらかじめ定められている値を用いるとしたが、これに限られるものではない。例えば、計算された垂直エッジ強度や水平エッジ強度に応じて、画像処理装置のユーザが入力した値を用いてもよい。また、画像処理装置100または画像処理装置900は、新たな構成要素として、垂直エッジ抽出部130で計算した垂直エッジ強度の分布から、特定の割合の数の垂直エッジ強度を識別するしきい値を計算するしきい値設定部を備えてもよい。例えば、ある水平ラインに対して、細線化されたエッジが10個検出され、3割のエッジを識別するのであれば、エッジ強度の順番で、上から3つ目のエッジ強度と4つ目のエッジ強度の間の値をエッジ強度として設定すればよい。
【0086】
(3−2)上述の実施形態において、視差探索部150が水平セグメントの視差計算に用いる探索範囲は、あらかじめ定められたものとしているが、これに限られるものではない。
【0087】
マッチング処理において、画像200の同一水平ライン上のすべての領域に対して類似度計算を行うと、膨大な演算量が必要となるため、通常、探索範囲を設定する。しかしながら、別の実施の形態では、ハードウェアの処理能力に応じて、探索範囲を設定せずに画像200の同一水平ライン上のすべての領域に対して類似度計算を行ってもよい。
【0088】
また、探索範囲は、通常、視差量0を基準視差量として、視差の生じる方向(交差視差と平行視差とでは方向が異なる)に所定範囲を探索範囲として用いる。しかしながら、別の実施の形態では、新たな構成要素として、例えば、上位階層で算出した視差を基準視差量として、基準視差量を中心に所定範囲を探索範囲として設定する探索範囲設定部を備えてもよい。
【0089】
(3−3)上述の実施の形態において、垂直エッジ抽出部130は、垂直エッジを抽出するフィルタとして、水平方向のSobelフィルタを用いるとしたが、これに限られるものではない。垂直エッジを抽出するフィルタは、水平方向の輝度勾配を計算できればよく、例えば、
図11の符号1101、1102、1103および1104に示されるようなフィルタを用いてもよい。特に、フィルタ1102、1103および1104を用いると、処理対象の水平ラインの画素値のみで、輝度勾配を計算できる。
【0090】
(3−4)上述の実施形態において、ブロックマッチングにおける類似性の計算にSADを用いるとしたが、これに限られるものではない。ブロックマッチングにおいて、例えば、差分二乗和(SSD:Sum of Squared Difference)や正規化相互相関値(NCC:Normalized Cross Correlation)などが類似性の計算によく用いられるが、別の実施の形態ではこれらを用いてもよい。
【0091】
SSDは、例えば、以下に示す式(4)で与えられる。
【0092】
【数4】
また、NCCは、例えば、以下に示す式(5)で与えられる。
【0093】
【数5】
なお、NCCは、値が大きいほど類似性が高く、さらに、セグメントサイズに依存しない値なので類似度S
iとして用いることができる。
【0094】
(3−5)上述の実施の形態において、ノイズ除去フィルタとしてメディアンフィルタを用いるとしたが、これに限られるものではない。例えば、注目画素と周辺画素の画素値の平均値を注目画素の画素値として用いる平均化フィルタなどを用いてもよい。
【0095】
(3−6)上述の実施の形態および各変形例を部分的に組み合わせてもよい。
【0096】
(3−7)上述の実施の形態で示した各処理を、画像処理装置のプロセッサ、及びそのプロセッサに接続された各種回路に実行させるための機械語或いは高級言語のプログラムコードからなる制御プログラムを、記録媒体に記録すること、又は各種通信路等を介して流通させ頒布することもできる。このような記録媒体には、ICカード、ハードディスク、光ディスク、フレキシブルディスク、ROM、フラッシュメモリ等がある。流通、頒布された制御プログラムはプロセッサに読み出され得るメモリ等に格納されることにより利用に供され、そのプロセッサがその制御プログラムを実行することにより各実施形態で示したような各機能が実現されるようになる。なお、プロセッサは、制御プログラムを直接実行する他、コンパイルして実行或いはインタプリタにより実行してもよい。
【0097】
(3−8)実施の形態および変形例で示した各機能構成要素は、その機能を実行する回路として実現されてもよいし、1又は複数のプロセッサによりプログラムを実行することで実現されてもよい。なお、画像処理装置の各機能ブロックは典型的には集積回路であるLSIとして実現される。これらは個別に1チップされてもよいし、一部又は全てを含むように1チップ化されてもよい。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【0098】
(4.補足2)
以下、更に本発明の一実施形態としての通信サーバの構成及びその変形例と効果について説明する。
【0099】
(A)本発明の一実施形態の画像処理装置は、第1画像および第2画像から視差画像を生成する画像処理装置であって、前記第1画像の画素それぞれの垂直エッジのエッジ成分を計算する垂直エッジ抽出部と、前記垂直エッジのエッジ成分の強度が所定のしきい値を超える画素を境界として、前記第1画像の水平ラインを複数のセグメントに分割する水平分割部と、前記セグメントそれぞれに対して、第2画像上で当該セグメントと類似する領域との視差を計算する視差計算部と、
セグメント単位で算出した視差に基づいて、前記視差画像を生成する視差画像生成部を備えることを特徴とする。
【0100】
この構成により、ライン単位で処理を行うことで、エッジによる分割によってブロックの形状が複雑化することを防止し、演算量の増大を抑制することが可能である。さらに、ライン単位で処理を行うことにより、垂直方向に関して、視差エラーを発生させることなく高解像の視差画像を生成することが可能である。
【0101】
また、セグメント単位で計算した視差に基づいて、視差画像の生成することで、演算量を大幅に削減することができる。
【0102】
(B)上記実施形態Aの画像処理装置において、前記視差計算部は、前記セグメントそれぞれに対して、所定の探索範囲において当該セグメントと最も類似する領域との視差を計算するとしてもよい。
【0103】
この構成によると、ハードウェアの処理能力に応じた探索範囲で類似性の計算を行うことができる。
【0104】
(C)上記実施形態Bの画像処理装置において、前記水平分割部は、前記所定のしきい値として第1しきい値を用いて前記分割を実施して前記水平ラインを複数の第1セグメントに分割し、かつ、前記第1しきい値よりも小さい第2しきい値を用いて前記分割を実施して前記水平ラインを複数の第2セグメントに分割し、前記視差計算部は、前記第1セグメントそれぞれ、および、前記第2セグメントそれぞれに対して、前記探索範囲において当該セグメントと最も類似する領域との視差および類似度を計算し、前記視差画像生成部は、前記第1セグメントと前記第2セグメントとで重複する領域について、当該第1セグメントに対して算出された類似度と当該第2セグメントに対して算出された類似度とを比較し、類似度が高いセグメントに対して算出された視差を、当該重複する領域の視差とするとしてもよい。
【0105】
この構成によると、複数のしきい値を用いることで、適切なエッジを用いて水平ラインを分割することが可能となる。また、複数のしきい値を用いて階層化したセグメントに対して、上位階層と下位階層とで、類似度の比較を行うことにより、ブロックサイズに起因する視差エラーの発生を抑制しつつ、高解像の視差画像を生成することが可能である。
【0106】
(D)上記実施形態Cの画像処理装置は、さらに、前記第1セグメントで計算した視差を用いて第2セグメントに対する前記探索範囲を設定する探索範囲設定部を備えるとしてもよい。
【0107】
この構成によると、上位階層で計算したセグメントの情報を下位階層へ伝播させながら、視差を計算することが可能である。
【0108】
(E)上記実施形態Aの画像処理装置は、さらに、前記エッジ成分の強度の分布に応じて前記しきい値を設定するしきい値設定部を備えるとしてもよい。
【0109】
この構成によると、画像に応じて計算される垂直エッジのエッジ強度の分布に従ってしきい値を設定するので、画像ごとに適切なエッジを識別するしきい値を設定することができる。
【0110】
(F)上記実施形態Aの画像処理装置は、さらに、水平方向よりも垂直方向の長いノイズ除去フィルタを用いて、前記視差画像を補正する補正部を備えるとしてもよい。
【0111】
この構成によると、水平方向に長いセグメント単位で発生する視差エラーを効果的に除去することができる。
【0112】
(G)上記実施形態Aの画像処理装置は、前記所定のしきい値を垂直エッジしきい値、前記セグメントを水平セグメントとし、さらに、前記第1画像の各画素の、水平エッジのエッジ成分を計算する水平エッジ抽出部と、前記水平方向のエッジ成分の強度が水平エッジしきい値を超える画素を境界として、前記視差画像の垂直ラインを垂直セグメントに分割する垂直分割部と、前記垂直セグメントごとにノイズ除去を行う垂直処理部を備えるとしてもよい。
【0113】
この構成によると、水平方向に長いセグメント単位で発生する視差エラーを効果的に除去することができる。