直線検出装置、直線検出方法、直線検出プログラム及び撮影システム
【課題】直線をより確実に検出可能な直線検出装置、直線検出方法、直線検出プログラム及び撮影システムを提供する。
【解決手段】入力画像I中のエッジ点piの勾配を算出する勾配方向算出部12Cと、エッジ点をハフ変換して直線を検出する直線検出部12Dと、ハフ変換での投票用の第1のハフ空間部H1と、ハフ変換での投票用の第2のハフ空間部H2とを備える。直線検出部は、ハフ変換する際、第1及び第2の軸によって構成される2次元座標系で、エッジ点の勾配方向と第1の軸方向とのなす角度αiと、2次元座標系の原点に対するエッジ点の方向と第1の軸(x軸)方向とのなす角度βiとの角度差が90度以上であるエッジ点を通る直線群を第1のハフ空間部に投票し、上記角度差が90度未満の場合であるエッジ点を通る直線群を第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出する。
【解決手段】入力画像I中のエッジ点piの勾配を算出する勾配方向算出部12Cと、エッジ点をハフ変換して直線を検出する直線検出部12Dと、ハフ変換での投票用の第1のハフ空間部H1と、ハフ変換での投票用の第2のハフ空間部H2とを備える。直線検出部は、ハフ変換する際、第1及び第2の軸によって構成される2次元座標系で、エッジ点の勾配方向と第1の軸方向とのなす角度αiと、2次元座標系の原点に対するエッジ点の方向と第1の軸(x軸)方向とのなす角度βiとの角度差が90度以上であるエッジ点を通る直線群を第1のハフ空間部に投票し、上記角度差が90度未満の場合であるエッジ点を通る直線群を第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、直線検出装置、直線検出方法、直線検出プログラム及び撮影システムに関する。
【背景技術】
【0002】
画像処理の技術の一つとして、ハフ変換(Hough変換)を利用して入力画像中の直線を検出する技術が知られている(例えば、特許文献1参照)。ハフ変換では、入力画像中のエッジ点を通る直線群を、直線を表すパラメータで構成されるハフ空間に投票する。そして、最大投票数を獲得したパラメータで表される直線を、所定のエッジ点を通る直線として検出する。具体的に図2を参照して説明する。図2は、ハフ変換の原理を示す図面である。入力画像に対してxy座標を設定し、画像内のエッジ点pi(iは、複数のエッジ点を区別するための整数)の座標を(xi,yi)としたとき、エッジ点を通る任意の直線は次式で表される。
ρ=xicosθ+yisinθ
直線を表す上記式中のρは、原点から直線に垂線を引いたときのその垂線の長さ(原点と直線との間の距離)であり、θは、x軸と垂線とのなす角度である。
【0003】
従来、各エッジ点に対する直線群をパラメータ空間としてのρ―θ空間に投票する。このような投票により、一つのエッジ点に対して一つの曲線(理論的には正弦曲線)が描かれる。図3では、3つのエッジ点に対する投票結果として、3つの曲線h1,h2,h3を模式的に示している。この3つの曲線h1〜h3の交点に対応するメモリセルの投票数が最も多くなる。従来のハフ変換では、このように投票数の多い交点を規定するρ及びθの組によって決まる直線を入力画像上の直線として検出していた。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平9−259279号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のハフ変換では2つの直線が近接している場合には、ある閾値以上の投票数のパラメータの組も近接するので、直線を確実に検出ができなかった。
【0006】
本発明は、上記の問題点を解決するためになされたものであり、直線をより確実に検出可能な直線検出装置、直線検出方法、直線検出プログラム及び撮影システムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る直線検出装置は、入力画像中の複数のエッジ点について、各前記エッジ点の勾配方向を取得する勾配方向取得部と、各エッジ点をハフ変換することによって入力画像中の直線を検出する直線検出部と、ハフ変換における投票用の第1のハフ空間部と、ハフ変換における投票用の第2のハフ空間部と、を備え、直線検出部は、各エッジ点をハフ変換する際、入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各エッジ点の勾配の方向と第1の軸の方向とのなす角度と、2次元座標系における原点に対する各エッジ点の方向と第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、上記角度差が90度未満であるエッジ点を通る直線群を、第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出する。
【0008】
本発明に係る直線検出方法は、入力画像中の複数のエッジ点について、各エッジ点の勾配方向を取得する勾配方向取得工程と、各エッジ点をハフ変換することによって入力画像中の直線を検出する直線検出工程と、を備え、直線検出工程では、各エッジ点をハフ変換する際、入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各エッジ点の勾配の方向と第1の軸の方向とのなす角度と、2次元座標系における原点に対する各エッジ点の方向と第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、上記角度差が90度未満の場合であるエッジ点を通る直線群を、第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出する。
【0009】
本発明に係る直線検出プログラムは、コンピュータを、入力画像中の複数のエッジ点について、各エッジ点の勾配方向を取得する勾配方向取得部と、各エッジ点をハフ変換することによって入力画像中の直線を検出する直線検出部と、ハフ変換における投票用の第1のハフ空間部と、ハフ変換における投票用の第2のハフ空間部と、として機能させ、直線検出部は、各エッジ点をハフ変換する際、入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各エッジ点の勾配の方向と第1の軸の方向とのなす角度と、2次元座標系における原点に対する各エッジ点の方向と第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、角度差が90度未満の場合であるエッジ点を通る直線群を、第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出する。
【0010】
入力画像中に含まれる互いに平行な一対の直線のうちの一方の直線上のエッジ点に対して上記角度差が90度以上である場合、他方の直線上のエッジ点に対して上記角度差は90度未満になる。従って、本発明によれば、入力画像中に含まれる互いに平行な一対の直線のうちの一方の直線上のエッジ点を通る直線群は、例えば第1のハフ空間部に投票され、この場合、他方の直線上のエッジ点を通る直線群は、第2のハフ空間部に投票される。すなわち、入力画像中に含まれる互いに平行な一対の直線のうちの一方の直線上のエッジ点と、他方の直線上のエッジ点とは、異なるハフ空間部に投票される。そのため、入力画像中に含まれる互いに平行な一対の直線が近接している場合であっても、より確実に直線を検出することが可能である。
【0011】
本発明に係る直線検出装置では、直線検出部は、上記角度差の余弦値が0以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、上記角度差の余弦値が0未満であるエッジ点を通る直線群を、第2のハフ空間部に投票してもよい。同様に、本発明に係る直線検出方法の直線検出工程では、上記角度差の余弦値が0以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、上記角度差の余弦値が0未満であるエッジ点を通る直線群を、第2のハフ空間部に投票してもよい。
【0012】
この場合、余弦値の0及び正の場合と、余弦値が負の場合とで場合分けがされるので、例えば、コンピュータを利用して上記場合分け処理する際、処理が容易である。
【0013】
本発明に係る直線検出装置では、複数のエッジ点を、上記角度差が90度以上である第1のグループと、上記角度差が90度未満である第2のグループとに分類するグループ化部を有し、直線検出部は、第1のグループ及び第2のグループ内のエッジ点をそれぞれハフ変換し、第1のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を第1のハフ空間部に投票し、第2のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出してもよい。同様に、本発明に係る直線検出方法では、直線検出工程は、複数のエッジ点を、上記角度差が90度以上である第1のグループと、上記角度差が90度未満である第2のグループとに分類するグループ化工程を有し、直線検出工程では、第1のグループ及び第2のグループ内のエッジ点をそれぞれハフ変換し、第1のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を第1のハフ空間部に投票し、第2のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、上記入力画像中の直線を検出してもよい。
【0014】
本発明は、撮影画像を取得する画像取得手段と、上記本発明に係る直線検出装置とを備える撮影システムにも係る。この撮影システムでは、本発明に係る直線検出装置を備えるので、撮影手段により取得された撮影画像中の直線をより高い精度で検出可能である。
【発明の効果】
【0015】
本発明によれば、入力画像中の直線をより確実に検出できる。
【図面の簡単な説明】
【0016】
【図1】本発明に係る直線検出装置の一実施形態を含む撮影システムの構成を概略的に示す図面である。
【図2】ハフ変換の原理を説明するための図面である。
【図3】ハフ変換で利用するハフ空間の模式図である。
【図4】図1に示した直線検出装置による直線検出の原理を説明するための図面である。
【図5】エッジ点のグループ分けを説明するためのテストパターンを模式的に示す図面である。
【図6】図5に示したテストパターンを撮影した画像内の複数のエッジ点が2つのグループに分類された結果としてのエッジ点パターンを示す図面である。
【図7】(a)は、第1のハフ空間部としての2次元配列領域を模式的に示す図面である。(b)は、第2のハフ空間部としての2次元配列領域を模式的に示す図面である。
【図8】図1に示した直線検出装置を利用した直線検出方法のフローチャートである。
【図9】従来のハフ変換に基づいて直線を検出した結果を示す図面である。
【図10】従来のハフ変換に基づいて直線を検出した結果を示す図面である。
【図11】図9と同様の入力画像に対して図1に示した直線検出装置を利用して直線を検出した結果を示す図面である。
【図12】図10と同様の入力画像に対して図1に示した直線検出装置を利用して直線を検出した結果を示す図面である。
【図13】本発明に係る直線検出装置の他の実施形態を含む撮影システムの構成を概略的に示す図面である。
【発明を実施するための形態】
【0017】
以下、図を参照して本発明の実施形態について説明する。以下の説明においては、同一の要素には同一の符号を用いることとし重複する説明は省略する。
【0018】
図1は、本発明に係る直線検出装置の一実施形態を含む撮影システムの概略構成を示す図面である。撮影システム10は、画像取得装置としてのカメラ11と、直線検出装置12とを備える。
【0019】
直線検出装置12は、カメラ11で取得された画像を入力画像Iとし、その入力画像I内の直線を、ハフ変換を利用して検出する。
【0020】
図2は、ハフ変換の原理を説明するための図面である。図2に示すように、入力画像Iに対して、互いに直交するx軸(第1の軸)及びy軸(第2の軸)から構成される2次元座標系を設定する。この2次元座標系を用いて、入力画像I中の任意のエッジ点piの位置を(xi,yi)(iは、エッジ点を区別するための整数)と表す。このエッジ点piを通る直線は、次式で表される。
【数1】
ここで、ρは、2次元座標系の原点Oからエッジ点piを通る直線に対して引かれた垂線の長さであり、θは、その垂線とx軸方向とのなす角度である。ρ及びθは、エッジ点piを通る直線を表すためのパラメータである。
【0021】
ハフ変換では、各エッジ点piに対する直線群をハフ空間Hに投票する。ハフ空間は、直線を特定するパラメータであるρとθとで定義されるパラメータ空間としてのρ―θ空間である。このような投票により、一つのエッジ点piに対して一つの曲線(理論的には正弦曲線)が描かれる。ハフ変換で得られる曲線をハフ曲線と称す。図3は、ρ−θ空間の投票結果の例を示す図面である。図3は、3つのエッジ点piに対する投票結果として、3つの曲線h1,h2,h3を模式的に示している。ハフ変換では、投票数の多い3つのハフ曲線h1〜h3の交点を規定するρ及びθの組によって決まる直線を入力画像I上の直線として検出する。図3に示した場合では、図2に黒丸で示される複数のエッジ点piを通る直線lが検出されることになる。
【0022】
図4は、直線検出装置による直線検出の原理を説明するための図面である。図4では、入力画像I内の一本の線状パターン(ハッチングで示されている領域)20を模式的に示している。線状パターン20は互いに平行な一対の直線20a,20bを有する。
【0023】
ここで、入力画像I内の任意のエッジ点piの勾配の方向(以下、勾配方向と称す)を、エッジ点piの勾配ベクトルとx軸方向とのなす角度αiで表す。上記「勾配」とは、画素値の変化の度合いを意味する。画素値の度合いの例は、輝度の変化の度合い又は濃度の変化の度合いである。また、複数のエッジ点piのうち直線20a及び直線20b上のエッジ点piをエッジ点pja(jは、直線20a上の複数のエッジ点を区別するための整数)及びエッジ点pkb(kは、直線20a上の複数のエッジ点を区別するための整数)とする。エッジ点pjaの座標を(xja,yja)と称し、エッジ点pkbの座標を(xkb,ykb)と称す。更に、エッジ点pja,pkbの勾配方向を、それぞれαja及びαkbとする。通常、勾配方向であるαja及びαkbは、反対側を向いている。
【0024】
直線検出装置12は、線状パターン20を構成する一対の直線20a,20b上のエッジ点pja,pkbの勾配方向が反対方向を向いている点を利用して、ハフ変換の際に、入力画像I中のエッジ点piをグループ(第1のグループ)G1とグループ(第2のグループ)G2に分けることによって、2つのグループG1,G2毎に直線を検出する。
【0025】
この点について説明する。式(1)は、次のように表される。
【数2】
ここで、ρが長さを表すため、sin(θ+γ)が0以上である必要がある。従って、式(3)が成り立つ。
【数3】
更に、βiをエッジ点piの極座標の角度(原点Oに対するエッジ点piの方向と、x軸方向との間の角度)、すなわち、βi=arctan(yi/xi)と定義すると、γ=π/2−βiである。従って、式(4)が成り立つ。
【数4】
ここで、図4に示したような線状パターン20の場合、図4の状態において、エッジ点(xka,ykb)の勾配方向αkbは、θに一致する。従って、次式が成り立つ。
【数5】
式(5)中、βkbは、エッジ点pkbの極座標の角度である。すなわち、βkb=arctan(ykb/xkb)である。
【0026】
一方、エッジ点(xja,yja)の勾配方向αjaは、θ+πである。従って、式(6)及び式(7)が成り立つ。
【数6】
【数7】
式(7)中のβjaは、エッジ点pjaの極座標の角度である。すなわち、βja=arctan(yja/xja)である。
【0027】
式(6)及び式(7)は、線状パターン20を構成する一対の直線20a,20bのうちの一方の直線上のエッジ点の勾配方向とそのエッジ点の極座標における角度との差(以下、角度差と称す)の余弦値が0以上であり、他方のエッジ点の勾配方向とそのエッジ点の極座標における角度との差の余弦値が負になることを示している。
【0028】
従って、入力画像I中の任意のエッジ点piの勾配方向αiを算出し、その勾配方向αiとそのエッジ点piの極座標における角度βiとの角度差(αi−βi)の余弦値に基づいて、エッジ点piが、線状パターン20を構成する一対の直線20a,20bのいずれに属しているかを判定できることになる。
【0029】
ここでは、一つの線状パターン20について説明したが、入力画像I中の直線は、線状パターンの一部と見なし得る。従って、入力画像I内の複数のエッジ点piは、式(8)を満たすグループG1と、式(9)を満たすグループG2とに分類できる。
【数8】
【数9】
【0030】
図5及び図6を利用して具体的に説明する。図5は、エッジ点のグループ分けを説明するためのテストパターンを模式的に示す図面である。図5に示すようにテストパターン30は、互いに平行な3つの線状パターン31,32,33と、線状パターン31〜33と交差する2つの線状パターン34,35とを含む。線状パターン31〜35には、ハッチングを示している。テストパターン30において、線状パターン31〜35の色は同色(例えば、白色)であり、テストパターン30内における線状パターン31〜35以外の他の領域は、同色(例えば、黒色)である。この場合、各線状パターン31〜35を構成する一対の直線上にエッジ点が検出される。
【0031】
図6は、図5に示したテストパターンを撮影した画像内の複数のエッジ点が2つのグループに分類された結果としてのエッジ点パターンを示す図面である。図6に示したエッジ点パターン40中の破線41a〜41eは、式(9)を満たすエッジ点を模式的に示している。図6に示すエッジ点パターン40中の一点鎖線42a〜42eは、式(8)を満たすエッジ点を模式的に示している。図6に示すように、各線状パターン31〜35を構成する一対の直線上のエッジ点piが、式(8)及び式(9)により、それぞれ分離される。
【0032】
直線検出装置12は、式(8)及び式(9)を利用してエッジ点piのハフ変換を実施することによって、入力画像I中の直線を検出する。
【0033】
上記原理を実現するための直線検出装置12の構成について、図1を参照して説明する。
【0034】
図1に示すように、直線検出装置12は、画像入力部12Aと、エッジ点検出部12Bと、勾配方向算出部(勾配方向取得部)12Cと、直線検出部12Dと、画像出力部12Eとを備える。また、直線検出装置12は、画像入力部12A、エッジ点検出部12Bなどを制御するCPU12Fと、各種データ及びプログラムを格納する記憶部12Gを更に備える。図1に示した直線検出装置12が有する各構成要素(画像入力部12A、エッジ点検出部12Bなど)は、バスなどによって接続されて、データなどを通信可能である。直線検出装置12の例は、コンピュータ装置である。直線検出装置12は、記憶部12Gに格納された直線検出プログラムを実行することによって、画像入力部12Aと、エッジ点検出部12Bと、勾配方向算出部12Cと、直線検出部12Dと、画像出力部12Eの各機能を実現する。
【0035】
画像入力部12Aは、カメラ11で取得された撮影画像を入力画像Iとしてカメラ11から受け付ける。画像入力部12Aは、無線及び有線通信の少なくとも一方を介してデータを受け取ってもよいし、又は記録媒体(DVDやSDカード等)からデータを受け取ってもよい。
【0036】
エッジ点検出部12Bは、入力画像I内の特徴点としてのエッジ点piを検出する。エッジ点piは、例えば輝度の明確な変化(例えば、明→暗又は暗→明の変化)が生じる点として検出される。エッジ点piは、例えば、cannyオペレータによって検出され得る。
【0037】
勾配方向算出部12Cは、エッジ点検出部12Bで検出されたエッジ点piの勾配方向αiを算出する。勾配方向αiは、例えば、“画像情報教育振興協会著、「デジタル画像処理」、画像情報教育振興協会(CG-ARTS協会)、2004年”記載の方法により算出され得る。具体的には、勾配方向αiは、例えば、Sobelオペレータを用いて算出され得る。
【0038】
直線検出部12Dは、記憶部12G内に、ハフ空間(パラメータ空間)Hとして使用するための2次元配列領域H1及び2次元配列領域H2を確保する。2次元配列領域H1は、グループG1内のエッジ点piに対する投票用の第1のハフ空間部として機能し、2次元配列領域H2は、グループG2内のエッジ点piに対する投票用の第2のハフ空間部として機能する。
【0039】
図7(a)及び図7(b)は、第1及び第2のハフ空間部としての2次元配列領域H1,H2を模式的に示す図面である。2次元配列領域H1,H2は、それぞれ図中の左上に模式的に示したメモリセルs1,s2が2次元状に配列されたものである。2次元配列領域H1を構成する複数のメモリセルs1は、ρ及びθによってそれぞれ特定される。同様に、2次元配列領域H2を構成する複数のメモリセルs2は、ρ及びθによってそれぞれ特定される。
【0040】
各2次元配列領域H1,H2を構成するメモリセルs1,s2aの値をA1(ρ,θ),A2(ρ、θ)とした場合、直線検出部12Dは、
式(8)及び下記式(10)を満たす場合、
A1(ρ,θ)=A1(ρ,θ)+1
を実行し、
式(9)及び下記式(10)を満たす場合、
A2(ρ,θ)=A2(ρ,θ)+1
を実行する。
【数10】
式(10)は、直線を表すための式であり、パラメータρ及びθが満たす条件である。
【0041】
直線検出部12Dは、2次元配列領域H1,H2における投票結果において、所定の閾値以上の投票数を有するメモリセルs1,s2をそれぞれ抽出し、入力画像I中の直線として検出する。
【0042】
画像出力部12Eは、直線検出部12Dで抽出された直線を、入力画像Iに重畳して出力する。
【0043】
図8は、直線検出装置を利用した直線検出方法のフローチャートである。図8を参照して、撮影システム10及び直線検出装置12の動作について説明する。
【0044】
撮影システム10の各カメラ11で撮影を行い、撮影画像を取得する(画像取得工程S1)。
【0045】
画像入力部12Aが、カメラ11で撮影された撮影画像を入力画像Iとして受け付ける(画像入力工程S2)と、エッジ点検出部12Bが入力画像I中のエッジ点piを検出する(エッジ点検出工程S3)。
【0046】
次に、勾配方向算出部12Cが、検出したエッジ点piに対して勾配方向αiを算出する(勾配算出工程S4)。
【0047】
その後、直線検出部12Dが、記憶部12G内に、2次元配列領域H1及び2次元配列領域H2を確保し、直線検出部12Dは、エッジ点piが式(8)及び式(10)を満たす場合、2次元配列領域H1に投票し、エッジ点piが式(9)及び式(10)を満たす場合、2次元配列領域H2に投票する。直線検出部12Dは、2次元配列領域H1,H2それぞれの投票結果において、所定の得票数以上の得票数のメモリセルs1,s2を決定することによって、入力画像Iにおける直線を検出する(直線検出工程S5)。
【0048】
通常、一つのエッジ点piを通る直線群を投票することでハフ空間H上に一つのハフ曲線が描かれる。複数のハフ曲線の交点は、交点を通過する複数のハフ曲線の数の投票が行われていることになるので、その交点に対応するメモリセルs1,s2が得票数の多いメモリセルs1,s2として選択され得る。2点が決まれば理論的には一意に直線が決定されることから、理論的には、2つの得票数以上のメモリセルs1,s2は一つの直線を決定することになるが、計算誤差などを考慮して上記「所定の得票数」を設定すればよい。
【0049】
そして、画像出力部12Eが、直線検出部12Dで検出された直線を入力画像Iに重畳した画像を表示装置又はネットワークなどに出力する(画像出力工程S6)。ここでは、特定された直線が入力画像(又は撮影画像)Iに重畳された画像を出力する場合を示したが、画像出力部12Eは、エッジ点piを検出した画像などの処理過程の画像や、入力画像I自体を適宜出力してもよい。
【0050】
上記直線検出装置12では、ハフ変換の際に、エッジ点piの勾配方向を利用して、エッジ点piを通る直線群を、異なる2次元配列領域H1,H2に投票する。本実施形態では、2次元配列領域H1にはグループG1内のエッジ点piが投票され、2次元配列領域H2には、グループG2内のエッジ点piが投票される。グループG1,G2それぞれは、入力画像I中に含まれる複数の線状パターンそれぞれを構成する一対の直線の一方の直線上のエッジ点piのグループと、他方の直線上のエッジ点piのグループに対応する。従って、エッジ点piを通る直線を2次元配列領域H1,H2に分けて投票し、2次元配列領域H1,H2で直線を検出することによって、入力画像I中に含まれる複数の線状パターンそれぞれを構成する一対の直線のうちの一方の直線と、他方の直線とがそれぞれ別の2次元配列領域(ハフ空間)で検出される。その結果、線状パターンの幅が狭くても、線状パターンを構成する一対の直線を混在せずに、入力画像I中の直線をより確実に検出可能であると共に、高い精度で検出可能である。
【0051】
以下、直線検出装置12によって、入力画像I中の直線をより確実に検出可能な点を、実験結果に基づいて示す。
【0052】
図9及び図10は、従来のハフ変換に基づいて直線を検出した結果を示す図面である。すなわち、図9及び図10は、入力画像I中の複数のエッジ点piを、式(8)及び式(9)を利用せずに(換言すれば、勾配方向に応じてグループ化せずに)、全てのエッジ点piをハフ変換した場合の結果を示す図面である。図9及び図10中に示された実線が直線の検出結果を示している。
【0053】
図11及び図12は、直線検出装置12を利用して直線を検出した結果を示す。すなわち、図11及び図12は、入力画像I中のエッジ点piを式(8)及び式(9)を利用しながら(換言すれば、勾配方向に応じて2つのグループに分けて)、ハフ変換を実施して直線検出を行った結果を示している。図11及び図12中の実線は、直線の検出結果を示している。なお、図9及び図10と、図11及び図12との比較から理解されるように、図9と図11とは同じ入力画像Iに対する結果を示している。同様に、図10と図12とは同じ入力画像Iに対する結果を示している。
【0054】
図9及び図10と、それらの図に対応する図11及び図12における直線検出では、同じ数の直線を検出した。換言すれば、直線検出のための投票数の閾値を同じ値とした。
【0055】
図9と図11とを比較すると、図9では、路側帯と車道との境界線の検出において、不要な直線が検出される等(図9の領域50参照)の不適切な検出が生じているのに対して、図11では、対応する領域53に示されているように、上記境界線がより正確に検出されている。図9において不要な直線が別途検出されていることによって、図9では、中央分離帯に基づく直線が検出されていないが、図11では、図9において、検出されていない中央分離帯が図11の領域54で示されるように検出されている。すなわち、図11では、入力画像I中の直線をより確実に検出できていると共に、より正確に検出できていることが理解される。
【0056】
同様に、図10の領域51と、その領域51に対応する図12中の領域55とを比較すると共に、図10の領域52と、その領域52に対応する図12中の領域56とを比較すれば、エッジ点piをハフ変換する際に、式(8)及び式(9)を利用する方がより正確に直線を検出できていることが理解され得る。
【0057】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されない。例えば、直線検出装置は、図13に示すような構成とし得る。
【0058】
図13は、直線検出装置の構成の他の例を含む撮影システムを示す図面である。図13に示した撮影システム60が有する直線検出装置61は、直線検出部12Dの代わりに、直線検出部62を備える点で、直線検出装置12の構成と相違する。この相違点以外は直線検出装置61及びそれを含む撮影システム60の構成は、直線検出装置12及び撮影システム10の構成と同じである。そのため、同一の要素には同一の符号を用いることとし重複する説明は省略し、相違点を中心にして説明する。
【0059】
直線検出部62は、グループ化部62a、投票部62b及び直線特定部62cを備える。グループ化部62aは、入力画像I中の複数のエッジ点piを式(8)及び式(9)を利用してグループG1及びグループG2に分類する。投票部62bは、グループ化部62aで予め分類されたグループG1,G2内のエッジ点piをそれぞれハフ変換し、グループG1内のエッジ点piを通る直線群を2次元配列領域(第1のハフ空間部)H1に投票し、グループG2内のエッジ点piを通る直線群を2次元配列領域(第2のハフ空間部)H2に投票する。直線特定部62cは、投票部62bによる2次元配列領域(第1のハフ空間部)H1への投票結果に基づいて直線を特定し、投票部62bによる2次元配列領域(第2のハフ空間部)H2の投票結果に基づいて直線を特定することによって、入力画像I中の直線を検出する。
【0060】
この直線検出装置61では、図8に示した直線検出工程S5において、グループ化部62aがエッジ点piをグループG1,G2に分類する(グループ化工程)。次に、投票部62bが、各グループG1,G2のエッジ点piをハフ変換し、2次元配列領域H1,H2に投票を行う(投票工程)。その後、直線特定部62cが、2次元配列領域H1の投票結果に基づいて直線を特定し、2次元配列領域H2の投票結果に基づいて直線を特定することによって、入力画像I中の直線を検出する。
【0061】
直線検出装置61では、予めエッジ点piを式(8)及び式(9)を利用して2つのグループG1,G2に分けた後に、グループG1,G2内のエッジ点piをハフ変換し、グループG1,G2に応じてエッジ点piを通る直線群を異なる2次元配列領域H1,H2に投票している。このように、直線検出装置61においても、式(8)及び式(9)を利用しているので、直線検出装置61及びそれを利用した直線検出方法は、直線検出装置12及びそれを利用した直線検出方法と同様の作用効果を有する。直線検出装置61の例もコンピュータ装置であり、記憶部12Gに格納された直線検出装置61用の直線検出プログラムを実行することによって、図13に示す画像入力部12Aと、エッジ点検出部12Bと、勾配方向算出部12Cと、直線検出部62と、画像出力部12Eの各機能が実現され得る。
【0062】
これまでの説明では、式(8)及び式(9)を利用する形態について説明したが、式(8)及び式(9)のように余弦値に基づいて、エッジ点piを分類する場合に限定されない。エッジ点piは、エッジ点piの勾配方向と、エッジ点の極座標の角度との角度差であるαi−βiが90度以上の場合と、αi−βiが90度未満の場合に対して分類されればよい。ただし、コンピュータ装置を利用して、エッジ点piを分類する場合には、角度差の余弦値を利用する方が、処理がより容易である。
【0063】
更に、これまでの説明では、エッジ点検出部(エッジ点検出工程)でエッジ点を検出した後、勾配方向取得部(勾配方向取得工程)としての勾配方向算出部(勾配取得工程)において、エッジ点の勾配を取得する形態について説明した。しかしながら、エッジ点は、通常、各画素の勾配ベクトルを算出し、勾配ベクトルの大きさが所定値以上の勾配ベクトルを有する画素として検出される。そのため、エッジ点検出部(エッジ点検出工程)と、勾配方向取得部(勾配方向取得工程)とを含めて勾配方向取得部(勾配方向取得工程)とし、勾配方向取得部(勾配方向取得工程)は、エッジ点の検出に利用した画素の勾配ベクトルを利用して、エッジ点の勾配ベクトルを取得してもよい。
【産業上の利用可能性】
【0064】
本発明は、直線検出が必要とされる移動ロボット、監視カメラ、レスキュー道具及び自動車といった車両に搭載されるナビゲーション用又は外部確認用のカメラ等に適用可能である。
【符号の説明】
【0065】
10…撮影システム、11…カメラ(画像取得手段)、12…直線検出装置、12B…エッジ点検出部、12C…勾配方向算出部(勾配方向取得部)、12D…直線検出部、12G…記憶部、20a,20b…直線、60…撮影システム、61…直線検出装置、62…直線検出部、62a…グループ化部、H1…2次元配列領域(第1のハフ空間部)、H2…2次元配列領域(第2のハフ空間部)、I…入力画像,撮影画像、pi…エッジ点、αi…勾配方向、βi…角度(2次元座標系の原点に対するエッジ点の方向と、第1の軸の方向との間の角度)。
【技術分野】
【0001】
本発明は、直線検出装置、直線検出方法、直線検出プログラム及び撮影システムに関する。
【背景技術】
【0002】
画像処理の技術の一つとして、ハフ変換(Hough変換)を利用して入力画像中の直線を検出する技術が知られている(例えば、特許文献1参照)。ハフ変換では、入力画像中のエッジ点を通る直線群を、直線を表すパラメータで構成されるハフ空間に投票する。そして、最大投票数を獲得したパラメータで表される直線を、所定のエッジ点を通る直線として検出する。具体的に図2を参照して説明する。図2は、ハフ変換の原理を示す図面である。入力画像に対してxy座標を設定し、画像内のエッジ点pi(iは、複数のエッジ点を区別するための整数)の座標を(xi,yi)としたとき、エッジ点を通る任意の直線は次式で表される。
ρ=xicosθ+yisinθ
直線を表す上記式中のρは、原点から直線に垂線を引いたときのその垂線の長さ(原点と直線との間の距離)であり、θは、x軸と垂線とのなす角度である。
【0003】
従来、各エッジ点に対する直線群をパラメータ空間としてのρ―θ空間に投票する。このような投票により、一つのエッジ点に対して一つの曲線(理論的には正弦曲線)が描かれる。図3では、3つのエッジ点に対する投票結果として、3つの曲線h1,h2,h3を模式的に示している。この3つの曲線h1〜h3の交点に対応するメモリセルの投票数が最も多くなる。従来のハフ変換では、このように投票数の多い交点を規定するρ及びθの組によって決まる直線を入力画像上の直線として検出していた。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平9−259279号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のハフ変換では2つの直線が近接している場合には、ある閾値以上の投票数のパラメータの組も近接するので、直線を確実に検出ができなかった。
【0006】
本発明は、上記の問題点を解決するためになされたものであり、直線をより確実に検出可能な直線検出装置、直線検出方法、直線検出プログラム及び撮影システムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る直線検出装置は、入力画像中の複数のエッジ点について、各前記エッジ点の勾配方向を取得する勾配方向取得部と、各エッジ点をハフ変換することによって入力画像中の直線を検出する直線検出部と、ハフ変換における投票用の第1のハフ空間部と、ハフ変換における投票用の第2のハフ空間部と、を備え、直線検出部は、各エッジ点をハフ変換する際、入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各エッジ点の勾配の方向と第1の軸の方向とのなす角度と、2次元座標系における原点に対する各エッジ点の方向と第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、上記角度差が90度未満であるエッジ点を通る直線群を、第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出する。
【0008】
本発明に係る直線検出方法は、入力画像中の複数のエッジ点について、各エッジ点の勾配方向を取得する勾配方向取得工程と、各エッジ点をハフ変換することによって入力画像中の直線を検出する直線検出工程と、を備え、直線検出工程では、各エッジ点をハフ変換する際、入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各エッジ点の勾配の方向と第1の軸の方向とのなす角度と、2次元座標系における原点に対する各エッジ点の方向と第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、上記角度差が90度未満の場合であるエッジ点を通る直線群を、第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出する。
【0009】
本発明に係る直線検出プログラムは、コンピュータを、入力画像中の複数のエッジ点について、各エッジ点の勾配方向を取得する勾配方向取得部と、各エッジ点をハフ変換することによって入力画像中の直線を検出する直線検出部と、ハフ変換における投票用の第1のハフ空間部と、ハフ変換における投票用の第2のハフ空間部と、として機能させ、直線検出部は、各エッジ点をハフ変換する際、入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各エッジ点の勾配の方向と第1の軸の方向とのなす角度と、2次元座標系における原点に対する各エッジ点の方向と第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、角度差が90度未満の場合であるエッジ点を通る直線群を、第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出する。
【0010】
入力画像中に含まれる互いに平行な一対の直線のうちの一方の直線上のエッジ点に対して上記角度差が90度以上である場合、他方の直線上のエッジ点に対して上記角度差は90度未満になる。従って、本発明によれば、入力画像中に含まれる互いに平行な一対の直線のうちの一方の直線上のエッジ点を通る直線群は、例えば第1のハフ空間部に投票され、この場合、他方の直線上のエッジ点を通る直線群は、第2のハフ空間部に投票される。すなわち、入力画像中に含まれる互いに平行な一対の直線のうちの一方の直線上のエッジ点と、他方の直線上のエッジ点とは、異なるハフ空間部に投票される。そのため、入力画像中に含まれる互いに平行な一対の直線が近接している場合であっても、より確実に直線を検出することが可能である。
【0011】
本発明に係る直線検出装置では、直線検出部は、上記角度差の余弦値が0以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、上記角度差の余弦値が0未満であるエッジ点を通る直線群を、第2のハフ空間部に投票してもよい。同様に、本発明に係る直線検出方法の直線検出工程では、上記角度差の余弦値が0以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、上記角度差の余弦値が0未満であるエッジ点を通る直線群を、第2のハフ空間部に投票してもよい。
【0012】
この場合、余弦値の0及び正の場合と、余弦値が負の場合とで場合分けがされるので、例えば、コンピュータを利用して上記場合分け処理する際、処理が容易である。
【0013】
本発明に係る直線検出装置では、複数のエッジ点を、上記角度差が90度以上である第1のグループと、上記角度差が90度未満である第2のグループとに分類するグループ化部を有し、直線検出部は、第1のグループ及び第2のグループ内のエッジ点をそれぞれハフ変換し、第1のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を第1のハフ空間部に投票し、第2のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、入力画像中の直線を検出してもよい。同様に、本発明に係る直線検出方法では、直線検出工程は、複数のエッジ点を、上記角度差が90度以上である第1のグループと、上記角度差が90度未満である第2のグループとに分類するグループ化工程を有し、直線検出工程では、第1のグループ及び第2のグループ内のエッジ点をそれぞれハフ変換し、第1のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を第1のハフ空間部に投票し、第2のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を第2のハフ空間部に投票し、第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、上記入力画像中の直線を検出してもよい。
【0014】
本発明は、撮影画像を取得する画像取得手段と、上記本発明に係る直線検出装置とを備える撮影システムにも係る。この撮影システムでは、本発明に係る直線検出装置を備えるので、撮影手段により取得された撮影画像中の直線をより高い精度で検出可能である。
【発明の効果】
【0015】
本発明によれば、入力画像中の直線をより確実に検出できる。
【図面の簡単な説明】
【0016】
【図1】本発明に係る直線検出装置の一実施形態を含む撮影システムの構成を概略的に示す図面である。
【図2】ハフ変換の原理を説明するための図面である。
【図3】ハフ変換で利用するハフ空間の模式図である。
【図4】図1に示した直線検出装置による直線検出の原理を説明するための図面である。
【図5】エッジ点のグループ分けを説明するためのテストパターンを模式的に示す図面である。
【図6】図5に示したテストパターンを撮影した画像内の複数のエッジ点が2つのグループに分類された結果としてのエッジ点パターンを示す図面である。
【図7】(a)は、第1のハフ空間部としての2次元配列領域を模式的に示す図面である。(b)は、第2のハフ空間部としての2次元配列領域を模式的に示す図面である。
【図8】図1に示した直線検出装置を利用した直線検出方法のフローチャートである。
【図9】従来のハフ変換に基づいて直線を検出した結果を示す図面である。
【図10】従来のハフ変換に基づいて直線を検出した結果を示す図面である。
【図11】図9と同様の入力画像に対して図1に示した直線検出装置を利用して直線を検出した結果を示す図面である。
【図12】図10と同様の入力画像に対して図1に示した直線検出装置を利用して直線を検出した結果を示す図面である。
【図13】本発明に係る直線検出装置の他の実施形態を含む撮影システムの構成を概略的に示す図面である。
【発明を実施するための形態】
【0017】
以下、図を参照して本発明の実施形態について説明する。以下の説明においては、同一の要素には同一の符号を用いることとし重複する説明は省略する。
【0018】
図1は、本発明に係る直線検出装置の一実施形態を含む撮影システムの概略構成を示す図面である。撮影システム10は、画像取得装置としてのカメラ11と、直線検出装置12とを備える。
【0019】
直線検出装置12は、カメラ11で取得された画像を入力画像Iとし、その入力画像I内の直線を、ハフ変換を利用して検出する。
【0020】
図2は、ハフ変換の原理を説明するための図面である。図2に示すように、入力画像Iに対して、互いに直交するx軸(第1の軸)及びy軸(第2の軸)から構成される2次元座標系を設定する。この2次元座標系を用いて、入力画像I中の任意のエッジ点piの位置を(xi,yi)(iは、エッジ点を区別するための整数)と表す。このエッジ点piを通る直線は、次式で表される。
【数1】
ここで、ρは、2次元座標系の原点Oからエッジ点piを通る直線に対して引かれた垂線の長さであり、θは、その垂線とx軸方向とのなす角度である。ρ及びθは、エッジ点piを通る直線を表すためのパラメータである。
【0021】
ハフ変換では、各エッジ点piに対する直線群をハフ空間Hに投票する。ハフ空間は、直線を特定するパラメータであるρとθとで定義されるパラメータ空間としてのρ―θ空間である。このような投票により、一つのエッジ点piに対して一つの曲線(理論的には正弦曲線)が描かれる。ハフ変換で得られる曲線をハフ曲線と称す。図3は、ρ−θ空間の投票結果の例を示す図面である。図3は、3つのエッジ点piに対する投票結果として、3つの曲線h1,h2,h3を模式的に示している。ハフ変換では、投票数の多い3つのハフ曲線h1〜h3の交点を規定するρ及びθの組によって決まる直線を入力画像I上の直線として検出する。図3に示した場合では、図2に黒丸で示される複数のエッジ点piを通る直線lが検出されることになる。
【0022】
図4は、直線検出装置による直線検出の原理を説明するための図面である。図4では、入力画像I内の一本の線状パターン(ハッチングで示されている領域)20を模式的に示している。線状パターン20は互いに平行な一対の直線20a,20bを有する。
【0023】
ここで、入力画像I内の任意のエッジ点piの勾配の方向(以下、勾配方向と称す)を、エッジ点piの勾配ベクトルとx軸方向とのなす角度αiで表す。上記「勾配」とは、画素値の変化の度合いを意味する。画素値の度合いの例は、輝度の変化の度合い又は濃度の変化の度合いである。また、複数のエッジ点piのうち直線20a及び直線20b上のエッジ点piをエッジ点pja(jは、直線20a上の複数のエッジ点を区別するための整数)及びエッジ点pkb(kは、直線20a上の複数のエッジ点を区別するための整数)とする。エッジ点pjaの座標を(xja,yja)と称し、エッジ点pkbの座標を(xkb,ykb)と称す。更に、エッジ点pja,pkbの勾配方向を、それぞれαja及びαkbとする。通常、勾配方向であるαja及びαkbは、反対側を向いている。
【0024】
直線検出装置12は、線状パターン20を構成する一対の直線20a,20b上のエッジ点pja,pkbの勾配方向が反対方向を向いている点を利用して、ハフ変換の際に、入力画像I中のエッジ点piをグループ(第1のグループ)G1とグループ(第2のグループ)G2に分けることによって、2つのグループG1,G2毎に直線を検出する。
【0025】
この点について説明する。式(1)は、次のように表される。
【数2】
ここで、ρが長さを表すため、sin(θ+γ)が0以上である必要がある。従って、式(3)が成り立つ。
【数3】
更に、βiをエッジ点piの極座標の角度(原点Oに対するエッジ点piの方向と、x軸方向との間の角度)、すなわち、βi=arctan(yi/xi)と定義すると、γ=π/2−βiである。従って、式(4)が成り立つ。
【数4】
ここで、図4に示したような線状パターン20の場合、図4の状態において、エッジ点(xka,ykb)の勾配方向αkbは、θに一致する。従って、次式が成り立つ。
【数5】
式(5)中、βkbは、エッジ点pkbの極座標の角度である。すなわち、βkb=arctan(ykb/xkb)である。
【0026】
一方、エッジ点(xja,yja)の勾配方向αjaは、θ+πである。従って、式(6)及び式(7)が成り立つ。
【数6】
【数7】
式(7)中のβjaは、エッジ点pjaの極座標の角度である。すなわち、βja=arctan(yja/xja)である。
【0027】
式(6)及び式(7)は、線状パターン20を構成する一対の直線20a,20bのうちの一方の直線上のエッジ点の勾配方向とそのエッジ点の極座標における角度との差(以下、角度差と称す)の余弦値が0以上であり、他方のエッジ点の勾配方向とそのエッジ点の極座標における角度との差の余弦値が負になることを示している。
【0028】
従って、入力画像I中の任意のエッジ点piの勾配方向αiを算出し、その勾配方向αiとそのエッジ点piの極座標における角度βiとの角度差(αi−βi)の余弦値に基づいて、エッジ点piが、線状パターン20を構成する一対の直線20a,20bのいずれに属しているかを判定できることになる。
【0029】
ここでは、一つの線状パターン20について説明したが、入力画像I中の直線は、線状パターンの一部と見なし得る。従って、入力画像I内の複数のエッジ点piは、式(8)を満たすグループG1と、式(9)を満たすグループG2とに分類できる。
【数8】
【数9】
【0030】
図5及び図6を利用して具体的に説明する。図5は、エッジ点のグループ分けを説明するためのテストパターンを模式的に示す図面である。図5に示すようにテストパターン30は、互いに平行な3つの線状パターン31,32,33と、線状パターン31〜33と交差する2つの線状パターン34,35とを含む。線状パターン31〜35には、ハッチングを示している。テストパターン30において、線状パターン31〜35の色は同色(例えば、白色)であり、テストパターン30内における線状パターン31〜35以外の他の領域は、同色(例えば、黒色)である。この場合、各線状パターン31〜35を構成する一対の直線上にエッジ点が検出される。
【0031】
図6は、図5に示したテストパターンを撮影した画像内の複数のエッジ点が2つのグループに分類された結果としてのエッジ点パターンを示す図面である。図6に示したエッジ点パターン40中の破線41a〜41eは、式(9)を満たすエッジ点を模式的に示している。図6に示すエッジ点パターン40中の一点鎖線42a〜42eは、式(8)を満たすエッジ点を模式的に示している。図6に示すように、各線状パターン31〜35を構成する一対の直線上のエッジ点piが、式(8)及び式(9)により、それぞれ分離される。
【0032】
直線検出装置12は、式(8)及び式(9)を利用してエッジ点piのハフ変換を実施することによって、入力画像I中の直線を検出する。
【0033】
上記原理を実現するための直線検出装置12の構成について、図1を参照して説明する。
【0034】
図1に示すように、直線検出装置12は、画像入力部12Aと、エッジ点検出部12Bと、勾配方向算出部(勾配方向取得部)12Cと、直線検出部12Dと、画像出力部12Eとを備える。また、直線検出装置12は、画像入力部12A、エッジ点検出部12Bなどを制御するCPU12Fと、各種データ及びプログラムを格納する記憶部12Gを更に備える。図1に示した直線検出装置12が有する各構成要素(画像入力部12A、エッジ点検出部12Bなど)は、バスなどによって接続されて、データなどを通信可能である。直線検出装置12の例は、コンピュータ装置である。直線検出装置12は、記憶部12Gに格納された直線検出プログラムを実行することによって、画像入力部12Aと、エッジ点検出部12Bと、勾配方向算出部12Cと、直線検出部12Dと、画像出力部12Eの各機能を実現する。
【0035】
画像入力部12Aは、カメラ11で取得された撮影画像を入力画像Iとしてカメラ11から受け付ける。画像入力部12Aは、無線及び有線通信の少なくとも一方を介してデータを受け取ってもよいし、又は記録媒体(DVDやSDカード等)からデータを受け取ってもよい。
【0036】
エッジ点検出部12Bは、入力画像I内の特徴点としてのエッジ点piを検出する。エッジ点piは、例えば輝度の明確な変化(例えば、明→暗又は暗→明の変化)が生じる点として検出される。エッジ点piは、例えば、cannyオペレータによって検出され得る。
【0037】
勾配方向算出部12Cは、エッジ点検出部12Bで検出されたエッジ点piの勾配方向αiを算出する。勾配方向αiは、例えば、“画像情報教育振興協会著、「デジタル画像処理」、画像情報教育振興協会(CG-ARTS協会)、2004年”記載の方法により算出され得る。具体的には、勾配方向αiは、例えば、Sobelオペレータを用いて算出され得る。
【0038】
直線検出部12Dは、記憶部12G内に、ハフ空間(パラメータ空間)Hとして使用するための2次元配列領域H1及び2次元配列領域H2を確保する。2次元配列領域H1は、グループG1内のエッジ点piに対する投票用の第1のハフ空間部として機能し、2次元配列領域H2は、グループG2内のエッジ点piに対する投票用の第2のハフ空間部として機能する。
【0039】
図7(a)及び図7(b)は、第1及び第2のハフ空間部としての2次元配列領域H1,H2を模式的に示す図面である。2次元配列領域H1,H2は、それぞれ図中の左上に模式的に示したメモリセルs1,s2が2次元状に配列されたものである。2次元配列領域H1を構成する複数のメモリセルs1は、ρ及びθによってそれぞれ特定される。同様に、2次元配列領域H2を構成する複数のメモリセルs2は、ρ及びθによってそれぞれ特定される。
【0040】
各2次元配列領域H1,H2を構成するメモリセルs1,s2aの値をA1(ρ,θ),A2(ρ、θ)とした場合、直線検出部12Dは、
式(8)及び下記式(10)を満たす場合、
A1(ρ,θ)=A1(ρ,θ)+1
を実行し、
式(9)及び下記式(10)を満たす場合、
A2(ρ,θ)=A2(ρ,θ)+1
を実行する。
【数10】
式(10)は、直線を表すための式であり、パラメータρ及びθが満たす条件である。
【0041】
直線検出部12Dは、2次元配列領域H1,H2における投票結果において、所定の閾値以上の投票数を有するメモリセルs1,s2をそれぞれ抽出し、入力画像I中の直線として検出する。
【0042】
画像出力部12Eは、直線検出部12Dで抽出された直線を、入力画像Iに重畳して出力する。
【0043】
図8は、直線検出装置を利用した直線検出方法のフローチャートである。図8を参照して、撮影システム10及び直線検出装置12の動作について説明する。
【0044】
撮影システム10の各カメラ11で撮影を行い、撮影画像を取得する(画像取得工程S1)。
【0045】
画像入力部12Aが、カメラ11で撮影された撮影画像を入力画像Iとして受け付ける(画像入力工程S2)と、エッジ点検出部12Bが入力画像I中のエッジ点piを検出する(エッジ点検出工程S3)。
【0046】
次に、勾配方向算出部12Cが、検出したエッジ点piに対して勾配方向αiを算出する(勾配算出工程S4)。
【0047】
その後、直線検出部12Dが、記憶部12G内に、2次元配列領域H1及び2次元配列領域H2を確保し、直線検出部12Dは、エッジ点piが式(8)及び式(10)を満たす場合、2次元配列領域H1に投票し、エッジ点piが式(9)及び式(10)を満たす場合、2次元配列領域H2に投票する。直線検出部12Dは、2次元配列領域H1,H2それぞれの投票結果において、所定の得票数以上の得票数のメモリセルs1,s2を決定することによって、入力画像Iにおける直線を検出する(直線検出工程S5)。
【0048】
通常、一つのエッジ点piを通る直線群を投票することでハフ空間H上に一つのハフ曲線が描かれる。複数のハフ曲線の交点は、交点を通過する複数のハフ曲線の数の投票が行われていることになるので、その交点に対応するメモリセルs1,s2が得票数の多いメモリセルs1,s2として選択され得る。2点が決まれば理論的には一意に直線が決定されることから、理論的には、2つの得票数以上のメモリセルs1,s2は一つの直線を決定することになるが、計算誤差などを考慮して上記「所定の得票数」を設定すればよい。
【0049】
そして、画像出力部12Eが、直線検出部12Dで検出された直線を入力画像Iに重畳した画像を表示装置又はネットワークなどに出力する(画像出力工程S6)。ここでは、特定された直線が入力画像(又は撮影画像)Iに重畳された画像を出力する場合を示したが、画像出力部12Eは、エッジ点piを検出した画像などの処理過程の画像や、入力画像I自体を適宜出力してもよい。
【0050】
上記直線検出装置12では、ハフ変換の際に、エッジ点piの勾配方向を利用して、エッジ点piを通る直線群を、異なる2次元配列領域H1,H2に投票する。本実施形態では、2次元配列領域H1にはグループG1内のエッジ点piが投票され、2次元配列領域H2には、グループG2内のエッジ点piが投票される。グループG1,G2それぞれは、入力画像I中に含まれる複数の線状パターンそれぞれを構成する一対の直線の一方の直線上のエッジ点piのグループと、他方の直線上のエッジ点piのグループに対応する。従って、エッジ点piを通る直線を2次元配列領域H1,H2に分けて投票し、2次元配列領域H1,H2で直線を検出することによって、入力画像I中に含まれる複数の線状パターンそれぞれを構成する一対の直線のうちの一方の直線と、他方の直線とがそれぞれ別の2次元配列領域(ハフ空間)で検出される。その結果、線状パターンの幅が狭くても、線状パターンを構成する一対の直線を混在せずに、入力画像I中の直線をより確実に検出可能であると共に、高い精度で検出可能である。
【0051】
以下、直線検出装置12によって、入力画像I中の直線をより確実に検出可能な点を、実験結果に基づいて示す。
【0052】
図9及び図10は、従来のハフ変換に基づいて直線を検出した結果を示す図面である。すなわち、図9及び図10は、入力画像I中の複数のエッジ点piを、式(8)及び式(9)を利用せずに(換言すれば、勾配方向に応じてグループ化せずに)、全てのエッジ点piをハフ変換した場合の結果を示す図面である。図9及び図10中に示された実線が直線の検出結果を示している。
【0053】
図11及び図12は、直線検出装置12を利用して直線を検出した結果を示す。すなわち、図11及び図12は、入力画像I中のエッジ点piを式(8)及び式(9)を利用しながら(換言すれば、勾配方向に応じて2つのグループに分けて)、ハフ変換を実施して直線検出を行った結果を示している。図11及び図12中の実線は、直線の検出結果を示している。なお、図9及び図10と、図11及び図12との比較から理解されるように、図9と図11とは同じ入力画像Iに対する結果を示している。同様に、図10と図12とは同じ入力画像Iに対する結果を示している。
【0054】
図9及び図10と、それらの図に対応する図11及び図12における直線検出では、同じ数の直線を検出した。換言すれば、直線検出のための投票数の閾値を同じ値とした。
【0055】
図9と図11とを比較すると、図9では、路側帯と車道との境界線の検出において、不要な直線が検出される等(図9の領域50参照)の不適切な検出が生じているのに対して、図11では、対応する領域53に示されているように、上記境界線がより正確に検出されている。図9において不要な直線が別途検出されていることによって、図9では、中央分離帯に基づく直線が検出されていないが、図11では、図9において、検出されていない中央分離帯が図11の領域54で示されるように検出されている。すなわち、図11では、入力画像I中の直線をより確実に検出できていると共に、より正確に検出できていることが理解される。
【0056】
同様に、図10の領域51と、その領域51に対応する図12中の領域55とを比較すると共に、図10の領域52と、その領域52に対応する図12中の領域56とを比較すれば、エッジ点piをハフ変換する際に、式(8)及び式(9)を利用する方がより正確に直線を検出できていることが理解され得る。
【0057】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されない。例えば、直線検出装置は、図13に示すような構成とし得る。
【0058】
図13は、直線検出装置の構成の他の例を含む撮影システムを示す図面である。図13に示した撮影システム60が有する直線検出装置61は、直線検出部12Dの代わりに、直線検出部62を備える点で、直線検出装置12の構成と相違する。この相違点以外は直線検出装置61及びそれを含む撮影システム60の構成は、直線検出装置12及び撮影システム10の構成と同じである。そのため、同一の要素には同一の符号を用いることとし重複する説明は省略し、相違点を中心にして説明する。
【0059】
直線検出部62は、グループ化部62a、投票部62b及び直線特定部62cを備える。グループ化部62aは、入力画像I中の複数のエッジ点piを式(8)及び式(9)を利用してグループG1及びグループG2に分類する。投票部62bは、グループ化部62aで予め分類されたグループG1,G2内のエッジ点piをそれぞれハフ変換し、グループG1内のエッジ点piを通る直線群を2次元配列領域(第1のハフ空間部)H1に投票し、グループG2内のエッジ点piを通る直線群を2次元配列領域(第2のハフ空間部)H2に投票する。直線特定部62cは、投票部62bによる2次元配列領域(第1のハフ空間部)H1への投票結果に基づいて直線を特定し、投票部62bによる2次元配列領域(第2のハフ空間部)H2の投票結果に基づいて直線を特定することによって、入力画像I中の直線を検出する。
【0060】
この直線検出装置61では、図8に示した直線検出工程S5において、グループ化部62aがエッジ点piをグループG1,G2に分類する(グループ化工程)。次に、投票部62bが、各グループG1,G2のエッジ点piをハフ変換し、2次元配列領域H1,H2に投票を行う(投票工程)。その後、直線特定部62cが、2次元配列領域H1の投票結果に基づいて直線を特定し、2次元配列領域H2の投票結果に基づいて直線を特定することによって、入力画像I中の直線を検出する。
【0061】
直線検出装置61では、予めエッジ点piを式(8)及び式(9)を利用して2つのグループG1,G2に分けた後に、グループG1,G2内のエッジ点piをハフ変換し、グループG1,G2に応じてエッジ点piを通る直線群を異なる2次元配列領域H1,H2に投票している。このように、直線検出装置61においても、式(8)及び式(9)を利用しているので、直線検出装置61及びそれを利用した直線検出方法は、直線検出装置12及びそれを利用した直線検出方法と同様の作用効果を有する。直線検出装置61の例もコンピュータ装置であり、記憶部12Gに格納された直線検出装置61用の直線検出プログラムを実行することによって、図13に示す画像入力部12Aと、エッジ点検出部12Bと、勾配方向算出部12Cと、直線検出部62と、画像出力部12Eの各機能が実現され得る。
【0062】
これまでの説明では、式(8)及び式(9)を利用する形態について説明したが、式(8)及び式(9)のように余弦値に基づいて、エッジ点piを分類する場合に限定されない。エッジ点piは、エッジ点piの勾配方向と、エッジ点の極座標の角度との角度差であるαi−βiが90度以上の場合と、αi−βiが90度未満の場合に対して分類されればよい。ただし、コンピュータ装置を利用して、エッジ点piを分類する場合には、角度差の余弦値を利用する方が、処理がより容易である。
【0063】
更に、これまでの説明では、エッジ点検出部(エッジ点検出工程)でエッジ点を検出した後、勾配方向取得部(勾配方向取得工程)としての勾配方向算出部(勾配取得工程)において、エッジ点の勾配を取得する形態について説明した。しかしながら、エッジ点は、通常、各画素の勾配ベクトルを算出し、勾配ベクトルの大きさが所定値以上の勾配ベクトルを有する画素として検出される。そのため、エッジ点検出部(エッジ点検出工程)と、勾配方向取得部(勾配方向取得工程)とを含めて勾配方向取得部(勾配方向取得工程)とし、勾配方向取得部(勾配方向取得工程)は、エッジ点の検出に利用した画素の勾配ベクトルを利用して、エッジ点の勾配ベクトルを取得してもよい。
【産業上の利用可能性】
【0064】
本発明は、直線検出が必要とされる移動ロボット、監視カメラ、レスキュー道具及び自動車といった車両に搭載されるナビゲーション用又は外部確認用のカメラ等に適用可能である。
【符号の説明】
【0065】
10…撮影システム、11…カメラ(画像取得手段)、12…直線検出装置、12B…エッジ点検出部、12C…勾配方向算出部(勾配方向取得部)、12D…直線検出部、12G…記憶部、20a,20b…直線、60…撮影システム、61…直線検出装置、62…直線検出部、62a…グループ化部、H1…2次元配列領域(第1のハフ空間部)、H2…2次元配列領域(第2のハフ空間部)、I…入力画像,撮影画像、pi…エッジ点、αi…勾配方向、βi…角度(2次元座標系の原点に対するエッジ点の方向と、第1の軸の方向との間の角度)。
【特許請求の範囲】
【請求項1】
入力画像中の複数のエッジ点について、各前記エッジ点の勾配方向を取得する勾配方向取得部と、
各前記エッジ点をハフ変換することによって前記入力画像中の直線を検出する直線検出部と、
前記ハフ変換における投票用の第1のハフ空間部と、
前記ハフ変換における投票用の第2のハフ空間部と、
を備え、
前記直線検出部は、各前記エッジ点をハフ変換する際、前記入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各前記エッジ点の勾配の方向と前記第1の軸の方向とのなす角度と、前記2次元座標系における原点に対する各前記エッジ点の方向と前記第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、前記第1のハフ空間部に投票し、前記角度差が90度未満の場合であるエッジ点を通る直線群を、前記第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
直線検出装置。
【請求項2】
前記直線検出部は、前記角度差の余弦値が0以上であるエッジ点を通る直線群を、前記第1のハフ空間部に投票し、前記角度差の余弦値が0未満であるエッジ点を通る直線群を、前記第2のハフ空間部に投票する、
請求項1記載の直線検出装置。
【請求項3】
前記直線検出部は、
複数の前記エッジ点を、前記角度差が90度以上である第1のグループと、前記角度差が90度未満である第2のグループとに分類するグループ化部を有し、
前記直線検出部は、前記第1のグループ及び前記第2のグループ内のエッジ点をそれぞれハフ変換し、前記第1のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を前記第1のハフ空間部に投票し、前記第2のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を前記第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
請求項1記載の直線検出装置。
【請求項4】
入力画像中の複数のエッジ点について、各前記エッジ点の勾配方向を取得する勾配方向取得工程、
各前記エッジ点をハフ変換することによって前記入力画像中の直線を検出する直線検出工程と、
前記ハフ変換における投票用の第1のハフ空間部と、
前記ハフ変換における投票用の第2のハフ空間部と、
を備え、
前記直線検出工程では、各前記エッジ点をハフ変換する際、前記入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各前記エッジ点の勾配の方向と前記第1の軸の方向とのなす角度と、前記2次元座標系における原点に対する各前記エッジ点の方向と前記第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、前記角度差が90度未満の場合であるエッジ点を通る直線群を、第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
を備える直線検出方法。
【請求項5】
前記直線検出工程では、前記角度差の余弦値が0以上であるエッジ点を通る直線群を、前記第1のハフ空間部に投票し、前記角度差の余弦値が0未満であるエッジ点を通る直線群を、前記第2のハフ空間部に投票する、
請求項4記載の直線検出方法。
【請求項6】
前記直線検出工程は、
複数の前記エッジ点を、前記角度差が90度以上である第1のグループと、前記角度差が90度未満である第2のグループとに分類するグループ化工程を有し、
前記直線検出工程では、前記第1のグループ及び前記第2のグループ内のエッジ点をそれぞれハフ変換し、前記第1のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を前記第1のハフ空間部に投票し、前記第2のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を前記第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
請求項4記載の直線検出方法。
【請求項7】
コンピュータを、
入力画像中の複数のエッジ点について、各前記エッジ点の勾配方向を取得する勾配方向取得部と、
各前記エッジ点をハフ変換することによって前記入力画像中の直線を検出する直線検出部と、
前記ハフ変換における投票用の第1のハフ空間部と、
前記ハフ変換における投票用の第2のハフ空間部と、
として機能させ、
前記直線検出部は、各前記エッジ点をハフ変換する際、前記入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各前記エッジ点の勾配の方向と前記第1の軸の方向とのなす角度と、前記2次元座標系における原点に対する各前記エッジ点の方向と前記第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、前記第1のハフ空間部に投票し、前記角度差が90度未満の場合であるエッジ点を通る直線群を、前記第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
直線検出プログラム。
【請求項8】
撮影画像を取得する画像取得手段と、
前記画像取得手段で取得された前記撮影画像を入力画像として前記入力画像内の直線を検出する請求項1又は2記載の直線検出装置と、
を備える撮影システム。
【請求項1】
入力画像中の複数のエッジ点について、各前記エッジ点の勾配方向を取得する勾配方向取得部と、
各前記エッジ点をハフ変換することによって前記入力画像中の直線を検出する直線検出部と、
前記ハフ変換における投票用の第1のハフ空間部と、
前記ハフ変換における投票用の第2のハフ空間部と、
を備え、
前記直線検出部は、各前記エッジ点をハフ変換する際、前記入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各前記エッジ点の勾配の方向と前記第1の軸の方向とのなす角度と、前記2次元座標系における原点に対する各前記エッジ点の方向と前記第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、前記第1のハフ空間部に投票し、前記角度差が90度未満の場合であるエッジ点を通る直線群を、前記第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
直線検出装置。
【請求項2】
前記直線検出部は、前記角度差の余弦値が0以上であるエッジ点を通る直線群を、前記第1のハフ空間部に投票し、前記角度差の余弦値が0未満であるエッジ点を通る直線群を、前記第2のハフ空間部に投票する、
請求項1記載の直線検出装置。
【請求項3】
前記直線検出部は、
複数の前記エッジ点を、前記角度差が90度以上である第1のグループと、前記角度差が90度未満である第2のグループとに分類するグループ化部を有し、
前記直線検出部は、前記第1のグループ及び前記第2のグループ内のエッジ点をそれぞれハフ変換し、前記第1のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を前記第1のハフ空間部に投票し、前記第2のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を前記第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
請求項1記載の直線検出装置。
【請求項4】
入力画像中の複数のエッジ点について、各前記エッジ点の勾配方向を取得する勾配方向取得工程、
各前記エッジ点をハフ変換することによって前記入力画像中の直線を検出する直線検出工程と、
前記ハフ変換における投票用の第1のハフ空間部と、
前記ハフ変換における投票用の第2のハフ空間部と、
を備え、
前記直線検出工程では、各前記エッジ点をハフ変換する際、前記入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各前記エッジ点の勾配の方向と前記第1の軸の方向とのなす角度と、前記2次元座標系における原点に対する各前記エッジ点の方向と前記第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、第1のハフ空間部に投票し、前記角度差が90度未満の場合であるエッジ点を通る直線群を、第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
を備える直線検出方法。
【請求項5】
前記直線検出工程では、前記角度差の余弦値が0以上であるエッジ点を通る直線群を、前記第1のハフ空間部に投票し、前記角度差の余弦値が0未満であるエッジ点を通る直線群を、前記第2のハフ空間部に投票する、
請求項4記載の直線検出方法。
【請求項6】
前記直線検出工程は、
複数の前記エッジ点を、前記角度差が90度以上である第1のグループと、前記角度差が90度未満である第2のグループとに分類するグループ化工程を有し、
前記直線検出工程では、前記第1のグループ及び前記第2のグループ内のエッジ点をそれぞれハフ変換し、前記第1のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を前記第1のハフ空間部に投票し、前記第2のグループ内のエッジ点をハフ変換する際、そのエッジ点を通る直線群を前記第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
請求項4記載の直線検出方法。
【請求項7】
コンピュータを、
入力画像中の複数のエッジ点について、各前記エッジ点の勾配方向を取得する勾配方向取得部と、
各前記エッジ点をハフ変換することによって前記入力画像中の直線を検出する直線検出部と、
前記ハフ変換における投票用の第1のハフ空間部と、
前記ハフ変換における投票用の第2のハフ空間部と、
として機能させ、
前記直線検出部は、各前記エッジ点をハフ変換する際、前記入力画像に対して設定されると共に、第1及び第2の軸によって構成される2次元座標系において、各前記エッジ点の勾配の方向と前記第1の軸の方向とのなす角度と、前記2次元座標系における原点に対する各前記エッジ点の方向と前記第1の軸の方向とのなす角度との角度差が90度以上であるエッジ点を通る直線群を、前記第1のハフ空間部に投票し、前記角度差が90度未満の場合であるエッジ点を通る直線群を、前記第2のハフ空間部に投票し、前記第1及び第2のハフ空間部のそれぞれの投票結果に基づいて、前記入力画像中の直線を検出する、
直線検出プログラム。
【請求項8】
撮影画像を取得する画像取得手段と、
前記画像取得手段で取得された前記撮影画像を入力画像として前記入力画像内の直線を検出する請求項1又は2記載の直線検出装置と、
を備える撮影システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図13】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図13】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−109657(P2013−109657A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−255415(P2011−255415)
【出願日】平成23年11月22日(2011.11.22)
【出願人】(504150461)国立大学法人鳥取大学 (271)
【Fターム(参考)】
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願日】平成23年11月22日(2011.11.22)
【出願人】(504150461)国立大学法人鳥取大学 (271)
【Fターム(参考)】
[ Back to top ]