図形形状認識装置、図形形状認識方法、およびプログラム
【課題】高速な図形の形状認識を行い、さらに並列処理に最適な領域単位で処理することでより高速な図形の形状認識を行う図形形状認識方法および図形形状認識装置を提供することを目的とする。
【解決手段】図形形状認識装置10は、画像データ取り込み部101と、二値化処理部102と、エッジ処理部103と、複数の特徴点判定処理部110(a,b,c・・・)と、特徴点集合記憶部117と、複数の頂点候補判定処理部120(a,b,c・・・)と、頂点候補集合記憶部127と、複数の図形形状認識処理部130(a,b,c・・・)と、頂点集合記憶部137と、画像出力部140とから構成されている。また、図形形状認識装置10には、カメラ11と、画像表示装置13が接続されている。
【解決手段】図形形状認識装置10は、画像データ取り込み部101と、二値化処理部102と、エッジ処理部103と、複数の特徴点判定処理部110(a,b,c・・・)と、特徴点集合記憶部117と、複数の頂点候補判定処理部120(a,b,c・・・)と、頂点候補集合記憶部127と、複数の図形形状認識処理部130(a,b,c・・・)と、頂点集合記憶部137と、画像出力部140とから構成されている。また、図形形状認識装置10には、カメラ11と、画像表示装置13が接続されている。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、図形形状認識装置、図形形状認識方法、およびプログラムに関する。
【背景技術】
【0002】
近年、現実環境にコンピューターを用いて情報を付加提供するAR(Augmented Reality;拡張現実)の技術が注目されている。ARの実現方法としては各種の方法が提案されているが、その1つとしてマーカーを使う方法(マーカー型AR)が提案されている。マーカーを使う方法においては、予めマーカーとして定められている二次元バーコード等の画像を用い、このマーカーを対象となる空間である画像内に設置する。図24は、マーカーの一例を示す図である。また、図25は、二値化されたマーカーを含む入力画像の一例を示す図である。図25のように、画像中に図24のマーカーが配置されている。このように、図形形状認識装置が、マーカーを含む画像を取得し、取得した画像中からマーカーを検出し、検出したマーカーに予めリンクされているプログラム等が起動する。具体的な例として、名刺にマーカーを埋め込んで生成した場合、このマーカーを含む名刺の画像をカメラで撮像して、図形形状認識装置で処理を行うと、マーカーにリンクした人物の写真や動画が再生される。
【0003】
このような撮像された画像からの図形形状認識装置における図形形状認識手法としては、以下のような手法がある。まず、撮像された画像を取得し、取得した画像(濃淡画像)にエッジ処理を行うか、もしくは取得した画像を二値化し、二値化した画像に対してエッジ処理を行う。そして、図形形状認識装置が、エッジ処理した情報に基づいてラベリング処理を行うことで、検出物体の輪郭を抽出して、抽出した輪郭情報に基づいて検出物体の形状認識を行うといった手法がある(例えば、特許文献1参照)。
【0004】
ここで、ラベリング処理とは、エッジ処理した画像情報を用いて、同じ連結成分に属する全ての画素に同じラベルを割り当て、異なった連結成分には異なったラベルを割り当てる処理である。図26は、ラベリング処理を説明する図である。図26において、探索開始点から同じ連結成分を境界追跡法(例えば8近傍)のアルゴリズムによる探索を行い、ラベル1を割り当てる。同様に異なる連結成分にはラベル2、ラベル3が割り当てられる。このようにして、同じ連結部分を検出することで、取得された画像の中から輪郭を抽出する。図26は、ラベリング処理された画像の一例を示す図である。図27は、図25の画像をラベリングした例であり、抽出された輪郭の一部を示している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平5−165967号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
例えば、このようなARをインターネット等のWebアプリケーション等で実現する場合、図形形状認識装置として一般のコンピューター等が利用可能である。近年のコンピューターはマルチコア化が進んでおり、このようなマルチコアを有効に利用するためには、図形形状認識方法において、取得した画像を一定の領域単位に分割して並列処理する必要がある。
しかしながら、特許文献1の手法において、取得された画像を一定の領域単位に分割しようとしても、ラベリングの探索範囲が取得された画像によって変化するため、単純に処理領域を分割することは困難であるという課題があった。また、仮に予め定めておいた領域ごとに分割して並列処理を行った場合、ラベリングを行った対象が分割により分断されてしまうこともある。この場合、分断された各ラベル領域が同一の領域であるのかを別途判定する必要が生じてしまい、並列処理と単一処理との演算コストが変わらないか、演算量が増加してしまう場合もあるという課題があった。
【0007】
本発明は、上記の課題に鑑みてなされたものであって、高速な図形の形状認識を行い、さらに並列処理に最適な領域単位で処理することでより高速な図形の形状認識を行う図形形状認装置、図形形状認識方法、およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明は、図形形状認識装置において、エッジ処理した入力画像の全ての画素を1画素ずつ参照し、線分の交点である特徴点を全て検出する特徴点判定処理部と、前記特徴点判定部が検出した全ての前記特徴点を1つずつ参照し、全ての頂点候補を検出する頂点候補判定処理部と、前記頂点候補判定処理部が検出した頂点候補を1つずつ参照し、参照した前記頂点候補に基づき当該頂点候補を含み図形を構成する他の頂点候補を検出し、検出した前記頂点候補に基づいて図形形状を認識する図形形状認識処理部とを備えることを特徴としている。
【0009】
また、本発明は、図形形状認識装置において、エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理部と、前記特徴点判定部が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判定処理部と、前記頂点候補判定部が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理部とを備えることを特徴としている。
【0010】
また、本発明は、図形形状認識装置において、前記特徴点判定処理部は、参照した前記画素の八近傍における隣接画素同士の接続および接触、あるいは、接続または接触の構成に基づいて構成パターンを検出し、検出した構成パターンに基づいて前記画素が特徴点か否かを判定することを特徴としている。
【0011】
また、本発明は、図形形状認識装置において、前記頂点候補判定処理部は、参照した特徴点を特徴付ける情報を用いて前記特徴点に隣接している画素を順次探索し、探索した結果に基づき前記特徴点を始点とし探索終了点を終了点とする2本のベクトルを生成し、生成した前記2本のベクトルのなす角を算出し、生成した前記2本のベクトルの各距離と前記なす角を用いて頂点候補か否かを判定することを特徴としている。
【0012】
また、本発明は、図形形状認識装置において、前記特徴点判定処理部、前記頂点候補判定処理部、前記図形形状認識処理部のうち少なくとも1つの処理部を複数備え、複数の前記特徴点判定処理部が並列処理、または複数の前記頂点候補判定処理部が並列処理、または複数の前記図形形状認識処理部が並列処理することを特徴としている。
【0013】
また、本発明は、図形形状認識方法において、エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理工程と、前記特徴点判定処理工程が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判処理工程と、前記頂点候補判定処理工程が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理工程とを含むことを特徴としている。
【0014】
また、本発明は、図形形状認識装置のプログラムにおいて、コンピューターに、エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理工程と、前記特徴点判定処理工程が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判処理工程と、前記頂点候補判定処理工程が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理工程とを実行させることを特徴としている。
【発明の効果】
【0015】
本発明によれば、取得した画像から、画素単位で線分の交点である特徴点の抽出を行い、抽出した特徴点に関する情報を特徴点集合として生成し、生成した特徴点集合から頂点候補を抽出し、抽出した特徴点候補に関する情報を頂点候補集合として生成し、さらに生成した頂点候補集合から図形の頂点の抽出と他の頂点の推定を行うことが可能となる。さらにまた、各処理を並列演算に最適な画素単位にしたため、並列演算による高速な図形形状の認識を行うことが可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の実施形態に係る図形形状認識装置の構成の一例を示すブロック図である。
【図2】同実施形態に係る図24の二値化画像をエッジ処理した後の画像データの一例を示す図である。
【図3】同実施形態に係る検出した特徴点の一例を示す図である。
【図4】同実施形態に係る頂点候補を説明する図である。
【図5】同実施形態に係る特徴点集合の構成の一例を示す図である。
【図6】同実施形態に係る頂点候補集合の構成の一例を示す図である。
【図7】同実施形態に係る頂点集合の構成の一例を示す図である。
【図8】同実施形態に係る図形形状認識方法のフローチャートである。
【図9】同実施形態に係る特徴点処理手順のフローチャートである。
【図10】同実施形態に係る頂点候補処理手順のフローチャートである。
【図11】同実施形態に係る頂点処理手順のフローチャートである。
【図12】同実施形態に係る連結点と分岐点の例を説明する図である。
【図13】同実施形態に係る注目点と8近傍にある画素の接続および接触、あるいは、接続または接触の構成がノイズと判定される例を説明する図である。
【図14】同実施形態に係る注目点と8近傍にある画素の接続および接触、あるいは、接続または接触の構成が特徴点ではないと判定される例を説明する図である。
【図15】同実施形態に係る特徴点が連結点の場合の探索を説明する図である。
【図16】同実施形態に係る特徴点が分岐点の場合の探索を説明する図である。
【図17】同実施形態に係る探索結果およびベクトル生成手法を説明する図である。
【図18】同実施形態に係る正N(Nは5以上の奇数の整数)角形の場合の頂点抽出手法を説明する図である。
【図19】同実施形態に係る正N(Nは5以上の奇数の整数)角形の場合の頂点推定手法を説明する図である。
【図20】同実施形態に係る正N(Nは6以上の偶数の整数)角形の場合の頂点抽出手法を説明する図である。
【図21】同実施形態に係る正N(Nは6以上の偶数の整数)角形の場合の頂点推定手法を説明する図である。
【図22】同実施形態に係る正三角形の場合の頂点抽出手法および頂点推定手法を説明する図である。
【図23】同実施形態に係る正方形の場合の頂点抽出手法および頂点推定手法を説明する図である。
【図24】マーカーの一例を示す図である。
【図25】二値化されたマーカーを含む入力画像の一例を示す図である。
【図26】ラベリング処理を説明する図である。
【図27】ラベリング処理された画像の一例を示す図である。
【発明を実施するための形態】
【0017】
以下、本発明の実施形態について、図1〜図25を用いて説明する。なお、本発明は係る実施形態の構成に限定されず、本発明の技術思想の範囲内で種々の変更が可能である。
【0018】
図1は、図形形状認識装置の構成の一例を示すブロック図である。図1のように、図形形状認識装置10は、画像データ取り込み部101と、二値化処理部102と、エッジ処理部103と、複数の特徴点判定処理部110(a,b,c・・・)と、特徴点集合記憶部117と、複数の頂点候補判定処理部120(a,b,c・・・)と、頂点候補集合記憶部127と、複数の図形形状認識処理部130(a,b,c・・・)と、頂点集合記憶部137と、画像出力部140とを備える。また、図形形状認識装置10には、カメラ11と、画像表示装置13が接続されている。
また、複数の特徴点判定処理部110(a,b,c・・・)は、それぞれ連結点・分岐点判断部111と、ノイズ除去部112と、特徴点判定部113と、特徴点集合生成部114とを備える。
また、複数の頂点候補判定処理部120(a,b,c・・・)は、それぞれ探索部121と、ベクトル生成部122と、頂点角度判定部123と、頂点候補判定部124と、頂点候補集合生成部125とを備える。
また、複数の図形形状認識処理部130(a,b,c・・・)は、それぞれ頂点抽出部131と、頂点推定部132と、図形形状認識部133とを備える。
【0019】
カメラ11は、例えば受光レンズとCCDカメラ等で構成され、検出図形を含む入力画像を撮影し、撮影された画像データを図形形状認識装置10に送信する。画像表示装置13は、図形形状認識装置10から図形形状認識結果の表示用の画像を受信し、受信した画像を表示する。
【0020】
画像データ取り込み部101は、カメラ11により撮影された検出図形を含む入力画像を取り込み、取り込んだ画像データを二値化処理部102に出力する。
【0021】
二値化処理部102は、画像データ取り込み部101が出力する画像データを取り込む。また、二値化部102は、取り込んだ画像データに対して、閾値を用いて二値化し、二値化した画像情報をエッジ処理部103に出力する。なお、二値化における閾値の設定方法は、例えば1979年に大津展之によって提案された方法(以下、大津の方法)を用いて行う。図25は、二値化されたマーカーを含む入力画像の一例を示す図である。
【0022】
エッジ処理部103は、二値化処理部102が出力する画像データを取り込む。また、エッジ処理部103は、取り込んだ二値化された画像データに対して、ラプラシアンフィルタを用いた一般的な手法を用いたエッジ処理を行う。また、エッジ処理部103は、エッジ処理した画像データをエッジ集合としてエッジ処理部103に書き込んで記憶させる。図2は、図25の二値化画像をエッジ処理した後の画像データの一例を示す図である。また、エッジ集合は、エッジ処理部103がエッジ処理により生成した各画素の座標(x,y)の各データを有している。また、エッジ処理は、ラプラシアンフィルタ以外の一般的な手法を用いても良い。
【0023】
特徴点判定処理部110(a,b,c・・・)は、エッジ処理部103に記憶されているエッジ集合の中から未参照の画素を未参照の画素がなくなるまで参照する。また、特徴点判定処理部110(a,b,c・・・)は、参照した画素の特徴点判定を行い、線分の交点である特徴点と判定した画素および特徴点を特徴付ける情報を特徴点集合として生成し、生成した特徴点集合を特徴点集合記憶部117に書き込んで記憶させる。なお、参照するとは、エッジ処理部103に記憶されているエッジ集合の中から画素を読み出す処理のことであり、また未参照の画素を未参照の画素がなくなるまで参照するとは、まだ読み出していない画素を未参照の画素がなくなるまで読み出す処理のことである。
また、各特徴点判定処理部110(a,b,c・・・)は、特徴点判定処理を並列に処理する。例えば、取得した画像が640×480画素(=307200画素)の場合、特徴点判定処理部110aが1番目の画素の特徴点判定処理を行い、並列して特徴点判定処理部110bが4番目の画素の特徴点判定処理を行い、並列して特徴点判定処理部110cが7番目の画素の特徴点判定処理を行う。特徴点判定処理を終了した特徴点判定処理部110(a,b,c・・・)は、未参照の画素を未参照の画素がなくなるまで参照して、参照した画素の特徴点判定処理を順次行い、取得した画像全ての画素について特徴点判定処理を行う。また、特徴点判定処理部110(a,b,c・・・)は、全てのエッジ集合の画素に対して特徴点判定が終了した後、特徴点集合の生成が終了した情報を頂点候補判定処理120(a,b,c・・・)に出力する。また、各特徴点判定処理部110(a,b,c・・・)が、取得した画素を参照する順番は、例えばエッジ集合の中から順番に読み出しても良く、あるいはランダムに読み出しても良く、さらには、特徴点判定処理部110(a,b,c・・・)ごとに予め定めた領域を読み出すようにしても良い。
【0024】
以下に、特徴点判定処理部110(a,b,c・・・)が備える各機能部について、説明する。
連結点・分岐点判定部111は、エッジ処理部103が記憶するエッジ集合の中から未参照の画素の中から1画素を参照する。次に、連結点・分岐点判定部111は、参照した画素を注目点とし、エッジ集合を参照して注目点の8近傍に2点以上の黒画素が存在しているか否かを判定する。注目点の8近傍に2点以上の黒画素が存在していると判定した場合、連結点・分岐点判定部111は、注目点と8近傍に存在する黒画素との接続および接触、あるいは、接続または接触の構成パターンが連結点であるか、分岐点であるかを判定する。
連結点と分岐点の具体的な例を、図12を用いて説明する。図12(a)において、画素m5が注目点であり、m1〜m9(m5を除く)の画素が8近傍の画素である。図12(a)のように、注目点m5に画素m8と画素m3が接続および接触、あるいは、接続または接触している状態を、構成パターンの1つとして「連結点」と定義する。連結点の他の例は、(m1,m5,m8),(m2,m5,m7),(m2,m5,m9),(m4,m5,m3),(m4,m5,m9),(m1,m5,m6),(m7,m5,m6)の3画素が接続および接触、あるいは、接続または接触している状態である。
図12(b)のように、注目点m5に画素m2と画素m6および画素m8が接続および接触、あるいは、接続または接触している状態を、構成パターンの1つとして「分岐点」と定義する。連結点の他の例は、(m2,m4,m5,m8),(m2,m4,m5,m6),(m4,m5,m6,m8)の4画素が接続および接触、あるいは、接続または接触している状態である。
【0025】
ノイズ除去部112は、連結点・分岐点判定部111が参照した注目点、および注目点の8近傍に存在する2つの黒画素の接続および接触、あるいは、接続または接触の構成パターンのうち、ノイズの構成パターンを除去する。特徴点判定処理部110(a,b,c・・・)が抽出したい特徴点は、図形を特徴付けている線分の交点であり、辺である線分ではない。すなわち、特徴点とは、複数の線分をつなぎ合わせた交点(線分の終点同士をつなぎ合わせた点も含む)であり、多角形の180度以内の頂点、多角形の180度以上の頂点、閉じていない線分の交点などを備えている。このため、直線は特徴点ではないため、参照した注目点、および注目点の8近傍の2つの黒画素が直線的に接続および接触、あるいは、接続または接触している状態を、構成パターンの1つとして「ノイズ」と定義する。具体例として、注目点と8近傍にある画素の接続および接触、あるいは、接続または接触の構成パターンを、ノイズと判定する例を、図13を用いて説明する。図13のように、注目点と8近傍にある黒画素が、縦または横、または斜めに直線的に接続および接触、あるいは、接続または接触している構成パターンがノイズである。
【0026】
特徴点判定部113は、連結点・分岐点判断部111の判定結果とノイズ除去部112の判定結果に基づき、特徴点を判定する。特徴点と判定する条件は、連結点・分岐点判断部111が連結点または分岐点と判定した画素、かつノイズ除去部112がノイズと判定しなかった画素である。また、特徴点ではないと判定する条件は、連結点・分岐点判断部111が連結点または分岐点と判定しなかった画素、またはノイズ除去部112がノイズと判定した画素、または8近傍に黒画素が2画素以上ない画素である。図14は、注目点と8近傍にある画素の接続および接触、あるいは、接続または接触の構成パターンが特徴点ではないと判定される例を説明する図である。図14(a)のように、参照した画素(注目点)の8近傍に1つの黒画素しか接続あるいは接触していない構成パターンを、特徴点判定部113は特徴点ではないと判定する。また、図14(b)のように、参照した画素(注目点)の8近傍に4つの黒画素が接続および接触、あるいは、接続または接触している構成パターンを、特徴点判定部113は特徴点ではないと判定する。
すなわち構成パターンとは、連結点・分岐点判断部111が参照した画素とその画素の8近傍の画素の接続および接触、あるいは、接続または接触の構成によるものである。また、構成パターンの種類は、連結点であるパターンと、分岐点であるパターンと、ノイズであるパターンと、8近傍に黒画素が2画素以上ないパターンなどである。図3は、検出した特徴点の一例を示す図である。図3において、白抜き丸〇は、特徴点判定部113が検出した特徴点の一例である。
【0027】
特徴点集合生成部114は、特徴点判定部113が特徴点であると判定した画素を特徴点として特徴付ける情報として、連結点・分岐点判断部111が参照した画素とその8近傍に接続および接触、あるいは、接続または接触している2つ以上の黒画素の座標と、構成パターンの種類(連結点または分岐点)を関連付けて特徴点集合を生成し、生成した特徴点集合を特徴点集合記憶部117に書き込んで記憶させる。また、特徴点集合生成部114は、特徴点集合の生成が終了したことを頂点候補判定処理部120(a,b,c・・・)に出力する。図5は、特徴点集合の構成の一例を示す図である。図5のように特徴点集合は、表形式のデータとして実現されており、特徴点の座標と、特徴点の構成パターン(連結点か分岐点か)と、特徴点に接続および接触、あるいは、接続または接触されている画素の座標の各データを有している。
【0028】
頂点候補判定処理部120(a,b,c・・・)は、全てのエッジ集合の画素に対して特徴点判定が終了した後、特徴点集合の生成が終了した情報を特徴点判定処理部110(a,b,c・・・)から取り込んだ後、特徴点集合記憶部117が記憶している特徴点集合の中から未参照の特徴点を未参照の特徴点がなくなるまで参照する。頂点候補判定処理部120(a,b,c・・・)が特徴点を参照する順番は、特徴点集合記憶部117が記憶している順番に参照しても良く、あるいはランダムに参照しても良い。また、頂点候補判定処理部120(a,b,c・・・)は、参照した特徴点について 頂点候補判定を行い、頂点候補と判定した特徴点および頂点候補を特徴付ける情報を頂点候補集合として頂点候補記憶部127に記憶する。
また、各頂点候補判定処理部120(a,b,c・・・)は、頂点候補判定処理を並列に処理する。例えば、取得した特徴点集合が100組合せの場合、頂点候補判定処理部120aが1番目の特徴点集合の組合せについて頂点候補判定処理を行い、並列して頂点候補判定処理部120bが2番目の特徴点集合の組合せについて頂点候補判定処理を行い、並列して頂点候補判定処理部120cが3番目の特徴点集合の組合せについて頂点候補判定処理を行う。頂点候補判定処理を終了した頂点候補判定処理部120(a,b,c・・・)は、未参照の特徴点集合の組合せについて順次参照して、参照した特徴点集合の組合せについて頂点候補判定処理を順次行い、参照した全ての特徴点集合について頂点候補判定処理を行う。また、頂点候補判定処理部120(a,b,c・・・)は、全ての特徴点集合の特徴点に対して頂点候補判定が終了した後、頂点候補集合の生成が終了した情報を図形形状認識処理部130(a,b,c・・・)に出力する。
【0029】
以下に、頂点候補判定処理部120(a,b,c・・・)が備える各機能部について、説明する。
探索部121は、特徴点判定処理部110(a,b,c・・・)から特徴点集合の生成が終了した情報を取り込んだ後、特徴点集合記憶部117が記憶している特徴点集合の中から未参照の1つの特徴点集合を参照する。また、探索部121は、参照した特徴点集合から特徴点の座標と、参照した特徴点に接続および接触、あるいは、接続または接触している画素の座標と構成パターン(連結点、分岐点)を読み出す。また、探索部121は、読み出した特徴点の8近傍に接続および接触、あるいは、接続または接触している2つの黒画素を起点として選択して、後述する探索手順に基づき接続および接触、あるいは、接続または接触している画素を、所定の回数、順次探索する。また、探索部121は、参照した特徴点の座標と探索結果の2つの探索終点の座標を、ベクトル生成部122に出力する。図17は、探索結果およびベクトル生成手法を説明する図であり、図17(a)は、特徴点の8近傍に接続および接触、あるいは、接続または接触している画素から順次探索した結果の例である。図17(a)の例では、探索部121が特徴点の8近傍に接続および接触、あるいは、接続または接触している黒画素を起点に、接続および接触、あるいは、接続または接触している黒画素m13とm32から順次探索した結果、探索終点A(m91(x9,y1))と探索終点B(m39(x3,y9))に到達する。
【0030】
ベクトル生成部122は、探索部121が探索した結果である特徴点の座標と、探索した終点の座標を取り込む。また、ベクトル生成部122は、取り込んだ特徴点の座標と、探索した終点の座標を用いて、2本のベクトル(特徴点と探索終点A、特徴点と探索終点B)を生成し、特徴点の座標と生成した2本のベクトルを頂点角度判定部123に出力する。図17(b)は、特徴点と探索終点からベクトルを生成した例である。図17(b)の例では、ベクトル生成部122は、特徴点m22(x2,y2)から探索終点A(m91(x9,y1))に向かうベクトルAと、特徴点m22(x2,y2)から探索終点B(m39(x3,y9))に向かうベクトルを生成する。
【0031】
頂点角度判定部123は、ベクトル生成部122が出力する特徴点の座標と2本のベクトルを取り込む。また、頂点角度判定部123は、取り込んだ2本のベクトルのなす角θを算出する。また、頂点角度判定部123は、算出したなす角θについて、次式(1)を満たすNを算出する。
【0032】
θ=(((N−2)×π)/N)±α・・・(1)
【0033】
式(1)において、Nは正N角形を構成する頂点の数、αは図形形状を認識する上での予め定められた誤差角度である。また、誤差角度αは、例えば5度などの一定の角度でも良く、あるいはNに応じて設定しても良い。また、頂点角度判定部123は、算出したNが3以下(なす角θが60度以下)、さらに180度以上の場合は、式(1)を満たさないと判定する。また、頂点角度判定部123は、頂点角度判定の判定結果と、特徴点の座標、2本のベクトルおよびなす角θを頂点候補判定部124に出力する。
【0034】
頂点候補判定部124は、頂点角度判定部123が出力する判定結果と、特徴点の座標と、2本のベクトルおよびなす角θを取り込む。頂点候補判定部124は、取り込んだ頂点角度判定の判定結果と、特徴点の座標と、2本のベクトルおよびなす角θに基づいて、探索部121が参照した特徴点を頂点候補か否か判定する。頂点候補判定部124は、特徴点に対して2本のベクトルが存在ない場合、特徴点に接続および接触、あるいは、接続または接触している画素が連続していないため、すなわち図形のコーナーではないため頂点候補ではないと判定する。また、頂点候補判定部124は、頂点候補と判定した特徴点の座標、2本のベクトル、なす角θ、および式(1)との比較により算出したNを頂点候補集合生成部125に出力する。図4は、頂点候補を説明する図である。図4の白抜き丸〇は、頂点候補判定部124が頂点候補として判定した特徴点の一例である。
【0035】
頂点候補集合生成部125は、頂点候補判定部124が出力する特徴点の座標、2本のベクトル、なす角θ、およびNを取り込む。また、頂点候補集合生成部125は、特徴点を頂点候補として特徴付ける情報として、取り込んだ特徴点の座標、2本のベクトル、なす角θ、およびNを関連付けて頂点候補集合を生成し、生成した頂点候補集合を頂点候補集合記憶部127に記憶する。図6は、頂点候補集合の構成の一例を示す図である。図6のように、頂点候補集合は、表形式のデータとして実現されており、特徴点の座標と、2本のベクトル(a、b)と、Nと、なす角θの各データを有している。
【0036】
図形形状認識処理部130(a,b,c・・・)は、頂点候補判定処理部120(a,b,c・・・)から頂点候補集合の生成が終了した情報を取り込んだ後、頂点候補集合記憶部127が記憶している頂点候補集合の中から未参照の頂点候補を未参照の頂点候補がなくなるまで参照する。図形形状認識処理部130(a,b,c・・・)が頂点候補を参照する順番は、頂点候補集合記憶部127が記憶している順番に参照しても良く、あるいはランダムに参照しても良い。また、図形形状認識処理部130(a,b,c・・・)は、参照した頂点候補について、参照した頂点候補を含む図形を構成する他の頂点抽出と推定を行い、参照した頂点候補と抽出および推定した頂点に基づき図形形状の認識を行い、図形形状の認識結果を画像出力部140に出力する。
また、各図形形状認識処理部130(a,b,c・・・)は、図形形状認識処理を並列に処理する。例えば、取得した頂点候補集合が20組合せの場合、図形形状認識処理部130aが1番目の頂点候補集合の組合せについて図形形状認識処理を行い、並列して図形形状認識処理部130bが2番目の頂点候補集合の組合せについて図形形状認識処理を行い、並列して図形形状認識処理部130cが3番目の頂点候補集合の組合せについて図形形状認識処理を行う。図形形状認識処理を終了した図形形状認識処理部130(a,b,c・・・)は、未参照の頂点候補集合の組合せについて順次参照して、参照した頂点候補集合の組合せについて図形形状認識処理を順次行い、取得した全ての頂点候補集合について図形形状認識処理を行う。
【0037】
以下に、図形形状認識処理部130(a,b,c・・・)が備える各機能部について、説明する。
頂点抽出部131は、頂点候補集合記憶部127が記憶している頂点候補集合の中から未参照の頂点候補集合を順次参照して、参照した頂点候補集合から頂点候補(以後、参照頂点候補)の座標、ベクトル、Nおよびなす角θを読み出す。また、頂点抽出部131は、N(正N角形)に基づき、参照頂点候補を含む図形の他の頂点を、頂点候補集合の中から抽出し、抽出した頂点候補(以下、抽出頂点候補という)と参照頂点候補の各頂点候補集合を頂点推定部132に出力する。
【0038】
頂点推定部132は、頂点抽出部131から参照頂点候補と抽出頂点候補の頂点集合を取り込む。また、頂点推定部132は、取り込んだ参照頂点候補と抽出頂点候補の頂点候補集合を用いて、それらの頂点候補を含む図形の他の頂点候補の座標を、後述する頂点推定手法を用いて演算により推定する。また、頂点推定部132は、参照頂点候補と抽出頂点候補の各頂点候補集合、および推定した頂点を関連づけ、頂点集合として頂点集合記憶部137に記憶する。
図7は、頂点集合記憶部137が記憶する頂点集合の構成の一例を示す図である。図7のように、頂点集合は、表形式のデータとして実現されており、図形ごとに頂点の座標と各頂点のベクトルの各データを有している。
【0039】
図形形状認識部133は、頂点集合記憶部137に記憶されている頂点集合を読み出す。また、図形形状認識部133は、読み出した頂点集合に基づき、その頂点が構成する図形形状を認識し、認識した図形形状およびその図形を構成している各頂点の座標等を画像出力部140に出力する。
【0040】
画像出力部140は、図形形状認識部133が認識した図形形状およびその図形を構成している各頂点の座標等が認識結果を取り込み、取り込んだ認識結果を画像表示装置13に出力する。
【0041】
[探索手順の説明]
次に、頂点候補判定処理部120(a,b,c・・・)内の探索部121の探索手順について、図15〜図17を用いて詳細に説明する。図15は、特徴点が連結点の場合の探索を説明する図である。図16は、特徴点が分岐点の場合の探索を説明する図である。図17は、探索結果およびベクトル生成手法を説明する図である。
【0042】
まず、特徴点が連結点の場合の探索手順について図15を用いて説明する。説明を簡略化するために、5×5(=25画素)内での探索を例に説明する。便宜的に、図15(a)のように各画素についてm11〜m55の位置番号をつけ説明を行う。特徴点集合記憶部117から読み出した特徴点集合が(特徴点m22(x2,y2);連結点;接続および接触、あるいは、接続または接触されている画素m23(x2,y3),m31(x3,y1))の場合、探索部121は、図15(b)のように、特徴点m22に接続および接触、あるいは、接続または接触されている画素m23とm31をそれぞれ起点A、起点Bに設定し、まず、起点Aから探索を開始する。
【0043】
次に、探索部121は、起点A(m23)の8近傍に接続および接触、あるいは、接続または接触している特徴点以外の黒画素をエッジ処理部103内に記憶されているエッジ集合から抽出する。図15(c)のように起点A(m23)の8近傍に接続および接触、あるいは、接続または接触している画素はm14とm24である。このように起点に接続および接触、あるいは、接続または接触している画素が複数ある場合、探索部121は次の探索画素をランダムに選択する。また、図15(d)のように、探索途中で探索先に2つ以上の接続および接触、あるいは、接続または接触している黒画素がある場合、1つ前の画素からの距離が長い方を選択する。具体的には、探索部121は、起点Aとしてm23から探索開始し、次にランダムに選択したm24に進む。次に、探索部121は、m24に接続および接触、あるいは、接続または接触している黒画素m25とm35の内、m24の1つ前の画素m23から距離の長い方の画素であるm35に進む。
【0044】
このように、探索部121は、起点A(m23)から、m24、次にm35のように探索を続け、所定回数の探索、例えば7回探索を行う。7回の探索途中で接続および接触、あるいは、接続または接触している画素が存在しなくなった場合、そのルートの探索は打ち切り、途中で次の探索画素をランダムに選択した画素に戻り探索を行う。
同様に、図15(e)のように、探索部121は、起点B(m31)からの探索を行う。なお、探索の順番は、起点Aまたは起点Bのどちらを先に行っても良い。
【0045】
次に、特徴点が分岐点の場合の探索手順について図16を用いて説明する。なお、図16の各画素については、図15(a)と同一のm11〜m55の位置番号を用いて説明を行う。連結点の探索手順との違いは、特徴点の8近傍に3つの黒画素が存在していることである。探索部121は、特徴点の8近傍にある3つの黒画素の中からランダムに2つの画素を選択して、起点A、起点Bとする。図16(a)の例では、m23を起点Aに、m31を起点Bに選択する。以下、図16(b)のように、起点Aおよび起点Bからの探索は、連結点の場合と同様に行う。
【0046】
図17(a)は、特徴点が連結点の探索結果の一例を示す図である。図17(a)のように、特徴点(m22)の8近傍にある黒画素のm13を起点Aとして探索を行った結果、探索終点A(m19(x1,y9))に到達し、他方、特徴点(m22)の8近傍にある黒画素のm32を起点Bとして探索を行った結果、探索終点B(m93(x9,y3))に到達する。
探索部121は、特徴点の8近傍にある黒画素を起点に探索を行った結果、予め定めた回数の探索を行い2つの起点に対する探索終点に到達した場合、参照した特徴点の座標と2つの探索終点の座標をベクトル生成部122に出力する。
また、特徴点の8近傍にある黒画素を起点に探索を行った結果、予め定めた回数の探索を行わないうちに探索終了点が探索できない場合、すなわち、その先に画素がない場合、探索部121は、参照した特徴点の座標と、探索した結果、探索終点が存在しなかった情報を頂点候補判定部124に出力する。
以上のようにして、探索部121は、特徴点の8近傍にある黒画素に接続および接触、あるいは、接続または接触している黒画素の探索を行う。
【0047】
[頂点抽出手法および頂点推定手法の説明]
次に、図形形状認識部(a,b,c・・・)内の頂点抽出部131が行う頂点抽出手法と、頂点推定部132が行う頂点推定手法について、図18〜図23を用いて説明する。
【0048】
まず、頂点抽出部131は、頂点候補集合記憶部127から未参照の1つの頂点候補集合(A(x0,y0))を参照する。次に、頂点抽出部131は、参照した頂点候補集合のなす角θと、2本のベクトルと、頂点候補の座標、およびNを読み出す。頂点抽出部131と頂点推定部132は、読み出したNの値に応じて以下のように頂点抽出と頂点推定を行う。
【0049】
[正N角形:Nが5以上の奇数]
Nが5以上の奇数の場合について、図18と図19を用いて説明する。図18は、正N(Nは5以上の奇数の整数)角形の場合の頂点抽出手法を説明する図である。図19は、正N(Nは5以上の奇数の整数)角形の場合の頂点推定手法を説明する図である。説明を簡略化にするために、N=5の例について説明する。
頂点抽出部131は、N=5、すなわち正五角形のため、正五角形の内角θ=108度を算出する。または、頂点抽出部131が頂点候補集合記憶部127から参照した頂点候補のなす角θを用いる。
次に、頂点抽出部131は、以下の2本のベクトルを読み出す。
【0050】
【数1】
【0051】
【数2】
【0052】
そして、頂点抽出部131は、読み出した2本のベクトルと、算出した内角θまたは参照したなす角θ=108度を用いて、次式(2)と式(3)を用いて各ベクトルa2、b2、a3、b3を算出する。
【0053】
【数3】
【0054】
【数4】
【0055】
式(2)と式(3)においてi=2,3であり、θ2=(θ+π)/2、θ3=―(θ+π)/2である。
次に、頂点抽出部131は、式(2)と式(3)により求めた以下に示す各ベクトルの組合せが、参照した頂点候補の特徴点Aからの距離diが次式(4)を満たす頂点候補を頂点候補集合記憶部127から読み出して抽出する。
【0056】
【数5】
【0057】
【数6】
【0058】
d−α≦di≦d+α・・・式(4)
【0059】
なお、式(4)において、αは頂点候補集合における各2本のベクトルのなす角の誤差角度であり、また、dは正五角形の対角線の距離である。
すなわち、図18において、頂点抽出部131は、参照した頂点候補Aのベクトルaとベクトルb、なす角θ=108と対になる2つの頂点候補Cと頂点候補Dを頂点候補集合記憶部127から抽出する。
まず、頂点抽出部131は、頂点候補C(x2,y2)、距離d2、および以下の2本のベクトルを頂点候補集合記憶部127から読み出して抽出する。
【0060】
【数7】
【0061】
次に、頂点抽出部131は、頂点候補D(x3,y3)、距離d3、および以下の2本のベクトルを頂点候補集合記憶部127から読み出して抽出する。
【0062】
【数8】
【0063】
上記の条件を満たす2つの頂点候補CとDが頂点候補集合記憶部127から抽出できた場合、頂点抽出部131は、参照した頂点候補Aを頂点であると判定する。また、頂点抽出部131は、参照した頂点候補集合(頂点A)と、抽出した2つの頂点候補集合(頂点CとD)を頂点推定部132に出力する。
上記の条件を満たす2つの頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は、参照した頂点候補Aは頂点ではないと判定する。
【0064】
なお、正五角形について説明したが、Nが5以上の奇数の正N角形の場合についても同様に、前述した頂点抽出手法を用いて2つの頂点候補を抽出する。その場合、正N角形の場合、内角θ=360度/N、i=2,3を用いて式(2)と式(3)により同様にベクトルを算出する。また、式(4)において、dは正N角形の対角線のうち一番長い対角線の距離である。
【0065】
次に、頂点推定部132は、頂点抽出部131から頂点Aと頂点Cと頂点Dの頂点候補集合を取り込む。また、頂点推定部132は、取り込んだ頂点Aと頂点Cと頂点Dの頂点候補集合を用いて、残りの頂点(BとE)を推定する。正五角形の場合について、図19を用いて頂点推定手法を説明する。
まず、頂点推定部132は、頂点A(x0,y0)と頂点C(x2,y2)または頂点D(x3,y3)の各座標を用いて、頂点Aと頂点Cと頂点Dを含む正五角形の外接円の半径rを算出する。図19において、線分ACの長さをsとし、正五角形の中点をO(xc,yc)、角度∠OACをβ、角度∠AOEとγとした場合、γ=∠AOE=2π/Nより、∠AOC=π−π/Nであるため、β=∠OAC=π/2Nとなる。したがって外接円の半径rは、次式(5)により算出できる。
【0066】
r=s/(2×cosβ)・・・(5)
【0067】
次に、頂点Aのベクトルaの単位ベクトルを以下のように置くと、正五角形の中点O(xc,yc)は、次式(6)により算出できる。
【0068】
【数9】
【0069】
【数10】
【0070】
次に、頂点推定部132は、算出した正五角形の中点O(xc,yc)から頂点AのベクトルOAを回転角度γずつ回転することで、図形の残りの頂点Bと頂点Eを次式(7)および次式(8)を用いて推定する。
【0071】
【数11】
【0072】
【数12】
【0073】
式(8)において、iは1以上でN−1以下の整数(i=(N−1)/2とi=((N−1)/2)+1は除く)である。
【0074】
また、頂点抽出部131が参照した頂点候補と抽出した2つの頂点候補と、頂点推定部132が推定した頂点とを頂点集合として、頂点推定部132が頂点集合記憶部137に書き込んで記憶させる。
【0075】
[正N角形:Nが6以上の偶数]
次に、Nが6以上の偶数の場合について、図20と図21を用いて説明する。図20は、正N(Nは6以上の偶数の整数)角形の場合の頂点抽出手法を説明する図である。図21は、正N(Nは6以上の偶数の整数)角形の場合の頂点推定手法を説明する図である。説明を簡単にするために、N=6の例について説明する。
頂点抽出部131は、頂点候補Aの以下の2本のベクトルを読み出す。
【0076】
【数13】
【0077】
【数14】
【0078】
次に、図20のように、読み出した頂点候補Aの2本のベクトルとそれぞれ符号が逆の以下の2本のベクトルを有し、かつ参照した頂点候補Aから予め定められた一定以上の距離dにある頂点候補Dを頂点候補集合記憶部127から読み出して抽出する。予め定められた一定以上の距離dは、例えば、検出したい図形が図24のようなマーカーで、図形の対角線の大きさが予め分かっている場合、マーカーの大きさに応じて設定する。
【0079】
【数15】
【0080】
【数16】
【0081】
上記の条件を満たす頂点候補Dが頂点候補集合記憶部127から抽出できた場合、頂点抽出部131は、参照した頂点候補Aは頂点であると判定する。また、頂点抽出部131は、参照した頂点候補集合(頂点A)と、抽出した頂点候補集合(頂点D)の頂点候補集合を頂点推定部132に出力する。
上記の条件を満たす頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は、参照した頂点候補は頂点ではないと判定する。
【0082】
次に、頂点推定部132は、頂点抽出部131から頂点Aと頂点Dの頂点候補集合を取り込む。また、頂点推定部132は、取り込んだ頂点Aと頂点Dにより構成される正六角形の中点O(xc,yc)を、次式(9)を用いて算出する。
【0083】
【数17】
【0084】
次に、頂点推定部132は、算出した中点O(xc,yc)から頂点A(x0,y0)へのベクトルOAを回転した値を、次式(10)で算出し、残りの頂点B,C,E,Fを抽出する。すなわち、正六角形なので、2π/N=2π/6=60度ずつベクトルOAを回転することで順次、残りの頂点B,C,E,Fを抽出する。
【0085】
【数18】
【0086】
式(10)において、iは1以上でN−1以下の整数(i=N/2は除く)である。
以上のように、頂点抽出部131が参照した頂点候補Aと抽出した頂点候補Dと、頂点推定部132が推定した頂点B,C,E,Fを頂点集合として、頂点推定部132が頂点集合記憶部137に書き込んで記憶させる。
【0087】
[正N角形:Nが3の場合]
正三角形の場合について、図22を用いて説明する。図22は、正三角形の場合の頂点抽出手法および頂点推定手法を説明する図である。頂点抽出部131は、頂点候補Aの以下の2本のベクトルを読み出す。
【0088】
【数19】
【0089】
【数20】
【0090】
次に、図22(a)と図22(b)のように、頂点抽出部131は、読み出した頂点候補Aの2本のベクトルと、次式(11)と次式(12)を用いて頂点Bのベクトルを有し、かつ参照した頂点候補Aから予め定められた一定以上の距離dにある頂点候補Bを頂点候補集合記憶部127から読み出して抽出する。予め定められた一定以上の距離dは、例えば、検出したい図形が図24のようなマーカーで、図形の対角線の大きさが予め分かっている場合、マーカーの大きさに応じて設定する。
【0091】
【数21】
【0092】
【数22】
【0093】
上記の条件を満たす頂点候補Bが頂点候補集合記憶部127から抽出できた場合、頂点抽出部131は、参照した頂点候補Aは頂点であると判定する。また、頂点抽出部131は、参照した頂点候補集合(頂点A)と、抽出した頂点候補集合(頂点B)を頂点推定部132に出力する。
上記の条件を満たす頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は、参照した頂点候補は頂点ではないと判定する。
【0094】
次に、頂点推定部132は、頂点抽出部131から頂点Aと頂点Bの各頂点候補集合を受け取る。また、頂点推定部132は、受け取った頂点Aと頂点Bの頂点候補集合から各ベクトルを読み出す。また、頂点推定部132は、読み出したベクトルを用いて、頂点Aと頂点Bの互いに向かい合わないベクトル、すなわちベクトルbとベクトルa1の交点を算出して、算出した頂点を残りの頂点C(x2,y2)として推定する。
また、頂点抽出部131が参照した頂点候補Aと抽出した頂点候補Bと、頂点推定部132が推定した頂点Cを頂点集合として、頂点推定部132が頂点集合記憶部137に書き込んで記憶させる。
【0095】
[正N角形:Nが4の場合]
正方形の場合について、図23を用いて説明する。図23は、正方形の場合の頂点抽出手法および頂点推定手法を説明する図である。頂点抽出部131は、頂点候補Aの以下の2本のベクトルを読み出す。
【0096】
【数23】
【0097】
【数24】
【0098】
次に、図22(a)と図22(b)のように、頂点抽出部131は、読み出した頂点候補Aの2本のベクトルとそれぞれ符号が逆のベクトルを有し、かつ参照した頂点候補Aから予め定められた一定以上の距離dにある頂点候補Bを頂点候補集合記憶部127から読み出して抽出する。予め定められた一定以上の距離dは、例えば、検出したい図形が図24のようなマーカーで、図形の対角線の大きさが予め分かっている場合、マーカーの大きさに応じて設定する。
【0099】
【数25】
【0100】
【数26】
【0101】
上記の条件を満たす頂点候補Bが頂点候補集合記憶部127から抽出できた場合、頂点抽出部131は、参照した頂点候補Aは頂点であると判定する。また、頂点抽出部131は、参照した頂点候補集合(頂点A)と、抽出した頂点候補集合(頂点B)を頂点推定部132に出力する。
上記の条件を満たす頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は、参照した頂点候補は頂点ではないと判定する。
【0102】
次に、頂点推定部132は、頂点抽出部131から頂点Aと頂点Bの各頂点候補集合を受け取る。また、頂点推定部132は、受け取った頂点Aと頂点Bの頂点候補集合から各ベクトルを読み出す。また、頂点推定部132は、読み出したベクトルを用いて、頂点Aと頂点Bの互いに向かい合わないベクトル、すなわちベクトルbとベクトル−aの交点を算出して、算出した頂点を残りの頂点C(x2,y2)として推定し、同様に、ベクトルaとベクトル−bの交点を算出して、算出した頂点を残りの頂点D(x4,y4)として推定する。
また、頂点抽出部131が参照した頂点候補Aと抽出した頂点候補Bと、頂点推定部132が推定した頂点Cと頂点Dを頂点集合として、頂点推定部132が頂点集合記憶部137に記憶する。
【0103】
[図形形状認識処理の手順]
次に、図形形状認識手順について、図8〜図11のフローチャート、図1の構成図を用いて説明する。図8は、図形形状認識装置10全体の図形形状認識手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
【0104】
まず、カメラ11が撮像した画像(濃淡画像)を画像データ取り込み部101が取得する(ステップS1)。画像データ取り込み部101は、取得した画像データを二値化処理部102に出力する。
【0105】
二値化処理部102は、画像データ取り込み部101が出力する画像データを取り込む。また、二値化部102は、取り込んだ画像データを、閾値を用いて二値化する(ステップS2)。また、二値化処理部102は、二値化した画像データをエッジ処理部103に出力する。なお、二値化における閾値の設定方法は、例えば大津の方法を用いて行う。
【0106】
エッジ処理部103は、二値化処理部102が出力する画像データを取り込む。また、エッジ処理部103は、取り込んだ画像データに対して、ラプラシアンフィルタ等を用いた一般的な手法によりエッジ処理を行う(ステップS3)。また、エッジ処理部103は、エッジ処理した画像情報(各黒画素の座標)をエッジ集合としてエッジ処理部103に書き込んで記憶させる。
【0107】
特徴点判定処理部110(a,b,c・・・)は、エッジ処理終了後、エッジ処理部103が記憶するエッジ集合の中から未参照の画素を順次参照して、参照した画素を特徴点か否かの判定を行う(ステップS4)。
【0108】
次に、特徴点判定処理手順について、図9のフローチャートを用いて説明する。特徴点判定処理部110a内の連結点・分岐点判定部111は、エッジ処理部103内に記憶されているエッジ集合の中から未参照の1画素を参照する(ステップS101)。
【0109】
次に、連結点・分岐点判定部111は、参照した画素を注目点とし、エッジ処理部103に記憶されているエッジ集合を参照して注目点の8近傍の画素に2点以上の黒画素が存在しているか否かを判定する。次に、注目点の8近傍に2点以上の黒画素が存在していると判定した場合、連結点・分岐点判定部111は、注目点と8近傍に存在する黒画素との接続および接触、あるいは、接続または接触の構成パターンが連結点であるか、分岐点であるかを判定する。また、ノイズ除去部112は、連結点・分岐点判定部111が参照した注目点、および注目点の8近傍に存在する2つの黒画素の接続および接触、あるいは、接続または接触の構成パターンのうち、ノイズの構成パターンを除去する。また、特徴点判定部113は、連結点・分岐点判定部111の判定結果と、ノイズ除去部112の判定結果を用いて、参照した画素が線分の交点である特徴点であるか否かを判定する(ステップS102)。
ステップS102で参照した画素が特徴点であると判定した場合(ステップS102;Yes)、特徴点集合生成部114は参照した画素(注目点)とその画素を特徴点として特徴付ける情報(画素の座標と、その画素の8近傍にある黒画素の座標と、その画素と8近傍にある黒画素との構成パターン)を特徴点集合として生成し、生成した特徴点集合を特徴点集合記憶部117に書き込んで記憶させる(ステップS103)。
ステップS102で参照した画素が特徴点でない判定した場合(ステップS102;No)、参照した画素についての特徴点判定処理を終了する。
【0110】
特徴点判定処理部110(a,b,c・・・)は、エッジ処理部103に記憶されている全てのエッジ集合に含まれる画素に対してステップS4の特徴点判定処理を行う。また、複数の特徴点判定処理部110(a,b,c・・・)は、特徴点判定処理を並列に処理する。すなわち、特徴点判定処理部110aが、エッジ集合から画素1を参照して特徴点判定処理を行い、並列して特徴点判定処理部110bは、特徴点判定処理部110aが参照していない画素を参照して特徴点判定処理を行う。また、特徴点判定処理が先に終了した特徴点判定処理部110aまたは特徴点判定処理部110bは、未参照の画素を順次参照して特徴点判定を行う。
以上の処理により、特徴点判定処理部110(a,b,c・・・)は、全てのエッジ集合の画素に特徴点判定処処理が終了した後、特徴点集合の生成が終了したことを頂点候補判定処理に出力する(ステップS5)。
【0111】
図8に戻り、頂点候補判定処理部120(a,b,c・・・)は、特徴点判定処理部110(a,b,c・・・)から全ての画素についての特徴点集合の生成が終了した情報を取り込んだ後、特徴点記憶部117が記憶している特徴点集合の中から未参照の1つの特徴点を順次参照して、参照した特徴点に対して頂点候補判定処理を行う(ステップS6)。
【0112】
次に、頂点候補判定処理手順について、図10のフローチャートを用いて説明する。頂点候補判定処理部120a内の探索部121は、特徴点集合記憶部117が記憶している特徴点集合から未参照の1つの特徴点集合を参照する(ステップS201)。
【0113】
次に、探索部121は、参照した特徴点集合に基づいて、前述した探索手順により、特徴点に接続および接触、あるいは、接続または接触している画素の探索を行う(ステップS202)。
探索部121は、特徴点の8近傍にある黒画素を起点に探索を行った結果、所定回数の探索を行い2つの起点に対する探索終点に到達した場合(ステップS202;Yes)、参照した特徴点の座標と2つの探索終点の座標をベクトル生成部122に出力する。
また、特徴点の8近傍にある黒画素を起点に探索を行った結果、所定回数の探索を行わないうちに探索終点に到達した場合、すなわち、その先に画素がない場合、探索部121は、参照した特徴点の座標と、探索した結果、探索終点が存在しなかった情報を頂点候補判定部124に出力する。頂点候補判定部124は、参照した特徴点は探索終了点が存在しないと判定し(ステップS202;No)、参照した特徴点集合の頂点候補判定処理を終了する。
【0114】
次に、ベクトル生成部122は、探索部121から特徴点の座標と2つの探索終点の座標を取り込む。ベクトル生成部122は、取り込んだ特徴点の座標と2つの探索終点の座標を用いて、前述したベクトル生成手法により2本のベクトルを生成する(ステップS203)。また、ベクトル生成部122は、特徴点の座標と生成した2本のベクトルを頂点角度判定部123に出力する。
【0115】
次に、頂点角度判定部123は、ベクトル生成部122が生成した2本のベクトルと特徴点の座標とを取り込む。また、頂点角度判定部123は、ベクトル生成部122が生成した2本のベクトルのなす角θを算出する。また、頂点角度判定部123は、算出したなす角θについて、次式(1)を満たすN(Nは正の整数)を算出する。
【0116】
θ=(((N−2)×π)/N)±α・・・(1)
【0117】
また、頂点角度判定部123は、なす角θが60度以下または180度以上の場合は、(1)式を満たさないのでNGと判定し、判定結果を頂点候補判定部124に出力する。また、頂点角度判定部123は、2本のベクトルのなす角θについて式(1)を満たすNが算出できた場合、OKと判定し、特徴点の座標と、2本のベクトルと、2本のベクトルのなす角θ、および頂点角度判定を頂点候補判定部124に出力する。
また、頂点候補判定部124は、頂点角度判定部123から特徴点の座標と、2本のベクトルと、2本のベクトルのなす角、および頂点角度判定を取り込み、取り込んだ頂点角度判定がOKの場合(ステップS204;Yes)、その特徴点を頂点候補として判定し、特徴点の座標、2本のベクトルおよび2本のベクトルのなす角θを頂点候補集合生成部125に出力する。
また、頂点候補判定部124は、受け取った頂点角度判定がNGの場合、頂点候補ではないと判定し(ステップS204;No)、参照した特徴点集合の頂点候補判定処理を終了する。
【0118】
次に、頂点候補集合生成部125は、頂点候補判定部124から、特徴点を頂点候補として特徴付ける情報として、特徴点の座標、2本のベクトルおよび2本のベクトルのなす角θを取り込む。また、頂点候補集合生成部125は、取り込んだ特徴点の座標、2本のベクトルおよび2本のベクトルのなす角θを関連付けて頂点候補集合を生成して、頂点候補集合記憶部127に書き込んで記憶させる(ステップS205)。
【0119】
頂点候補判定処理部120(a,b,c・・・)は、特徴点集合記憶部117が記憶する全ての特徴点集合に含まれる特徴点に対してステップS6の頂点候補判定処理を行う。また、複数の頂点候補判定処理部120(a,b,c・・・)は、頂点候補判定処理を並列に処理する。すなわち、頂点候補判定処理部120aが、特徴点集合から特徴点1を参照して頂点候補判定処理を行い、並列して頂点候補判定処理部120bは、頂点候補判定処理部120aが参照していない特徴点2を参照して頂点候補判定処理を行う。また、頂点候補判定処理が先に終了した頂点候補判定処理部120aまたは頂点候補判定処理部120bは、未参照の特徴点を順次参照して頂点候補判定を行う。
以上の処理により、頂点候補判定処理部120(a,b,c・・・)は、全ての特徴点集合の頂点候補判定処処理が終了した後、頂点候補集合の生成が終了した情報を図形形状認識処理部130(a,b,c・・・)に出力する(ステップS7)。
【0120】
次に、図形形状認識処理部130(a,b,c・・・)は、頂点候補判定処理部120(a,b,c・・・)から全ての特徴点についての頂点集合の生成が終了した情報を取り込んだ後、頂点候補集合記憶部127から未参照の1つの頂点候補集合を順次参照して頂点処理を行う(ステップS8)。
【0121】
次に、頂点処理手順について、図11のフローチャートを用いて説明する。図形形状認識処理部130a内の頂点抽出部131は、頂点候補集合記憶部127が記憶している頂点候補集合から未参照の1つの頂点候補集合を参照する(ステップS301)。
【0122】
次に、頂点抽出部131は、参照した頂点候補集合を用いて、その頂点候補を含む図形の他の頂点候補を、前述した頂点抽出手法により頂点候補集合記憶部127が記憶している頂点候補集合から抽出する(ステップS302)。抽出する頂点候補数は、参照した頂点候補集合のNに基づき、N=3または4以上の偶数の場合は1つの頂点候補を抽出し、N=5以上の奇数の場合は2つの頂点候補を算出する。また、頂点候補集合記憶部127から前述した各条件に合致する頂点候補が抽出できた場合、頂点抽出部131は、参照頂点候補を頂点であると判定する(ステップS302;Yes)。参照頂点候補を頂点と判定した場合、頂点抽出部131は、参照頂点候補集合と、抽出した頂点候補集合を頂点推定部132に出力する。
前述した各条件を満たす頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は参照した頂点候補を頂点ではないと判定し(ステップS302;No)、参照した頂点候補集合についての図形形状認識処理を終了する。
【0123】
次に、頂点推定部132は、頂点抽出部131が参照した頂点候補集合(以下、参照頂点候補集合)と抽出した頂点候補集合(以下、抽出頂点候補集合)を取り込む。また、頂点推定部132は、取り込んだ参照頂点候補集合と抽出頂点候補集合を用いて、これらの頂点候補を頂点として含む図形の他の頂点を前述した頂点推定手法により算出し、算出した頂点を残りの頂点として推定する。頂点の推定は、N=3の場合は1点、N=4,5の場合は2点、N=6の場合は4点について行う。
また、頂点推定部132は、参照頂点候補集合と抽出頂点候補集合と、頂点推定部132が推定した頂点の座標とベクトルとを、頂点集合として頂点集合記憶部137に書き込んで記憶させる(ステップS304)。また、頂点推定部132は、頂点処理が終了した情報を図形形状認識部133に出力する。
【0124】
図8に戻り、図形形状認識部133は、頂点推定部132から頂点処理が終了した情報を取り込んだ後、頂点集合記憶部137に記憶されている未参照の頂点集合を順次参照する。また、図形形状認識部133は、参照した頂点集合に基づき、その頂点が構成する図形形状を認識し、認識した図形形状、およびその図形を構成している各頂点の座標等を画像出力部140に出力する(ステップS9)。
【0125】
図形形状認識処理部130(a,b,c・・・)は、頂点候補集合記憶部127が記憶する全ての頂点候補集合に含まれる頂点候補に対してステップS8の頂点処理を行う。また、複数の図形形状認識処理部130(a,b,c・・・)は、頂点処理を並列に処理する。すなわち、図形形状認識処理部130aが、頂点候補集合から頂点候補1を参照して頂点処理を行い、並列して図形形状認識処理部130bは、頂点候補判定処理部120aが参照していない頂点候補2を参照して頂点処理を行う。また、頂点処理が先に終了した図形形状認識処理部120aまたは図形形状認識処理部130bは、未参照の頂点候補を順次参照して頂点判定処理を行う。
【0126】
画像出力部140は、図形形状認識部133が認識した図形形状およびその図形を構成している各頂点の座標等の図形形状認識結果を取り込み、取り込んだ図形形状認識結果を画像表示装置13に出力する(ステップS10)。また、画像表示装置13は、画像出力部140が出力した図形形状認識結果を表示する。
以上により、図形形状認識処理を終了する。
【0127】
以上のように、本実施形態によれば、撮像した画像における線分の交点である特徴点の検出を、特徴点判定処理の並列処理が行いやすい画素ごとに行うようにしたので、図形形状認識処理を並列処理することで高速化を実現することができる。また、図形形状認識において、従来技術のようにラベリング処理に替えて、図形を構成している頂点を抽出し、抽出した頂点を用いて図形の他の頂点や図形の形状を推定するようにしたので、さらに図形形状における認識処理の高速化を実現することができる。また、本実施形態の図形認識処理は、ラベリング処理のように取得した画面全体に処理を行う場合と比較し、各処理を並列して行いやすい単位に設定してあるので、複数の特徴点判定処理、または複数の頂点候補判定処理、または複数の図形形状認識処理において、各処理の計算量の均一化が容易なため、並列処理を容易にすることができる。
【0128】
また、本実施形態では、エッジ処理部103は、二値化処理部102で二値化された入力画像を用いてエッジ処理を行う例について説明したが、画像データ取り込み部101が取り込んだ画像データである濃淡画像に直接エッジ処理を行うようにしても良い。
【0129】
また、本実施形態では、頂点角度判定部123で全てのNについて式(1)を満たすか判定する例について説明したが、認識したい図形の形状が予め分かっている場合等、用途に応じて、一定の範囲のN、例えば3≦N≦10のみを頂点候補として判定しても良い。
【0130】
また、本実施形態では、図形の形状を、まず頂点候補判定処理部が1つの頂点候補を抽出し、次に図形形状認識処理部が残りの頂点を抽出し、次にこれらの抽出した頂点候補を用いて残りの頂点を推定して図形形状を認識する例について説明したが、残りの頂点を推定で算出するのではなく、図形形状認識処理部が残りの頂点を抽出するようにしても良い。この場合においても、図形形状の認識において図形の頂点のみを抽出しているので、ラベリングを行う手法と比較して高速に図形形状を認識することができる。
【0131】
また、本実施形態では、図形の形状を、まず頂点候補判定処理部が1つの頂点候補を抽出し、次に図形形状認識処理部が残りの頂点を抽出し、次にこれらの抽出した頂点候補を用いて残りの頂点を推定して図形形状を認識する例について説明したが、残りの頂点を推定により算出した後、頂点推定部132は推定した頂点と、頂点候補集合記憶部127が記憶している頂点候補集合を比較して、が頂点候補集合に実在しているか否かを判定する用ようにしても良い。これにより、さらに図形形状の認識精度を向上することができる。
【0132】
また、本実施形態では、カメラ11が撮像した画像データから図形形状を認識する例を説明したが、予め取得した画像データから図形形状認識を行っても良い。また、本実施形態では、画像データ取り込み部101が取り込んだ画像を二値化処理部102で二値化処理した後にエッジ処理する例を説明したが、取り込んだ画像データに直接エッジ処理を行っても良い。
【0133】
なお、実施形態の図1の各部の機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピューターシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等、USB(Universal Serial Bus) I/Fを介して接続されるUSBメモリー等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0134】
また、本実施形態では、特徴点判定処理と、頂点候補判定処理と、頂点処理(図形認識処理)とを、複数の特徴点判定処理部110(a,b,c・・・)と複数の頂点候補判定処理部120(a,b,c・・・)と複数の図形形状認識処理部130(a,b,c・・・)で並列処理する例について説明したが、並列処理は図示しない複数のCPUで行うことも可能である。この場合、例えば、CPU1が特徴点判定処理部110aの処理を行い、CPU2が特徴点判定処理部110bの処理を行う。または、1つのCPUで特徴点判定処理部110aと特徴点判定処理部110bとを並列処理するようにしても良い。
また、特徴点判定処理部110(a,b,c・・・)と頂点候補判定処理部120(a,b,c・・・)と図形形状認識処理部130(a,b,c・・・)の少なくとも1つが複数の処理部を備えていて、複数の特徴点判定処理部を並列処理、または複数の頂点候補判定処理部を並列処理、または複数の図形形状認識処理部を並列処理するようにしても良い。
【0135】
さらにまた、本実施形態では、特徴点判定処理と、頂点候補判定処理と、頂点処理(図形認識処理)とを、複数の特徴点判定処理部110(a,b,c・・・)と複数の頂点候補判定処理部120(a,b,c・・・)と複数の図形形状認識処理部130(a,b,c・・・)で並列処理する例について説明したが、各処理部(特徴点判定処理部110と頂点候補判定処理部120と複数の図形形状認識処理部130)はそれぞれ1つずつで並列処理を行わなくても良い。この場合においても、本実施形態で説明した特徴点判定処理や頂点候補判定処理、および頂点処理(図形認識処理)を用いれば、従来のラベリングを用いた図形形状認識装置より高速な図形形状の認識を行うことができる。
【符号の説明】
【0136】
10・・・図形形状認識装置
101・・・画像データ取り込み部
102・・・二値化処理部
103・・・エッジ処理部
110(a,b,c・・・)・・・特徴点判定処理部
117・・・特徴点集合記憶部
120(a,b,c・・・)・・・頂点候補判定処理部
127・・・頂点候補記憶部
130(a,b,c・・・)・・・図形形状認識処理部
137・・・頂点集合記憶部
140・・・画像出力部
11・・・カメラ
13・・・画像表示部
【技術分野】
【0001】
本発明は、図形形状認識装置、図形形状認識方法、およびプログラムに関する。
【背景技術】
【0002】
近年、現実環境にコンピューターを用いて情報を付加提供するAR(Augmented Reality;拡張現実)の技術が注目されている。ARの実現方法としては各種の方法が提案されているが、その1つとしてマーカーを使う方法(マーカー型AR)が提案されている。マーカーを使う方法においては、予めマーカーとして定められている二次元バーコード等の画像を用い、このマーカーを対象となる空間である画像内に設置する。図24は、マーカーの一例を示す図である。また、図25は、二値化されたマーカーを含む入力画像の一例を示す図である。図25のように、画像中に図24のマーカーが配置されている。このように、図形形状認識装置が、マーカーを含む画像を取得し、取得した画像中からマーカーを検出し、検出したマーカーに予めリンクされているプログラム等が起動する。具体的な例として、名刺にマーカーを埋め込んで生成した場合、このマーカーを含む名刺の画像をカメラで撮像して、図形形状認識装置で処理を行うと、マーカーにリンクした人物の写真や動画が再生される。
【0003】
このような撮像された画像からの図形形状認識装置における図形形状認識手法としては、以下のような手法がある。まず、撮像された画像を取得し、取得した画像(濃淡画像)にエッジ処理を行うか、もしくは取得した画像を二値化し、二値化した画像に対してエッジ処理を行う。そして、図形形状認識装置が、エッジ処理した情報に基づいてラベリング処理を行うことで、検出物体の輪郭を抽出して、抽出した輪郭情報に基づいて検出物体の形状認識を行うといった手法がある(例えば、特許文献1参照)。
【0004】
ここで、ラベリング処理とは、エッジ処理した画像情報を用いて、同じ連結成分に属する全ての画素に同じラベルを割り当て、異なった連結成分には異なったラベルを割り当てる処理である。図26は、ラベリング処理を説明する図である。図26において、探索開始点から同じ連結成分を境界追跡法(例えば8近傍)のアルゴリズムによる探索を行い、ラベル1を割り当てる。同様に異なる連結成分にはラベル2、ラベル3が割り当てられる。このようにして、同じ連結部分を検出することで、取得された画像の中から輪郭を抽出する。図26は、ラベリング処理された画像の一例を示す図である。図27は、図25の画像をラベリングした例であり、抽出された輪郭の一部を示している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平5−165967号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
例えば、このようなARをインターネット等のWebアプリケーション等で実現する場合、図形形状認識装置として一般のコンピューター等が利用可能である。近年のコンピューターはマルチコア化が進んでおり、このようなマルチコアを有効に利用するためには、図形形状認識方法において、取得した画像を一定の領域単位に分割して並列処理する必要がある。
しかしながら、特許文献1の手法において、取得された画像を一定の領域単位に分割しようとしても、ラベリングの探索範囲が取得された画像によって変化するため、単純に処理領域を分割することは困難であるという課題があった。また、仮に予め定めておいた領域ごとに分割して並列処理を行った場合、ラベリングを行った対象が分割により分断されてしまうこともある。この場合、分断された各ラベル領域が同一の領域であるのかを別途判定する必要が生じてしまい、並列処理と単一処理との演算コストが変わらないか、演算量が増加してしまう場合もあるという課題があった。
【0007】
本発明は、上記の課題に鑑みてなされたものであって、高速な図形の形状認識を行い、さらに並列処理に最適な領域単位で処理することでより高速な図形の形状認識を行う図形形状認装置、図形形状認識方法、およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明は、図形形状認識装置において、エッジ処理した入力画像の全ての画素を1画素ずつ参照し、線分の交点である特徴点を全て検出する特徴点判定処理部と、前記特徴点判定部が検出した全ての前記特徴点を1つずつ参照し、全ての頂点候補を検出する頂点候補判定処理部と、前記頂点候補判定処理部が検出した頂点候補を1つずつ参照し、参照した前記頂点候補に基づき当該頂点候補を含み図形を構成する他の頂点候補を検出し、検出した前記頂点候補に基づいて図形形状を認識する図形形状認識処理部とを備えることを特徴としている。
【0009】
また、本発明は、図形形状認識装置において、エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理部と、前記特徴点判定部が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判定処理部と、前記頂点候補判定部が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理部とを備えることを特徴としている。
【0010】
また、本発明は、図形形状認識装置において、前記特徴点判定処理部は、参照した前記画素の八近傍における隣接画素同士の接続および接触、あるいは、接続または接触の構成に基づいて構成パターンを検出し、検出した構成パターンに基づいて前記画素が特徴点か否かを判定することを特徴としている。
【0011】
また、本発明は、図形形状認識装置において、前記頂点候補判定処理部は、参照した特徴点を特徴付ける情報を用いて前記特徴点に隣接している画素を順次探索し、探索した結果に基づき前記特徴点を始点とし探索終了点を終了点とする2本のベクトルを生成し、生成した前記2本のベクトルのなす角を算出し、生成した前記2本のベクトルの各距離と前記なす角を用いて頂点候補か否かを判定することを特徴としている。
【0012】
また、本発明は、図形形状認識装置において、前記特徴点判定処理部、前記頂点候補判定処理部、前記図形形状認識処理部のうち少なくとも1つの処理部を複数備え、複数の前記特徴点判定処理部が並列処理、または複数の前記頂点候補判定処理部が並列処理、または複数の前記図形形状認識処理部が並列処理することを特徴としている。
【0013】
また、本発明は、図形形状認識方法において、エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理工程と、前記特徴点判定処理工程が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判処理工程と、前記頂点候補判定処理工程が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理工程とを含むことを特徴としている。
【0014】
また、本発明は、図形形状認識装置のプログラムにおいて、コンピューターに、エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理工程と、前記特徴点判定処理工程が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判処理工程と、前記頂点候補判定処理工程が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理工程とを実行させることを特徴としている。
【発明の効果】
【0015】
本発明によれば、取得した画像から、画素単位で線分の交点である特徴点の抽出を行い、抽出した特徴点に関する情報を特徴点集合として生成し、生成した特徴点集合から頂点候補を抽出し、抽出した特徴点候補に関する情報を頂点候補集合として生成し、さらに生成した頂点候補集合から図形の頂点の抽出と他の頂点の推定を行うことが可能となる。さらにまた、各処理を並列演算に最適な画素単位にしたため、並列演算による高速な図形形状の認識を行うことが可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の実施形態に係る図形形状認識装置の構成の一例を示すブロック図である。
【図2】同実施形態に係る図24の二値化画像をエッジ処理した後の画像データの一例を示す図である。
【図3】同実施形態に係る検出した特徴点の一例を示す図である。
【図4】同実施形態に係る頂点候補を説明する図である。
【図5】同実施形態に係る特徴点集合の構成の一例を示す図である。
【図6】同実施形態に係る頂点候補集合の構成の一例を示す図である。
【図7】同実施形態に係る頂点集合の構成の一例を示す図である。
【図8】同実施形態に係る図形形状認識方法のフローチャートである。
【図9】同実施形態に係る特徴点処理手順のフローチャートである。
【図10】同実施形態に係る頂点候補処理手順のフローチャートである。
【図11】同実施形態に係る頂点処理手順のフローチャートである。
【図12】同実施形態に係る連結点と分岐点の例を説明する図である。
【図13】同実施形態に係る注目点と8近傍にある画素の接続および接触、あるいは、接続または接触の構成がノイズと判定される例を説明する図である。
【図14】同実施形態に係る注目点と8近傍にある画素の接続および接触、あるいは、接続または接触の構成が特徴点ではないと判定される例を説明する図である。
【図15】同実施形態に係る特徴点が連結点の場合の探索を説明する図である。
【図16】同実施形態に係る特徴点が分岐点の場合の探索を説明する図である。
【図17】同実施形態に係る探索結果およびベクトル生成手法を説明する図である。
【図18】同実施形態に係る正N(Nは5以上の奇数の整数)角形の場合の頂点抽出手法を説明する図である。
【図19】同実施形態に係る正N(Nは5以上の奇数の整数)角形の場合の頂点推定手法を説明する図である。
【図20】同実施形態に係る正N(Nは6以上の偶数の整数)角形の場合の頂点抽出手法を説明する図である。
【図21】同実施形態に係る正N(Nは6以上の偶数の整数)角形の場合の頂点推定手法を説明する図である。
【図22】同実施形態に係る正三角形の場合の頂点抽出手法および頂点推定手法を説明する図である。
【図23】同実施形態に係る正方形の場合の頂点抽出手法および頂点推定手法を説明する図である。
【図24】マーカーの一例を示す図である。
【図25】二値化されたマーカーを含む入力画像の一例を示す図である。
【図26】ラベリング処理を説明する図である。
【図27】ラベリング処理された画像の一例を示す図である。
【発明を実施するための形態】
【0017】
以下、本発明の実施形態について、図1〜図25を用いて説明する。なお、本発明は係る実施形態の構成に限定されず、本発明の技術思想の範囲内で種々の変更が可能である。
【0018】
図1は、図形形状認識装置の構成の一例を示すブロック図である。図1のように、図形形状認識装置10は、画像データ取り込み部101と、二値化処理部102と、エッジ処理部103と、複数の特徴点判定処理部110(a,b,c・・・)と、特徴点集合記憶部117と、複数の頂点候補判定処理部120(a,b,c・・・)と、頂点候補集合記憶部127と、複数の図形形状認識処理部130(a,b,c・・・)と、頂点集合記憶部137と、画像出力部140とを備える。また、図形形状認識装置10には、カメラ11と、画像表示装置13が接続されている。
また、複数の特徴点判定処理部110(a,b,c・・・)は、それぞれ連結点・分岐点判断部111と、ノイズ除去部112と、特徴点判定部113と、特徴点集合生成部114とを備える。
また、複数の頂点候補判定処理部120(a,b,c・・・)は、それぞれ探索部121と、ベクトル生成部122と、頂点角度判定部123と、頂点候補判定部124と、頂点候補集合生成部125とを備える。
また、複数の図形形状認識処理部130(a,b,c・・・)は、それぞれ頂点抽出部131と、頂点推定部132と、図形形状認識部133とを備える。
【0019】
カメラ11は、例えば受光レンズとCCDカメラ等で構成され、検出図形を含む入力画像を撮影し、撮影された画像データを図形形状認識装置10に送信する。画像表示装置13は、図形形状認識装置10から図形形状認識結果の表示用の画像を受信し、受信した画像を表示する。
【0020】
画像データ取り込み部101は、カメラ11により撮影された検出図形を含む入力画像を取り込み、取り込んだ画像データを二値化処理部102に出力する。
【0021】
二値化処理部102は、画像データ取り込み部101が出力する画像データを取り込む。また、二値化部102は、取り込んだ画像データに対して、閾値を用いて二値化し、二値化した画像情報をエッジ処理部103に出力する。なお、二値化における閾値の設定方法は、例えば1979年に大津展之によって提案された方法(以下、大津の方法)を用いて行う。図25は、二値化されたマーカーを含む入力画像の一例を示す図である。
【0022】
エッジ処理部103は、二値化処理部102が出力する画像データを取り込む。また、エッジ処理部103は、取り込んだ二値化された画像データに対して、ラプラシアンフィルタを用いた一般的な手法を用いたエッジ処理を行う。また、エッジ処理部103は、エッジ処理した画像データをエッジ集合としてエッジ処理部103に書き込んで記憶させる。図2は、図25の二値化画像をエッジ処理した後の画像データの一例を示す図である。また、エッジ集合は、エッジ処理部103がエッジ処理により生成した各画素の座標(x,y)の各データを有している。また、エッジ処理は、ラプラシアンフィルタ以外の一般的な手法を用いても良い。
【0023】
特徴点判定処理部110(a,b,c・・・)は、エッジ処理部103に記憶されているエッジ集合の中から未参照の画素を未参照の画素がなくなるまで参照する。また、特徴点判定処理部110(a,b,c・・・)は、参照した画素の特徴点判定を行い、線分の交点である特徴点と判定した画素および特徴点を特徴付ける情報を特徴点集合として生成し、生成した特徴点集合を特徴点集合記憶部117に書き込んで記憶させる。なお、参照するとは、エッジ処理部103に記憶されているエッジ集合の中から画素を読み出す処理のことであり、また未参照の画素を未参照の画素がなくなるまで参照するとは、まだ読み出していない画素を未参照の画素がなくなるまで読み出す処理のことである。
また、各特徴点判定処理部110(a,b,c・・・)は、特徴点判定処理を並列に処理する。例えば、取得した画像が640×480画素(=307200画素)の場合、特徴点判定処理部110aが1番目の画素の特徴点判定処理を行い、並列して特徴点判定処理部110bが4番目の画素の特徴点判定処理を行い、並列して特徴点判定処理部110cが7番目の画素の特徴点判定処理を行う。特徴点判定処理を終了した特徴点判定処理部110(a,b,c・・・)は、未参照の画素を未参照の画素がなくなるまで参照して、参照した画素の特徴点判定処理を順次行い、取得した画像全ての画素について特徴点判定処理を行う。また、特徴点判定処理部110(a,b,c・・・)は、全てのエッジ集合の画素に対して特徴点判定が終了した後、特徴点集合の生成が終了した情報を頂点候補判定処理120(a,b,c・・・)に出力する。また、各特徴点判定処理部110(a,b,c・・・)が、取得した画素を参照する順番は、例えばエッジ集合の中から順番に読み出しても良く、あるいはランダムに読み出しても良く、さらには、特徴点判定処理部110(a,b,c・・・)ごとに予め定めた領域を読み出すようにしても良い。
【0024】
以下に、特徴点判定処理部110(a,b,c・・・)が備える各機能部について、説明する。
連結点・分岐点判定部111は、エッジ処理部103が記憶するエッジ集合の中から未参照の画素の中から1画素を参照する。次に、連結点・分岐点判定部111は、参照した画素を注目点とし、エッジ集合を参照して注目点の8近傍に2点以上の黒画素が存在しているか否かを判定する。注目点の8近傍に2点以上の黒画素が存在していると判定した場合、連結点・分岐点判定部111は、注目点と8近傍に存在する黒画素との接続および接触、あるいは、接続または接触の構成パターンが連結点であるか、分岐点であるかを判定する。
連結点と分岐点の具体的な例を、図12を用いて説明する。図12(a)において、画素m5が注目点であり、m1〜m9(m5を除く)の画素が8近傍の画素である。図12(a)のように、注目点m5に画素m8と画素m3が接続および接触、あるいは、接続または接触している状態を、構成パターンの1つとして「連結点」と定義する。連結点の他の例は、(m1,m5,m8),(m2,m5,m7),(m2,m5,m9),(m4,m5,m3),(m4,m5,m9),(m1,m5,m6),(m7,m5,m6)の3画素が接続および接触、あるいは、接続または接触している状態である。
図12(b)のように、注目点m5に画素m2と画素m6および画素m8が接続および接触、あるいは、接続または接触している状態を、構成パターンの1つとして「分岐点」と定義する。連結点の他の例は、(m2,m4,m5,m8),(m2,m4,m5,m6),(m4,m5,m6,m8)の4画素が接続および接触、あるいは、接続または接触している状態である。
【0025】
ノイズ除去部112は、連結点・分岐点判定部111が参照した注目点、および注目点の8近傍に存在する2つの黒画素の接続および接触、あるいは、接続または接触の構成パターンのうち、ノイズの構成パターンを除去する。特徴点判定処理部110(a,b,c・・・)が抽出したい特徴点は、図形を特徴付けている線分の交点であり、辺である線分ではない。すなわち、特徴点とは、複数の線分をつなぎ合わせた交点(線分の終点同士をつなぎ合わせた点も含む)であり、多角形の180度以内の頂点、多角形の180度以上の頂点、閉じていない線分の交点などを備えている。このため、直線は特徴点ではないため、参照した注目点、および注目点の8近傍の2つの黒画素が直線的に接続および接触、あるいは、接続または接触している状態を、構成パターンの1つとして「ノイズ」と定義する。具体例として、注目点と8近傍にある画素の接続および接触、あるいは、接続または接触の構成パターンを、ノイズと判定する例を、図13を用いて説明する。図13のように、注目点と8近傍にある黒画素が、縦または横、または斜めに直線的に接続および接触、あるいは、接続または接触している構成パターンがノイズである。
【0026】
特徴点判定部113は、連結点・分岐点判断部111の判定結果とノイズ除去部112の判定結果に基づき、特徴点を判定する。特徴点と判定する条件は、連結点・分岐点判断部111が連結点または分岐点と判定した画素、かつノイズ除去部112がノイズと判定しなかった画素である。また、特徴点ではないと判定する条件は、連結点・分岐点判断部111が連結点または分岐点と判定しなかった画素、またはノイズ除去部112がノイズと判定した画素、または8近傍に黒画素が2画素以上ない画素である。図14は、注目点と8近傍にある画素の接続および接触、あるいは、接続または接触の構成パターンが特徴点ではないと判定される例を説明する図である。図14(a)のように、参照した画素(注目点)の8近傍に1つの黒画素しか接続あるいは接触していない構成パターンを、特徴点判定部113は特徴点ではないと判定する。また、図14(b)のように、参照した画素(注目点)の8近傍に4つの黒画素が接続および接触、あるいは、接続または接触している構成パターンを、特徴点判定部113は特徴点ではないと判定する。
すなわち構成パターンとは、連結点・分岐点判断部111が参照した画素とその画素の8近傍の画素の接続および接触、あるいは、接続または接触の構成によるものである。また、構成パターンの種類は、連結点であるパターンと、分岐点であるパターンと、ノイズであるパターンと、8近傍に黒画素が2画素以上ないパターンなどである。図3は、検出した特徴点の一例を示す図である。図3において、白抜き丸〇は、特徴点判定部113が検出した特徴点の一例である。
【0027】
特徴点集合生成部114は、特徴点判定部113が特徴点であると判定した画素を特徴点として特徴付ける情報として、連結点・分岐点判断部111が参照した画素とその8近傍に接続および接触、あるいは、接続または接触している2つ以上の黒画素の座標と、構成パターンの種類(連結点または分岐点)を関連付けて特徴点集合を生成し、生成した特徴点集合を特徴点集合記憶部117に書き込んで記憶させる。また、特徴点集合生成部114は、特徴点集合の生成が終了したことを頂点候補判定処理部120(a,b,c・・・)に出力する。図5は、特徴点集合の構成の一例を示す図である。図5のように特徴点集合は、表形式のデータとして実現されており、特徴点の座標と、特徴点の構成パターン(連結点か分岐点か)と、特徴点に接続および接触、あるいは、接続または接触されている画素の座標の各データを有している。
【0028】
頂点候補判定処理部120(a,b,c・・・)は、全てのエッジ集合の画素に対して特徴点判定が終了した後、特徴点集合の生成が終了した情報を特徴点判定処理部110(a,b,c・・・)から取り込んだ後、特徴点集合記憶部117が記憶している特徴点集合の中から未参照の特徴点を未参照の特徴点がなくなるまで参照する。頂点候補判定処理部120(a,b,c・・・)が特徴点を参照する順番は、特徴点集合記憶部117が記憶している順番に参照しても良く、あるいはランダムに参照しても良い。また、頂点候補判定処理部120(a,b,c・・・)は、参照した特徴点について 頂点候補判定を行い、頂点候補と判定した特徴点および頂点候補を特徴付ける情報を頂点候補集合として頂点候補記憶部127に記憶する。
また、各頂点候補判定処理部120(a,b,c・・・)は、頂点候補判定処理を並列に処理する。例えば、取得した特徴点集合が100組合せの場合、頂点候補判定処理部120aが1番目の特徴点集合の組合せについて頂点候補判定処理を行い、並列して頂点候補判定処理部120bが2番目の特徴点集合の組合せについて頂点候補判定処理を行い、並列して頂点候補判定処理部120cが3番目の特徴点集合の組合せについて頂点候補判定処理を行う。頂点候補判定処理を終了した頂点候補判定処理部120(a,b,c・・・)は、未参照の特徴点集合の組合せについて順次参照して、参照した特徴点集合の組合せについて頂点候補判定処理を順次行い、参照した全ての特徴点集合について頂点候補判定処理を行う。また、頂点候補判定処理部120(a,b,c・・・)は、全ての特徴点集合の特徴点に対して頂点候補判定が終了した後、頂点候補集合の生成が終了した情報を図形形状認識処理部130(a,b,c・・・)に出力する。
【0029】
以下に、頂点候補判定処理部120(a,b,c・・・)が備える各機能部について、説明する。
探索部121は、特徴点判定処理部110(a,b,c・・・)から特徴点集合の生成が終了した情報を取り込んだ後、特徴点集合記憶部117が記憶している特徴点集合の中から未参照の1つの特徴点集合を参照する。また、探索部121は、参照した特徴点集合から特徴点の座標と、参照した特徴点に接続および接触、あるいは、接続または接触している画素の座標と構成パターン(連結点、分岐点)を読み出す。また、探索部121は、読み出した特徴点の8近傍に接続および接触、あるいは、接続または接触している2つの黒画素を起点として選択して、後述する探索手順に基づき接続および接触、あるいは、接続または接触している画素を、所定の回数、順次探索する。また、探索部121は、参照した特徴点の座標と探索結果の2つの探索終点の座標を、ベクトル生成部122に出力する。図17は、探索結果およびベクトル生成手法を説明する図であり、図17(a)は、特徴点の8近傍に接続および接触、あるいは、接続または接触している画素から順次探索した結果の例である。図17(a)の例では、探索部121が特徴点の8近傍に接続および接触、あるいは、接続または接触している黒画素を起点に、接続および接触、あるいは、接続または接触している黒画素m13とm32から順次探索した結果、探索終点A(m91(x9,y1))と探索終点B(m39(x3,y9))に到達する。
【0030】
ベクトル生成部122は、探索部121が探索した結果である特徴点の座標と、探索した終点の座標を取り込む。また、ベクトル生成部122は、取り込んだ特徴点の座標と、探索した終点の座標を用いて、2本のベクトル(特徴点と探索終点A、特徴点と探索終点B)を生成し、特徴点の座標と生成した2本のベクトルを頂点角度判定部123に出力する。図17(b)は、特徴点と探索終点からベクトルを生成した例である。図17(b)の例では、ベクトル生成部122は、特徴点m22(x2,y2)から探索終点A(m91(x9,y1))に向かうベクトルAと、特徴点m22(x2,y2)から探索終点B(m39(x3,y9))に向かうベクトルを生成する。
【0031】
頂点角度判定部123は、ベクトル生成部122が出力する特徴点の座標と2本のベクトルを取り込む。また、頂点角度判定部123は、取り込んだ2本のベクトルのなす角θを算出する。また、頂点角度判定部123は、算出したなす角θについて、次式(1)を満たすNを算出する。
【0032】
θ=(((N−2)×π)/N)±α・・・(1)
【0033】
式(1)において、Nは正N角形を構成する頂点の数、αは図形形状を認識する上での予め定められた誤差角度である。また、誤差角度αは、例えば5度などの一定の角度でも良く、あるいはNに応じて設定しても良い。また、頂点角度判定部123は、算出したNが3以下(なす角θが60度以下)、さらに180度以上の場合は、式(1)を満たさないと判定する。また、頂点角度判定部123は、頂点角度判定の判定結果と、特徴点の座標、2本のベクトルおよびなす角θを頂点候補判定部124に出力する。
【0034】
頂点候補判定部124は、頂点角度判定部123が出力する判定結果と、特徴点の座標と、2本のベクトルおよびなす角θを取り込む。頂点候補判定部124は、取り込んだ頂点角度判定の判定結果と、特徴点の座標と、2本のベクトルおよびなす角θに基づいて、探索部121が参照した特徴点を頂点候補か否か判定する。頂点候補判定部124は、特徴点に対して2本のベクトルが存在ない場合、特徴点に接続および接触、あるいは、接続または接触している画素が連続していないため、すなわち図形のコーナーではないため頂点候補ではないと判定する。また、頂点候補判定部124は、頂点候補と判定した特徴点の座標、2本のベクトル、なす角θ、および式(1)との比較により算出したNを頂点候補集合生成部125に出力する。図4は、頂点候補を説明する図である。図4の白抜き丸〇は、頂点候補判定部124が頂点候補として判定した特徴点の一例である。
【0035】
頂点候補集合生成部125は、頂点候補判定部124が出力する特徴点の座標、2本のベクトル、なす角θ、およびNを取り込む。また、頂点候補集合生成部125は、特徴点を頂点候補として特徴付ける情報として、取り込んだ特徴点の座標、2本のベクトル、なす角θ、およびNを関連付けて頂点候補集合を生成し、生成した頂点候補集合を頂点候補集合記憶部127に記憶する。図6は、頂点候補集合の構成の一例を示す図である。図6のように、頂点候補集合は、表形式のデータとして実現されており、特徴点の座標と、2本のベクトル(a、b)と、Nと、なす角θの各データを有している。
【0036】
図形形状認識処理部130(a,b,c・・・)は、頂点候補判定処理部120(a,b,c・・・)から頂点候補集合の生成が終了した情報を取り込んだ後、頂点候補集合記憶部127が記憶している頂点候補集合の中から未参照の頂点候補を未参照の頂点候補がなくなるまで参照する。図形形状認識処理部130(a,b,c・・・)が頂点候補を参照する順番は、頂点候補集合記憶部127が記憶している順番に参照しても良く、あるいはランダムに参照しても良い。また、図形形状認識処理部130(a,b,c・・・)は、参照した頂点候補について、参照した頂点候補を含む図形を構成する他の頂点抽出と推定を行い、参照した頂点候補と抽出および推定した頂点に基づき図形形状の認識を行い、図形形状の認識結果を画像出力部140に出力する。
また、各図形形状認識処理部130(a,b,c・・・)は、図形形状認識処理を並列に処理する。例えば、取得した頂点候補集合が20組合せの場合、図形形状認識処理部130aが1番目の頂点候補集合の組合せについて図形形状認識処理を行い、並列して図形形状認識処理部130bが2番目の頂点候補集合の組合せについて図形形状認識処理を行い、並列して図形形状認識処理部130cが3番目の頂点候補集合の組合せについて図形形状認識処理を行う。図形形状認識処理を終了した図形形状認識処理部130(a,b,c・・・)は、未参照の頂点候補集合の組合せについて順次参照して、参照した頂点候補集合の組合せについて図形形状認識処理を順次行い、取得した全ての頂点候補集合について図形形状認識処理を行う。
【0037】
以下に、図形形状認識処理部130(a,b,c・・・)が備える各機能部について、説明する。
頂点抽出部131は、頂点候補集合記憶部127が記憶している頂点候補集合の中から未参照の頂点候補集合を順次参照して、参照した頂点候補集合から頂点候補(以後、参照頂点候補)の座標、ベクトル、Nおよびなす角θを読み出す。また、頂点抽出部131は、N(正N角形)に基づき、参照頂点候補を含む図形の他の頂点を、頂点候補集合の中から抽出し、抽出した頂点候補(以下、抽出頂点候補という)と参照頂点候補の各頂点候補集合を頂点推定部132に出力する。
【0038】
頂点推定部132は、頂点抽出部131から参照頂点候補と抽出頂点候補の頂点集合を取り込む。また、頂点推定部132は、取り込んだ参照頂点候補と抽出頂点候補の頂点候補集合を用いて、それらの頂点候補を含む図形の他の頂点候補の座標を、後述する頂点推定手法を用いて演算により推定する。また、頂点推定部132は、参照頂点候補と抽出頂点候補の各頂点候補集合、および推定した頂点を関連づけ、頂点集合として頂点集合記憶部137に記憶する。
図7は、頂点集合記憶部137が記憶する頂点集合の構成の一例を示す図である。図7のように、頂点集合は、表形式のデータとして実現されており、図形ごとに頂点の座標と各頂点のベクトルの各データを有している。
【0039】
図形形状認識部133は、頂点集合記憶部137に記憶されている頂点集合を読み出す。また、図形形状認識部133は、読み出した頂点集合に基づき、その頂点が構成する図形形状を認識し、認識した図形形状およびその図形を構成している各頂点の座標等を画像出力部140に出力する。
【0040】
画像出力部140は、図形形状認識部133が認識した図形形状およびその図形を構成している各頂点の座標等が認識結果を取り込み、取り込んだ認識結果を画像表示装置13に出力する。
【0041】
[探索手順の説明]
次に、頂点候補判定処理部120(a,b,c・・・)内の探索部121の探索手順について、図15〜図17を用いて詳細に説明する。図15は、特徴点が連結点の場合の探索を説明する図である。図16は、特徴点が分岐点の場合の探索を説明する図である。図17は、探索結果およびベクトル生成手法を説明する図である。
【0042】
まず、特徴点が連結点の場合の探索手順について図15を用いて説明する。説明を簡略化するために、5×5(=25画素)内での探索を例に説明する。便宜的に、図15(a)のように各画素についてm11〜m55の位置番号をつけ説明を行う。特徴点集合記憶部117から読み出した特徴点集合が(特徴点m22(x2,y2);連結点;接続および接触、あるいは、接続または接触されている画素m23(x2,y3),m31(x3,y1))の場合、探索部121は、図15(b)のように、特徴点m22に接続および接触、あるいは、接続または接触されている画素m23とm31をそれぞれ起点A、起点Bに設定し、まず、起点Aから探索を開始する。
【0043】
次に、探索部121は、起点A(m23)の8近傍に接続および接触、あるいは、接続または接触している特徴点以外の黒画素をエッジ処理部103内に記憶されているエッジ集合から抽出する。図15(c)のように起点A(m23)の8近傍に接続および接触、あるいは、接続または接触している画素はm14とm24である。このように起点に接続および接触、あるいは、接続または接触している画素が複数ある場合、探索部121は次の探索画素をランダムに選択する。また、図15(d)のように、探索途中で探索先に2つ以上の接続および接触、あるいは、接続または接触している黒画素がある場合、1つ前の画素からの距離が長い方を選択する。具体的には、探索部121は、起点Aとしてm23から探索開始し、次にランダムに選択したm24に進む。次に、探索部121は、m24に接続および接触、あるいは、接続または接触している黒画素m25とm35の内、m24の1つ前の画素m23から距離の長い方の画素であるm35に進む。
【0044】
このように、探索部121は、起点A(m23)から、m24、次にm35のように探索を続け、所定回数の探索、例えば7回探索を行う。7回の探索途中で接続および接触、あるいは、接続または接触している画素が存在しなくなった場合、そのルートの探索は打ち切り、途中で次の探索画素をランダムに選択した画素に戻り探索を行う。
同様に、図15(e)のように、探索部121は、起点B(m31)からの探索を行う。なお、探索の順番は、起点Aまたは起点Bのどちらを先に行っても良い。
【0045】
次に、特徴点が分岐点の場合の探索手順について図16を用いて説明する。なお、図16の各画素については、図15(a)と同一のm11〜m55の位置番号を用いて説明を行う。連結点の探索手順との違いは、特徴点の8近傍に3つの黒画素が存在していることである。探索部121は、特徴点の8近傍にある3つの黒画素の中からランダムに2つの画素を選択して、起点A、起点Bとする。図16(a)の例では、m23を起点Aに、m31を起点Bに選択する。以下、図16(b)のように、起点Aおよび起点Bからの探索は、連結点の場合と同様に行う。
【0046】
図17(a)は、特徴点が連結点の探索結果の一例を示す図である。図17(a)のように、特徴点(m22)の8近傍にある黒画素のm13を起点Aとして探索を行った結果、探索終点A(m19(x1,y9))に到達し、他方、特徴点(m22)の8近傍にある黒画素のm32を起点Bとして探索を行った結果、探索終点B(m93(x9,y3))に到達する。
探索部121は、特徴点の8近傍にある黒画素を起点に探索を行った結果、予め定めた回数の探索を行い2つの起点に対する探索終点に到達した場合、参照した特徴点の座標と2つの探索終点の座標をベクトル生成部122に出力する。
また、特徴点の8近傍にある黒画素を起点に探索を行った結果、予め定めた回数の探索を行わないうちに探索終了点が探索できない場合、すなわち、その先に画素がない場合、探索部121は、参照した特徴点の座標と、探索した結果、探索終点が存在しなかった情報を頂点候補判定部124に出力する。
以上のようにして、探索部121は、特徴点の8近傍にある黒画素に接続および接触、あるいは、接続または接触している黒画素の探索を行う。
【0047】
[頂点抽出手法および頂点推定手法の説明]
次に、図形形状認識部(a,b,c・・・)内の頂点抽出部131が行う頂点抽出手法と、頂点推定部132が行う頂点推定手法について、図18〜図23を用いて説明する。
【0048】
まず、頂点抽出部131は、頂点候補集合記憶部127から未参照の1つの頂点候補集合(A(x0,y0))を参照する。次に、頂点抽出部131は、参照した頂点候補集合のなす角θと、2本のベクトルと、頂点候補の座標、およびNを読み出す。頂点抽出部131と頂点推定部132は、読み出したNの値に応じて以下のように頂点抽出と頂点推定を行う。
【0049】
[正N角形:Nが5以上の奇数]
Nが5以上の奇数の場合について、図18と図19を用いて説明する。図18は、正N(Nは5以上の奇数の整数)角形の場合の頂点抽出手法を説明する図である。図19は、正N(Nは5以上の奇数の整数)角形の場合の頂点推定手法を説明する図である。説明を簡略化にするために、N=5の例について説明する。
頂点抽出部131は、N=5、すなわち正五角形のため、正五角形の内角θ=108度を算出する。または、頂点抽出部131が頂点候補集合記憶部127から参照した頂点候補のなす角θを用いる。
次に、頂点抽出部131は、以下の2本のベクトルを読み出す。
【0050】
【数1】
【0051】
【数2】
【0052】
そして、頂点抽出部131は、読み出した2本のベクトルと、算出した内角θまたは参照したなす角θ=108度を用いて、次式(2)と式(3)を用いて各ベクトルa2、b2、a3、b3を算出する。
【0053】
【数3】
【0054】
【数4】
【0055】
式(2)と式(3)においてi=2,3であり、θ2=(θ+π)/2、θ3=―(θ+π)/2である。
次に、頂点抽出部131は、式(2)と式(3)により求めた以下に示す各ベクトルの組合せが、参照した頂点候補の特徴点Aからの距離diが次式(4)を満たす頂点候補を頂点候補集合記憶部127から読み出して抽出する。
【0056】
【数5】
【0057】
【数6】
【0058】
d−α≦di≦d+α・・・式(4)
【0059】
なお、式(4)において、αは頂点候補集合における各2本のベクトルのなす角の誤差角度であり、また、dは正五角形の対角線の距離である。
すなわち、図18において、頂点抽出部131は、参照した頂点候補Aのベクトルaとベクトルb、なす角θ=108と対になる2つの頂点候補Cと頂点候補Dを頂点候補集合記憶部127から抽出する。
まず、頂点抽出部131は、頂点候補C(x2,y2)、距離d2、および以下の2本のベクトルを頂点候補集合記憶部127から読み出して抽出する。
【0060】
【数7】
【0061】
次に、頂点抽出部131は、頂点候補D(x3,y3)、距離d3、および以下の2本のベクトルを頂点候補集合記憶部127から読み出して抽出する。
【0062】
【数8】
【0063】
上記の条件を満たす2つの頂点候補CとDが頂点候補集合記憶部127から抽出できた場合、頂点抽出部131は、参照した頂点候補Aを頂点であると判定する。また、頂点抽出部131は、参照した頂点候補集合(頂点A)と、抽出した2つの頂点候補集合(頂点CとD)を頂点推定部132に出力する。
上記の条件を満たす2つの頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は、参照した頂点候補Aは頂点ではないと判定する。
【0064】
なお、正五角形について説明したが、Nが5以上の奇数の正N角形の場合についても同様に、前述した頂点抽出手法を用いて2つの頂点候補を抽出する。その場合、正N角形の場合、内角θ=360度/N、i=2,3を用いて式(2)と式(3)により同様にベクトルを算出する。また、式(4)において、dは正N角形の対角線のうち一番長い対角線の距離である。
【0065】
次に、頂点推定部132は、頂点抽出部131から頂点Aと頂点Cと頂点Dの頂点候補集合を取り込む。また、頂点推定部132は、取り込んだ頂点Aと頂点Cと頂点Dの頂点候補集合を用いて、残りの頂点(BとE)を推定する。正五角形の場合について、図19を用いて頂点推定手法を説明する。
まず、頂点推定部132は、頂点A(x0,y0)と頂点C(x2,y2)または頂点D(x3,y3)の各座標を用いて、頂点Aと頂点Cと頂点Dを含む正五角形の外接円の半径rを算出する。図19において、線分ACの長さをsとし、正五角形の中点をO(xc,yc)、角度∠OACをβ、角度∠AOEとγとした場合、γ=∠AOE=2π/Nより、∠AOC=π−π/Nであるため、β=∠OAC=π/2Nとなる。したがって外接円の半径rは、次式(5)により算出できる。
【0066】
r=s/(2×cosβ)・・・(5)
【0067】
次に、頂点Aのベクトルaの単位ベクトルを以下のように置くと、正五角形の中点O(xc,yc)は、次式(6)により算出できる。
【0068】
【数9】
【0069】
【数10】
【0070】
次に、頂点推定部132は、算出した正五角形の中点O(xc,yc)から頂点AのベクトルOAを回転角度γずつ回転することで、図形の残りの頂点Bと頂点Eを次式(7)および次式(8)を用いて推定する。
【0071】
【数11】
【0072】
【数12】
【0073】
式(8)において、iは1以上でN−1以下の整数(i=(N−1)/2とi=((N−1)/2)+1は除く)である。
【0074】
また、頂点抽出部131が参照した頂点候補と抽出した2つの頂点候補と、頂点推定部132が推定した頂点とを頂点集合として、頂点推定部132が頂点集合記憶部137に書き込んで記憶させる。
【0075】
[正N角形:Nが6以上の偶数]
次に、Nが6以上の偶数の場合について、図20と図21を用いて説明する。図20は、正N(Nは6以上の偶数の整数)角形の場合の頂点抽出手法を説明する図である。図21は、正N(Nは6以上の偶数の整数)角形の場合の頂点推定手法を説明する図である。説明を簡単にするために、N=6の例について説明する。
頂点抽出部131は、頂点候補Aの以下の2本のベクトルを読み出す。
【0076】
【数13】
【0077】
【数14】
【0078】
次に、図20のように、読み出した頂点候補Aの2本のベクトルとそれぞれ符号が逆の以下の2本のベクトルを有し、かつ参照した頂点候補Aから予め定められた一定以上の距離dにある頂点候補Dを頂点候補集合記憶部127から読み出して抽出する。予め定められた一定以上の距離dは、例えば、検出したい図形が図24のようなマーカーで、図形の対角線の大きさが予め分かっている場合、マーカーの大きさに応じて設定する。
【0079】
【数15】
【0080】
【数16】
【0081】
上記の条件を満たす頂点候補Dが頂点候補集合記憶部127から抽出できた場合、頂点抽出部131は、参照した頂点候補Aは頂点であると判定する。また、頂点抽出部131は、参照した頂点候補集合(頂点A)と、抽出した頂点候補集合(頂点D)の頂点候補集合を頂点推定部132に出力する。
上記の条件を満たす頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は、参照した頂点候補は頂点ではないと判定する。
【0082】
次に、頂点推定部132は、頂点抽出部131から頂点Aと頂点Dの頂点候補集合を取り込む。また、頂点推定部132は、取り込んだ頂点Aと頂点Dにより構成される正六角形の中点O(xc,yc)を、次式(9)を用いて算出する。
【0083】
【数17】
【0084】
次に、頂点推定部132は、算出した中点O(xc,yc)から頂点A(x0,y0)へのベクトルOAを回転した値を、次式(10)で算出し、残りの頂点B,C,E,Fを抽出する。すなわち、正六角形なので、2π/N=2π/6=60度ずつベクトルOAを回転することで順次、残りの頂点B,C,E,Fを抽出する。
【0085】
【数18】
【0086】
式(10)において、iは1以上でN−1以下の整数(i=N/2は除く)である。
以上のように、頂点抽出部131が参照した頂点候補Aと抽出した頂点候補Dと、頂点推定部132が推定した頂点B,C,E,Fを頂点集合として、頂点推定部132が頂点集合記憶部137に書き込んで記憶させる。
【0087】
[正N角形:Nが3の場合]
正三角形の場合について、図22を用いて説明する。図22は、正三角形の場合の頂点抽出手法および頂点推定手法を説明する図である。頂点抽出部131は、頂点候補Aの以下の2本のベクトルを読み出す。
【0088】
【数19】
【0089】
【数20】
【0090】
次に、図22(a)と図22(b)のように、頂点抽出部131は、読み出した頂点候補Aの2本のベクトルと、次式(11)と次式(12)を用いて頂点Bのベクトルを有し、かつ参照した頂点候補Aから予め定められた一定以上の距離dにある頂点候補Bを頂点候補集合記憶部127から読み出して抽出する。予め定められた一定以上の距離dは、例えば、検出したい図形が図24のようなマーカーで、図形の対角線の大きさが予め分かっている場合、マーカーの大きさに応じて設定する。
【0091】
【数21】
【0092】
【数22】
【0093】
上記の条件を満たす頂点候補Bが頂点候補集合記憶部127から抽出できた場合、頂点抽出部131は、参照した頂点候補Aは頂点であると判定する。また、頂点抽出部131は、参照した頂点候補集合(頂点A)と、抽出した頂点候補集合(頂点B)を頂点推定部132に出力する。
上記の条件を満たす頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は、参照した頂点候補は頂点ではないと判定する。
【0094】
次に、頂点推定部132は、頂点抽出部131から頂点Aと頂点Bの各頂点候補集合を受け取る。また、頂点推定部132は、受け取った頂点Aと頂点Bの頂点候補集合から各ベクトルを読み出す。また、頂点推定部132は、読み出したベクトルを用いて、頂点Aと頂点Bの互いに向かい合わないベクトル、すなわちベクトルbとベクトルa1の交点を算出して、算出した頂点を残りの頂点C(x2,y2)として推定する。
また、頂点抽出部131が参照した頂点候補Aと抽出した頂点候補Bと、頂点推定部132が推定した頂点Cを頂点集合として、頂点推定部132が頂点集合記憶部137に書き込んで記憶させる。
【0095】
[正N角形:Nが4の場合]
正方形の場合について、図23を用いて説明する。図23は、正方形の場合の頂点抽出手法および頂点推定手法を説明する図である。頂点抽出部131は、頂点候補Aの以下の2本のベクトルを読み出す。
【0096】
【数23】
【0097】
【数24】
【0098】
次に、図22(a)と図22(b)のように、頂点抽出部131は、読み出した頂点候補Aの2本のベクトルとそれぞれ符号が逆のベクトルを有し、かつ参照した頂点候補Aから予め定められた一定以上の距離dにある頂点候補Bを頂点候補集合記憶部127から読み出して抽出する。予め定められた一定以上の距離dは、例えば、検出したい図形が図24のようなマーカーで、図形の対角線の大きさが予め分かっている場合、マーカーの大きさに応じて設定する。
【0099】
【数25】
【0100】
【数26】
【0101】
上記の条件を満たす頂点候補Bが頂点候補集合記憶部127から抽出できた場合、頂点抽出部131は、参照した頂点候補Aは頂点であると判定する。また、頂点抽出部131は、参照した頂点候補集合(頂点A)と、抽出した頂点候補集合(頂点B)を頂点推定部132に出力する。
上記の条件を満たす頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は、参照した頂点候補は頂点ではないと判定する。
【0102】
次に、頂点推定部132は、頂点抽出部131から頂点Aと頂点Bの各頂点候補集合を受け取る。また、頂点推定部132は、受け取った頂点Aと頂点Bの頂点候補集合から各ベクトルを読み出す。また、頂点推定部132は、読み出したベクトルを用いて、頂点Aと頂点Bの互いに向かい合わないベクトル、すなわちベクトルbとベクトル−aの交点を算出して、算出した頂点を残りの頂点C(x2,y2)として推定し、同様に、ベクトルaとベクトル−bの交点を算出して、算出した頂点を残りの頂点D(x4,y4)として推定する。
また、頂点抽出部131が参照した頂点候補Aと抽出した頂点候補Bと、頂点推定部132が推定した頂点Cと頂点Dを頂点集合として、頂点推定部132が頂点集合記憶部137に記憶する。
【0103】
[図形形状認識処理の手順]
次に、図形形状認識手順について、図8〜図11のフローチャート、図1の構成図を用いて説明する。図8は、図形形状認識装置10全体の図形形状認識手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
【0104】
まず、カメラ11が撮像した画像(濃淡画像)を画像データ取り込み部101が取得する(ステップS1)。画像データ取り込み部101は、取得した画像データを二値化処理部102に出力する。
【0105】
二値化処理部102は、画像データ取り込み部101が出力する画像データを取り込む。また、二値化部102は、取り込んだ画像データを、閾値を用いて二値化する(ステップS2)。また、二値化処理部102は、二値化した画像データをエッジ処理部103に出力する。なお、二値化における閾値の設定方法は、例えば大津の方法を用いて行う。
【0106】
エッジ処理部103は、二値化処理部102が出力する画像データを取り込む。また、エッジ処理部103は、取り込んだ画像データに対して、ラプラシアンフィルタ等を用いた一般的な手法によりエッジ処理を行う(ステップS3)。また、エッジ処理部103は、エッジ処理した画像情報(各黒画素の座標)をエッジ集合としてエッジ処理部103に書き込んで記憶させる。
【0107】
特徴点判定処理部110(a,b,c・・・)は、エッジ処理終了後、エッジ処理部103が記憶するエッジ集合の中から未参照の画素を順次参照して、参照した画素を特徴点か否かの判定を行う(ステップS4)。
【0108】
次に、特徴点判定処理手順について、図9のフローチャートを用いて説明する。特徴点判定処理部110a内の連結点・分岐点判定部111は、エッジ処理部103内に記憶されているエッジ集合の中から未参照の1画素を参照する(ステップS101)。
【0109】
次に、連結点・分岐点判定部111は、参照した画素を注目点とし、エッジ処理部103に記憶されているエッジ集合を参照して注目点の8近傍の画素に2点以上の黒画素が存在しているか否かを判定する。次に、注目点の8近傍に2点以上の黒画素が存在していると判定した場合、連結点・分岐点判定部111は、注目点と8近傍に存在する黒画素との接続および接触、あるいは、接続または接触の構成パターンが連結点であるか、分岐点であるかを判定する。また、ノイズ除去部112は、連結点・分岐点判定部111が参照した注目点、および注目点の8近傍に存在する2つの黒画素の接続および接触、あるいは、接続または接触の構成パターンのうち、ノイズの構成パターンを除去する。また、特徴点判定部113は、連結点・分岐点判定部111の判定結果と、ノイズ除去部112の判定結果を用いて、参照した画素が線分の交点である特徴点であるか否かを判定する(ステップS102)。
ステップS102で参照した画素が特徴点であると判定した場合(ステップS102;Yes)、特徴点集合生成部114は参照した画素(注目点)とその画素を特徴点として特徴付ける情報(画素の座標と、その画素の8近傍にある黒画素の座標と、その画素と8近傍にある黒画素との構成パターン)を特徴点集合として生成し、生成した特徴点集合を特徴点集合記憶部117に書き込んで記憶させる(ステップS103)。
ステップS102で参照した画素が特徴点でない判定した場合(ステップS102;No)、参照した画素についての特徴点判定処理を終了する。
【0110】
特徴点判定処理部110(a,b,c・・・)は、エッジ処理部103に記憶されている全てのエッジ集合に含まれる画素に対してステップS4の特徴点判定処理を行う。また、複数の特徴点判定処理部110(a,b,c・・・)は、特徴点判定処理を並列に処理する。すなわち、特徴点判定処理部110aが、エッジ集合から画素1を参照して特徴点判定処理を行い、並列して特徴点判定処理部110bは、特徴点判定処理部110aが参照していない画素を参照して特徴点判定処理を行う。また、特徴点判定処理が先に終了した特徴点判定処理部110aまたは特徴点判定処理部110bは、未参照の画素を順次参照して特徴点判定を行う。
以上の処理により、特徴点判定処理部110(a,b,c・・・)は、全てのエッジ集合の画素に特徴点判定処処理が終了した後、特徴点集合の生成が終了したことを頂点候補判定処理に出力する(ステップS5)。
【0111】
図8に戻り、頂点候補判定処理部120(a,b,c・・・)は、特徴点判定処理部110(a,b,c・・・)から全ての画素についての特徴点集合の生成が終了した情報を取り込んだ後、特徴点記憶部117が記憶している特徴点集合の中から未参照の1つの特徴点を順次参照して、参照した特徴点に対して頂点候補判定処理を行う(ステップS6)。
【0112】
次に、頂点候補判定処理手順について、図10のフローチャートを用いて説明する。頂点候補判定処理部120a内の探索部121は、特徴点集合記憶部117が記憶している特徴点集合から未参照の1つの特徴点集合を参照する(ステップS201)。
【0113】
次に、探索部121は、参照した特徴点集合に基づいて、前述した探索手順により、特徴点に接続および接触、あるいは、接続または接触している画素の探索を行う(ステップS202)。
探索部121は、特徴点の8近傍にある黒画素を起点に探索を行った結果、所定回数の探索を行い2つの起点に対する探索終点に到達した場合(ステップS202;Yes)、参照した特徴点の座標と2つの探索終点の座標をベクトル生成部122に出力する。
また、特徴点の8近傍にある黒画素を起点に探索を行った結果、所定回数の探索を行わないうちに探索終点に到達した場合、すなわち、その先に画素がない場合、探索部121は、参照した特徴点の座標と、探索した結果、探索終点が存在しなかった情報を頂点候補判定部124に出力する。頂点候補判定部124は、参照した特徴点は探索終了点が存在しないと判定し(ステップS202;No)、参照した特徴点集合の頂点候補判定処理を終了する。
【0114】
次に、ベクトル生成部122は、探索部121から特徴点の座標と2つの探索終点の座標を取り込む。ベクトル生成部122は、取り込んだ特徴点の座標と2つの探索終点の座標を用いて、前述したベクトル生成手法により2本のベクトルを生成する(ステップS203)。また、ベクトル生成部122は、特徴点の座標と生成した2本のベクトルを頂点角度判定部123に出力する。
【0115】
次に、頂点角度判定部123は、ベクトル生成部122が生成した2本のベクトルと特徴点の座標とを取り込む。また、頂点角度判定部123は、ベクトル生成部122が生成した2本のベクトルのなす角θを算出する。また、頂点角度判定部123は、算出したなす角θについて、次式(1)を満たすN(Nは正の整数)を算出する。
【0116】
θ=(((N−2)×π)/N)±α・・・(1)
【0117】
また、頂点角度判定部123は、なす角θが60度以下または180度以上の場合は、(1)式を満たさないのでNGと判定し、判定結果を頂点候補判定部124に出力する。また、頂点角度判定部123は、2本のベクトルのなす角θについて式(1)を満たすNが算出できた場合、OKと判定し、特徴点の座標と、2本のベクトルと、2本のベクトルのなす角θ、および頂点角度判定を頂点候補判定部124に出力する。
また、頂点候補判定部124は、頂点角度判定部123から特徴点の座標と、2本のベクトルと、2本のベクトルのなす角、および頂点角度判定を取り込み、取り込んだ頂点角度判定がOKの場合(ステップS204;Yes)、その特徴点を頂点候補として判定し、特徴点の座標、2本のベクトルおよび2本のベクトルのなす角θを頂点候補集合生成部125に出力する。
また、頂点候補判定部124は、受け取った頂点角度判定がNGの場合、頂点候補ではないと判定し(ステップS204;No)、参照した特徴点集合の頂点候補判定処理を終了する。
【0118】
次に、頂点候補集合生成部125は、頂点候補判定部124から、特徴点を頂点候補として特徴付ける情報として、特徴点の座標、2本のベクトルおよび2本のベクトルのなす角θを取り込む。また、頂点候補集合生成部125は、取り込んだ特徴点の座標、2本のベクトルおよび2本のベクトルのなす角θを関連付けて頂点候補集合を生成して、頂点候補集合記憶部127に書き込んで記憶させる(ステップS205)。
【0119】
頂点候補判定処理部120(a,b,c・・・)は、特徴点集合記憶部117が記憶する全ての特徴点集合に含まれる特徴点に対してステップS6の頂点候補判定処理を行う。また、複数の頂点候補判定処理部120(a,b,c・・・)は、頂点候補判定処理を並列に処理する。すなわち、頂点候補判定処理部120aが、特徴点集合から特徴点1を参照して頂点候補判定処理を行い、並列して頂点候補判定処理部120bは、頂点候補判定処理部120aが参照していない特徴点2を参照して頂点候補判定処理を行う。また、頂点候補判定処理が先に終了した頂点候補判定処理部120aまたは頂点候補判定処理部120bは、未参照の特徴点を順次参照して頂点候補判定を行う。
以上の処理により、頂点候補判定処理部120(a,b,c・・・)は、全ての特徴点集合の頂点候補判定処処理が終了した後、頂点候補集合の生成が終了した情報を図形形状認識処理部130(a,b,c・・・)に出力する(ステップS7)。
【0120】
次に、図形形状認識処理部130(a,b,c・・・)は、頂点候補判定処理部120(a,b,c・・・)から全ての特徴点についての頂点集合の生成が終了した情報を取り込んだ後、頂点候補集合記憶部127から未参照の1つの頂点候補集合を順次参照して頂点処理を行う(ステップS8)。
【0121】
次に、頂点処理手順について、図11のフローチャートを用いて説明する。図形形状認識処理部130a内の頂点抽出部131は、頂点候補集合記憶部127が記憶している頂点候補集合から未参照の1つの頂点候補集合を参照する(ステップS301)。
【0122】
次に、頂点抽出部131は、参照した頂点候補集合を用いて、その頂点候補を含む図形の他の頂点候補を、前述した頂点抽出手法により頂点候補集合記憶部127が記憶している頂点候補集合から抽出する(ステップS302)。抽出する頂点候補数は、参照した頂点候補集合のNに基づき、N=3または4以上の偶数の場合は1つの頂点候補を抽出し、N=5以上の奇数の場合は2つの頂点候補を算出する。また、頂点候補集合記憶部127から前述した各条件に合致する頂点候補が抽出できた場合、頂点抽出部131は、参照頂点候補を頂点であると判定する(ステップS302;Yes)。参照頂点候補を頂点と判定した場合、頂点抽出部131は、参照頂点候補集合と、抽出した頂点候補集合を頂点推定部132に出力する。
前述した各条件を満たす頂点候補が頂点候補集合記憶部127から抽出できない場合、頂点抽出部131は参照した頂点候補を頂点ではないと判定し(ステップS302;No)、参照した頂点候補集合についての図形形状認識処理を終了する。
【0123】
次に、頂点推定部132は、頂点抽出部131が参照した頂点候補集合(以下、参照頂点候補集合)と抽出した頂点候補集合(以下、抽出頂点候補集合)を取り込む。また、頂点推定部132は、取り込んだ参照頂点候補集合と抽出頂点候補集合を用いて、これらの頂点候補を頂点として含む図形の他の頂点を前述した頂点推定手法により算出し、算出した頂点を残りの頂点として推定する。頂点の推定は、N=3の場合は1点、N=4,5の場合は2点、N=6の場合は4点について行う。
また、頂点推定部132は、参照頂点候補集合と抽出頂点候補集合と、頂点推定部132が推定した頂点の座標とベクトルとを、頂点集合として頂点集合記憶部137に書き込んで記憶させる(ステップS304)。また、頂点推定部132は、頂点処理が終了した情報を図形形状認識部133に出力する。
【0124】
図8に戻り、図形形状認識部133は、頂点推定部132から頂点処理が終了した情報を取り込んだ後、頂点集合記憶部137に記憶されている未参照の頂点集合を順次参照する。また、図形形状認識部133は、参照した頂点集合に基づき、その頂点が構成する図形形状を認識し、認識した図形形状、およびその図形を構成している各頂点の座標等を画像出力部140に出力する(ステップS9)。
【0125】
図形形状認識処理部130(a,b,c・・・)は、頂点候補集合記憶部127が記憶する全ての頂点候補集合に含まれる頂点候補に対してステップS8の頂点処理を行う。また、複数の図形形状認識処理部130(a,b,c・・・)は、頂点処理を並列に処理する。すなわち、図形形状認識処理部130aが、頂点候補集合から頂点候補1を参照して頂点処理を行い、並列して図形形状認識処理部130bは、頂点候補判定処理部120aが参照していない頂点候補2を参照して頂点処理を行う。また、頂点処理が先に終了した図形形状認識処理部120aまたは図形形状認識処理部130bは、未参照の頂点候補を順次参照して頂点判定処理を行う。
【0126】
画像出力部140は、図形形状認識部133が認識した図形形状およびその図形を構成している各頂点の座標等の図形形状認識結果を取り込み、取り込んだ図形形状認識結果を画像表示装置13に出力する(ステップS10)。また、画像表示装置13は、画像出力部140が出力した図形形状認識結果を表示する。
以上により、図形形状認識処理を終了する。
【0127】
以上のように、本実施形態によれば、撮像した画像における線分の交点である特徴点の検出を、特徴点判定処理の並列処理が行いやすい画素ごとに行うようにしたので、図形形状認識処理を並列処理することで高速化を実現することができる。また、図形形状認識において、従来技術のようにラベリング処理に替えて、図形を構成している頂点を抽出し、抽出した頂点を用いて図形の他の頂点や図形の形状を推定するようにしたので、さらに図形形状における認識処理の高速化を実現することができる。また、本実施形態の図形認識処理は、ラベリング処理のように取得した画面全体に処理を行う場合と比較し、各処理を並列して行いやすい単位に設定してあるので、複数の特徴点判定処理、または複数の頂点候補判定処理、または複数の図形形状認識処理において、各処理の計算量の均一化が容易なため、並列処理を容易にすることができる。
【0128】
また、本実施形態では、エッジ処理部103は、二値化処理部102で二値化された入力画像を用いてエッジ処理を行う例について説明したが、画像データ取り込み部101が取り込んだ画像データである濃淡画像に直接エッジ処理を行うようにしても良い。
【0129】
また、本実施形態では、頂点角度判定部123で全てのNについて式(1)を満たすか判定する例について説明したが、認識したい図形の形状が予め分かっている場合等、用途に応じて、一定の範囲のN、例えば3≦N≦10のみを頂点候補として判定しても良い。
【0130】
また、本実施形態では、図形の形状を、まず頂点候補判定処理部が1つの頂点候補を抽出し、次に図形形状認識処理部が残りの頂点を抽出し、次にこれらの抽出した頂点候補を用いて残りの頂点を推定して図形形状を認識する例について説明したが、残りの頂点を推定で算出するのではなく、図形形状認識処理部が残りの頂点を抽出するようにしても良い。この場合においても、図形形状の認識において図形の頂点のみを抽出しているので、ラベリングを行う手法と比較して高速に図形形状を認識することができる。
【0131】
また、本実施形態では、図形の形状を、まず頂点候補判定処理部が1つの頂点候補を抽出し、次に図形形状認識処理部が残りの頂点を抽出し、次にこれらの抽出した頂点候補を用いて残りの頂点を推定して図形形状を認識する例について説明したが、残りの頂点を推定により算出した後、頂点推定部132は推定した頂点と、頂点候補集合記憶部127が記憶している頂点候補集合を比較して、が頂点候補集合に実在しているか否かを判定する用ようにしても良い。これにより、さらに図形形状の認識精度を向上することができる。
【0132】
また、本実施形態では、カメラ11が撮像した画像データから図形形状を認識する例を説明したが、予め取得した画像データから図形形状認識を行っても良い。また、本実施形態では、画像データ取り込み部101が取り込んだ画像を二値化処理部102で二値化処理した後にエッジ処理する例を説明したが、取り込んだ画像データに直接エッジ処理を行っても良い。
【0133】
なお、実施形態の図1の各部の機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピューターシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等、USB(Universal Serial Bus) I/Fを介して接続されるUSBメモリー等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0134】
また、本実施形態では、特徴点判定処理と、頂点候補判定処理と、頂点処理(図形認識処理)とを、複数の特徴点判定処理部110(a,b,c・・・)と複数の頂点候補判定処理部120(a,b,c・・・)と複数の図形形状認識処理部130(a,b,c・・・)で並列処理する例について説明したが、並列処理は図示しない複数のCPUで行うことも可能である。この場合、例えば、CPU1が特徴点判定処理部110aの処理を行い、CPU2が特徴点判定処理部110bの処理を行う。または、1つのCPUで特徴点判定処理部110aと特徴点判定処理部110bとを並列処理するようにしても良い。
また、特徴点判定処理部110(a,b,c・・・)と頂点候補判定処理部120(a,b,c・・・)と図形形状認識処理部130(a,b,c・・・)の少なくとも1つが複数の処理部を備えていて、複数の特徴点判定処理部を並列処理、または複数の頂点候補判定処理部を並列処理、または複数の図形形状認識処理部を並列処理するようにしても良い。
【0135】
さらにまた、本実施形態では、特徴点判定処理と、頂点候補判定処理と、頂点処理(図形認識処理)とを、複数の特徴点判定処理部110(a,b,c・・・)と複数の頂点候補判定処理部120(a,b,c・・・)と複数の図形形状認識処理部130(a,b,c・・・)で並列処理する例について説明したが、各処理部(特徴点判定処理部110と頂点候補判定処理部120と複数の図形形状認識処理部130)はそれぞれ1つずつで並列処理を行わなくても良い。この場合においても、本実施形態で説明した特徴点判定処理や頂点候補判定処理、および頂点処理(図形認識処理)を用いれば、従来のラベリングを用いた図形形状認識装置より高速な図形形状の認識を行うことができる。
【符号の説明】
【0136】
10・・・図形形状認識装置
101・・・画像データ取り込み部
102・・・二値化処理部
103・・・エッジ処理部
110(a,b,c・・・)・・・特徴点判定処理部
117・・・特徴点集合記憶部
120(a,b,c・・・)・・・頂点候補判定処理部
127・・・頂点候補記憶部
130(a,b,c・・・)・・・図形形状認識処理部
137・・・頂点集合記憶部
140・・・画像出力部
11・・・カメラ
13・・・画像表示部
【特許請求の範囲】
【請求項1】
エッジ処理した入力画像の全ての画素を1画素ずつ参照し、線分の交点である特徴点を全て検出する特徴点判定処理部と、
前記特徴点判定部が検出した全ての前記特徴点を1つずつ参照し、全ての頂点候補を検出する頂点候補判定処理部と、
前記頂点候補判定処理部が検出した頂点候補を1つずつ参照し、参照した前記頂点候補に基づき当該頂点候補を含み図形を構成する他の頂点候補を検出し、検出した前記頂点候補に基づいて図形形状を認識する図形形状認識処理部と、
を備えることを特徴とする図形形状認識装置。
【請求項2】
エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理部と、
前記特徴点判定部が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判定処理部と、
前記頂点候補判定部が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理部と、
を備えることを特徴とする図形形状認識装置。
【請求項3】
前記特徴点判定処理部は、
参照した前記画素の八近傍における隣接画素同士の接続および接触、あるいは、接続または接触の構成に基づいて構成パターンを検出し、検出した構成パターンに基づいて前記画素が特徴点か否かを判定する
ことを特徴とする請求項1または請求項2に記載の図形形状認識装置。
【請求項4】
前記頂点候補判定処理部は、
参照した特徴点を特徴付ける情報を用いて前記特徴点に隣接している画素を順次探索し、探索した結果に基づき前記特徴点を始点とし探索終了点を終了点とする2本のベクトルを生成し、生成した前記2本のベクトルのなす角を算出し、生成した前記2本のベクトルの各距離と前記なす角を用いて頂点候補か否かを判定する
ことを特徴とする請求項1から請求項3のいずれか1項に記載の図形形状認識装置。
【請求項5】
前記特徴点判定処理部、前記頂点候補判定処理部、前記図形形状認識処理部のうち少なくとも1つの処理部を複数備え、複数の前記特徴点判定処理部が並列処理、または複数の前記頂点候補判定処理部が並列処理、または複数の前記図形形状認識処理部が並列処理する
ことを特徴とする請求項1から請求項4のいずれか1項に図形形状認識装置。
【請求項6】
エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理工程と、
前記特徴点判定処理工程が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判処理工程と、
前記頂点候補判定処理工程が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理工程と、
を含むことを特徴とする図形形状認識方法。
【請求項7】
コンピューターに、
エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理工程と、
前記特徴点判定処理工程が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判処理工程と、
前記頂点候補判定処理工程が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理工程と、
を実行させるためのプログラム。
【請求項1】
エッジ処理した入力画像の全ての画素を1画素ずつ参照し、線分の交点である特徴点を全て検出する特徴点判定処理部と、
前記特徴点判定部が検出した全ての前記特徴点を1つずつ参照し、全ての頂点候補を検出する頂点候補判定処理部と、
前記頂点候補判定処理部が検出した頂点候補を1つずつ参照し、参照した前記頂点候補に基づき当該頂点候補を含み図形を構成する他の頂点候補を検出し、検出した前記頂点候補に基づいて図形形状を認識する図形形状認識処理部と、
を備えることを特徴とする図形形状認識装置。
【請求項2】
エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理部と、
前記特徴点判定部が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判定処理部と、
前記頂点候補判定部が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理部と、
を備えることを特徴とする図形形状認識装置。
【請求項3】
前記特徴点判定処理部は、
参照した前記画素の八近傍における隣接画素同士の接続および接触、あるいは、接続または接触の構成に基づいて構成パターンを検出し、検出した構成パターンに基づいて前記画素が特徴点か否かを判定する
ことを特徴とする請求項1または請求項2に記載の図形形状認識装置。
【請求項4】
前記頂点候補判定処理部は、
参照した特徴点を特徴付ける情報を用いて前記特徴点に隣接している画素を順次探索し、探索した結果に基づき前記特徴点を始点とし探索終了点を終了点とする2本のベクトルを生成し、生成した前記2本のベクトルのなす角を算出し、生成した前記2本のベクトルの各距離と前記なす角を用いて頂点候補か否かを判定する
ことを特徴とする請求項1から請求項3のいずれか1項に記載の図形形状認識装置。
【請求項5】
前記特徴点判定処理部、前記頂点候補判定処理部、前記図形形状認識処理部のうち少なくとも1つの処理部を複数備え、複数の前記特徴点判定処理部が並列処理、または複数の前記頂点候補判定処理部が並列処理、または複数の前記図形形状認識処理部が並列処理する
ことを特徴とする請求項1から請求項4のいずれか1項に図形形状認識装置。
【請求項6】
エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理工程と、
前記特徴点判定処理工程が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判処理工程と、
前記頂点候補判定処理工程が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理工程と、
を含むことを特徴とする図形形状認識方法。
【請求項7】
コンピューターに、
エッジ処理した入力画像に含まれる未参照の画素を未参照の画素がなくなるまで参照して、参照した前記画素が線分の交点である特徴点か否かを判定し、特徴点と判定した前記画素を特徴点として特徴付ける情報に基づいて特徴点集合を生成する特徴点判定処理工程と、
前記特徴点判定処理工程が生成した前記特徴点集合から、未参照の前記特徴点を未参照の特徴点がなくなるまで参照して、参照した特徴点が頂点候補か否かを判定し、頂点候補と判定した前記特徴点を頂点候補として特徴付ける情報に基づいて頂点候補集合を生成する頂点候補判処理工程と、
前記頂点候補判定処理工程が生成した前記頂点候補集合の中から、未参照の前記頂点候補を未参照の頂点候補がなくなるまで参照し、参照した前記頂点候補が頂点か否かを判定し、頂点と判定した前記頂点候補とともに図形を構成する他の頂点候補を前記頂点候補集合の中から抽出し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補を用いて、図形を構成する他の頂点を推定し、頂点と判定した前記頂点候補且つ抽出した前記頂点候補且つ推定した前記頂点に基づいて図形形状を認識する図形形状認識処理工程と、
を実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【公開番号】特開2011−76374(P2011−76374A)
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願番号】特願2009−227251(P2009−227251)
【出願日】平成21年9月30日(2009.9.30)
【出願人】(397065480)エヌ・ティ・ティ・コムウェア株式会社 (187)
【Fターム(参考)】
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願日】平成21年9月30日(2009.9.30)
【出願人】(397065480)エヌ・ティ・ティ・コムウェア株式会社 (187)
【Fターム(参考)】
[ Back to top ]