[[太田研 公開用Wiki]]

*小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較 [#ke41afc3]

#contents

*はじめに [#e2fff901]
**研究背景 [#o3855eab]
 2014年に打ち上げられ、今現在宇宙空間を飛んでいるはやぶさ2は、2018年7月にC型の小惑星Ryuguに到着予定だ。はやぶさ2のミッションは、小惑星の物
質を持ち帰ることである。C型の小惑星は、構成物質に有機物や水が含まれ、地
球誕生の謎や、海の水の起源や生命の原材料となった有機物の起源を探ることが
できる。これを小惑星で行う理由は、地球は大気や重力の影響から昔の情報が消
えてしまっているからである。~
 さて、ミッションである小惑星の物質を持ち帰る方法は、小惑星にタッチダウン
し、衝突装置の衝撃で撒きあがった物質(砂礫など)を採取するというものだ。こ
こで、タッチダウンに関して重要なことは、出来るだけフラットな表面にタッチ
ダウンしなければならないということだ。タッチダウンするためには数メートル
単位の精度で場所がわかっていないといけない。そこで、小惑星の形状復元を行
う。はやぶさ2は1年半、小惑星の上空に滞在し、その間に小惑星の画像を撮影
する。その小惑星の画像を用いて、画像処理で形状復元に必要な情報を得る。
具体的な方法としては、小惑星の同じ部分を異なる位置から撮影した2枚の画
像間において、1枚目の画像のある凹凸と同じものが2枚目の画像のどこにあるか
を対応づける。これによって、カメラからのその凹凸の位置や角度が求まり、こ
れを多くの画像間に対して行うことで形状復元ができる。~
 その対応付けを自動で行うアルゴリズム(検出器、記述子)は、SIFT、SURF、
BRISK、ORB、KAZE、AKAZEなど、多くある。実際にこれらの性能を比較し
たデータはあるが、それはあくまでも地球上で撮影されたものを対象としている。[1]では、地球上と宇宙空間では測光条件が異なることから、宇宙空間を対象とし
て、小惑星画像を用いて AKAZE を除く多くのアルゴリズムの性能比較を行った
ところ、SIFTが最も優れているという結果であった。しかしSIFTは特許の問題
から使用が容易ではないため、SIFTに代わるものとしてAKAZEが有用であるか
を検証したのが本研究である。~

**研究目的 [#o29f4431]
 探索対象を図2 に示す.また,つくばチャレンジ2016 における探索エリアのコースを図3 に示す.図2 のようにつくばチャレンジにおける探索対象は,緑色のジャンパーの上にオレンジまたは青のベストを着用しており,そのすぐ脇には立て看板が設置されている.探索対象は4 名配置されており,図3 の斜線部分が探索エリアとなっている.つくばチャレンジ2016 からは,探索対象の配置は屋外のみならず屋内にも配置されることが予想された.探索対象を発見した際には,その対象の人の1.5m 以内のところに達して,3 秒以上停止する必要がある.ロボットが探索対象以外の人やものを探索対象として認識しても課題達成の判断には反映され
ないが,つくばチャレンジ2016 では探索対象以外を検出して,停止した場合にはその回数を誤認識として記録に残すことになっている.~
 探索対象の色は特徴のある色であるため,カメラを用いた色検出は有効な手段の一つである.しかしながら,実環境上には似たような色が多く存在するため単純な色の識別だけでは誤検出が多くなってしまう.そこで,本手法では探索対象の特定色領域の面積比と重心の位置関係を利用することで誤検出の削減を試みた.また,カメラ画像からの色情報とレーザーレンジファインダ(以下LRF と略) から得られる形状情報を統合することでより安定した探索対象の検出を目指した.~
 つくばチャレンジ本来の趣旨であれば人物を探索すべきであるが,探索対象となっている人物はカメラに写るベストの色情報やLRF で得られる形状情報が大きく変化しやすい.そこで,本手法では処理をできるだけシンプルに構成するという設計趣旨から色情報の変化が小さく,形状情報が安定して得られる立て看板の検出を試みた.本手法では色と形状情報を組み合わせた看板の検出というシンプルな手法による検出精度を向上させることを目的とする.

CENTER:#ref(human.png,center,60%)
CENTER:&size(14){図2:探索対象};~
&br;
CENTER:#ref(detection_area.png,center,40%)
CENTER:&size(14){図3:つくばチャレンジ2016の探索エリア};~
CENTER:&size(12){(http://www.tsukubachallenge.jp/tc2016/kadai/ から引用)};~

*関連研究 [#f47552bb]
 つくばチャレンジにおける人物検出手法の例としては[2, 3, 4, 5] が挙げられる.[2, 3] の手法では,ディープラーニングを用いて探索対象である人や立て看板の検出を行っている.ディープラーニングによる人や物体の認識は実環境上での検出において一つの手段になり得る.しかしながら,その学習には膨大な量の学習データが必要であり,学習だけでなく,実際の検出時にも計算コストを要するため高性能なGPU が必要となる.つくばチャレンジにおける立て看板のように,ある決まった特定の物体は色や形状がある程度安定して検出できる.これらの情報を用いることで,ディープラーニングのような複雑な処理をともなう方法を用いずとも,実環境上での特定物体を検出することは可能であると考える.~
 一方,[4, 5] の手法では,カメラ画像からの色情報とLRF で得られる形状情報を統合することで探索対象の検出を試みている.[4] の手法では,立て看板と人物それぞれの幅に相当する物体をLRF の距離情報を用いて検出し,その方向に対して全方位カメラ画像から色検出を行い,探索対象が身につけている帽子(オレンジ) とベストの色(オレンジまたは青),看板の色
を検出した場合探索対象が存在すると判断している.しかし,探索対象となっている人物はカメラに写るベストの色情報やLRF で得られる形状情報が大きく変化しやすい.[4] では形状情報で立て看板と人物の形状に相当するペアを検出できなければ色情報による判定も行わないため安定した検出率を確保することが困難であった.~
 [5] の手法では,色情報の変化が小さく形状が一定である立て看板を検出することで安定した検出を目指している.前述の手法とは異なりカメラ画像からの特定色領域の抽出を先に行い,立て看板に該当する色情報を検出した方向に看板の幅に相当する物体をLRF で得られる形状情報で確認した場合に探索対象であると判断している.この手法では,[4] で用いている双曲面ミラーを用いた全方位カメラではなく,USB カメラ3 台を3 方向に向けて設置している.双曲面ミラーを用いた全方位カメラでは,1 つのカメラに双曲面ミラーを取り付けて360◦ の映像を撮影する.ミラーに写った像を1 台のカメラで表現するため,ミラーのサイズやカメラ
の解像度によっては図4 のように解像度の低い画像になってしまい,また, 認識に不要な路面が多く写ってしまうため小領域の色情報の判定が困難である.[5] の手法では,USB カメラを3 台用いてロボットの周囲の画像を取得することで,双曲面ミラーを用いた全方位カメラよりも安定した色情報の抽出を実現している.しかしながら,特定色領域の抽出に用いる色の参照値の選定が不十分であったため,天候の変化等による照明条件の変化に対応できず,探索対象を検出できないケースが見られた.また,つくばチャレンジでは,探索対象を検出した際にはその1.5m手前に停止するという規定がある.しかし,単純にカメラで検出した看板の方向
に移動するため,本来の探索対象である人物から1.5m 以上離れた位置に停止してしまう可能性がある.

CENTER:#ref(omni.png,center,70%)
CENTER:&size(14){図4:双曲面ミラーを用いた全方位カメラ画像};~
&br;

 以上の関連研究を考慮し,本研究では,色情報・形状情報がともに安定して得られる看板の検出を試みた.はじめに,つくばチャレンジの実際の画像をもとにカメラ画像からの特定色領域の抽出で検出するべき色範囲の設定を行った.また,特定色領域の抽出では看板のオレンジ色領域と水色領域の2 種類を抽出し,その2つの面積比と重心の関係を確認することで誤検出の削減を試みた.つくばチャレンジ2016 では,探索対象の誤検出もカウントされるため誤検出を可能な限り削減する工夫が必要であった.探索対象である人物と看板は移動しないため,検出された対象位置が一定であるかを確認し,5 フレーム連続で一定の位置に看板を検出し
た際にアプローチするという手法を採用した.さらに,探索対象へのアプローチの際には立て看板の隣に存在するであろう人物の形状を確認し,人物と看板の中間点から看板と人物の向きに直交する方向に対して目標地点を設定した.これにより,対象にアプローチした際に人物から1.5m 以上離れるような状況を回避した.~
 以上のように,ディープラーニングのような複雑な手法を用いるのではなく,色情報と形状情報を組み合わせたシンプルな手法を用いることにより,計算コストを抑えつつ,連続する数枚の画像を用いての検証をリアルタイムに行うことで,最小限のハードウェア構成での検出精度の向上を可能にしていく.以降で本手法の詳細を述べる.

**ロボットの構成と開発環境 [#t0ac59e8]
 つくばチャレンジ2016 のために開発したロボットの外観を図5 に,仕様を表1に示す.ベースとして用いたロボットはリバスト社[6] が開発を行っている屋外用移動ロボット「Mercury」シリーズのロボットである.ロボットには複数のセンサが取り付けられているが,-70◦,0◦,70◦ の方向に向けた(ロボットの正面を0◦ とする)3 台のUSB カメラと高さ600mm の位置のLRF とを用いて検出を行っている.看板の検出に使用したUSB カメラの仕様を表2,LRFの仕様を表3 に示す.~
 USB カメラはImagingSource 社製のUSB カメラ「DFK22AUC03」(解像度744× 480)にtamron 社製の広角レンズ「13FM28IR」を装着して使用した.LRF とは,レーザー光を照射して物体に反射させ,その反射光を検出することで,レーザー光を発射してから反射光を検出するまでの時間から物体までの距離を計測するセンサの一つであり,SICK 社製の「LMS151」(最大計測距離50m) を使用している.LRF はロボットを中心とした前方270◦ の範囲を0.5◦ 間隔で計測し,合計541 点の距離情報が得られる.LRF から得られるデータを可視化すると図6bのようになる.本ロボットの自律走行時にはこのような距離情報から得られる環境地図を予め作成しておき, 実際の自律走行時の環境地図と照合することによって自律走行を行っている. 看板の検出には,LRF から得られる距離情報から物体の形状を取得している.~
 ロボットの制御にはVecow社製PC「ECS4000-PoER」を用いた.OSはUbuntu14.04(64bit) を使用し,ソフトウェアはC++で記述した.既存のソフトウェアとしてはモジュール間通信にROS(indigo)[7],画像処理にOpenCV(2.4.11)[8],ファイルの入出力やTCP 通信等にBoost(1.56.0)[9] を利用している.~
 以上のハードウェア構成で,要求される機能を十分に実現できることを前提に,できる限りシンプルなアルゴリズムを採用した.

CENTER:#ref(robot.png,center,50%)
CENTER:&size(14){図5:ロボットの外観(左:外装有り,右:外装無し)};~
&br;

CENTER:&size(14){表1:ハードウェア構成};~
|CENTER:外形寸法|CENTER:W610×L634×H800mm|
|CENTER:ホイール径|CENTER:300mm|
|CENTER:総重量|CENTER:70.0kg|
|CENTER:動力源|CENTER:DCモーター×4|
|CENTER:最大速度|CENTER:800mm/s|
|CENTER:センサ|CENTER:LRF×2 &br; (LMS151,TiM551) &br; エンコーダ×4 &br; USBカメラ×1 &br; 9軸ジャイロセンサ×1|
|CENTER:バッテリー|CENTER:Li-ion(7S20Ah)|
|CENTER:制御用CPU|CENTER:Intel i7 5650U|
~
CENTER:&size(14){表2:看板検出に用いたUSBカメラの仕様};~
|CENTER:解像度|CENTER:744×480|
|CENTER:FPS|CENTER:30fps|
|CENTER:シャッター方式|CENTER:グローバルシャッター|
|CENTER:視野角|CENTER:約94.2°|
~

CENTER:&size(14){表3:看板検出に用いたLRF(LMS151)の仕様};~
|CENTER:計測範囲|CENTER:270°|
|CENTER:分解能|CENTER:0.5°|
|CENTER:計測周期|CENTER:50Hz|
|CENTER:計測距離|CENTER:50m|
~
CENTER:#ref(lrf_in.png,center,60%)
CENTER:&size(12){(a)LRFデータを取得した場所};~
&br;
CENTER:#ref(lrf_out.png,center,40%)
CENTER:&size(12){(b)LRFから得られる距離情報をもとにした環境地図};~
&br;
CENTER:&size(14){図6:LRFから得られる距離情報をもとにした環境地図の例};~

*看板検出アルゴリズム [#ge39481f]
**カメラ画像からの特定色領域の抽出 [#k6277fdc]
 カメラ画像から色情報を抽出して立て看板の探索を行う方法について述べる.入力画像は3 方向に向けているカメラから得られる画像を使用した.実環境上には,似たような色が多く存在しており, 看板のオレンジ1 色の抽出では誤検出が多くなってしまう可能性がある. そこで, 本手法では看板のオレンジと看板下部の水色の2 色を抽出し, それぞれの領域の関係を比較することで検出精度の向上を図った.以降でカメラ画像からの特定色領域の抽出方法について述べる.

***対象となる色範囲の設定 [#ce9ef547]
CENTER:#ref(color_patch.png,center,50%)
CENTER:&size(14){図7:パッチ画像の作成例};~
&br;

 実環境で撮影された画像は, 撮影時の場所や天候・時間帯により照明条件が変化する. カメラ画像から特定の色を抽出する色の値を1 点に限定してしまうと, 照明条件の変化によって色抽出に失敗してしまう可能性がある. そこで, 様々な天候や場所・時間帯で撮影されたつくばチャレンジの実験走行会での画像をもとに, 看板のオレンジ色と水色の色分布を解析して, 照明条件の変化に対応した色抽出の範囲を作成した.~
 具体的には, はじめに図7 のようなつくばチャレンジの実験走行中に得たカメラ画像から立て看板のオレンジ領域,水色領域のパッチ画像をそれぞれ数百枚作成し,色の分布を調べた.画像上の色はRGB 表色系からHSV 表色系に変換し,色相(以下H と表記) と彩度(以下S と表記) の関係を調べた.なお,RGB 表色系からHSV 表色系への変換はOpenCV に実装されているcvtColor 関数を用いた.立て看板のオレンジ領域と水色領域の色相と彩度の分布図を図8 に示す.この色分布を元に図9 のような多角形の色領域を設定した.探索時にはこの領域内に含
まれる色のみを抽出する.なお,つくばチャレンジ2016 では,探索対象は屋外だけでなく,屋内にも配置される可能性があるため,屋外用の色領域と屋内用の色領域の2 種類を作成し,走行する場所に応じてこれらを切り替えて探索を行った.~
 図9 に示す色領域画像はそれぞれ横軸がH,縦軸がS を表しており,H は-30~150,S は0~255 の範囲である.看板のオレンジ色の範囲はHが0~10 と170~180 付近の2 パターンに別れるため,H > 150 に対してはH-181 をすることでオレンジ色の範囲を一つの多角形で表現できるようにした.

CENTER:#ref(color_range.png,center,30%)
CENTER:&size(14){図8:立て看板のオレンジ領域と水色領域の色分布};~
&br;
CENTER:#ref(color_mask.png,center,30%)
CENTER:&size(14){図9:立て看板のオレンジ領域と水色領域の色領域画像};~
&br;

***特定色領域の抽出方法 [#wcf98896]
 入力画像の例を図10 に示す.特定色領域の抽出は,3 方向に向けられたUSBカメラから得られる画像それぞれに対して行う.立て看板は地面に置かれるため画像の上部に写ることはほとんど起こり得ない.そこで,ここでは画像の右方向をx,下方向をy,左上の座標を(x; y) = (0; 0) としたときにオレンジ色の抽出をy ≧ 240,水色の抽出をy ≧ 285 と設定することで誤検出の削減および処理の高速化を図った.

CENTER:#ref(input.png,center,80%)
CENTER:&size(14){図10:入力画像の例};~

色情報を用いた特定色領域の抽出の手順は以下のとおりである.
+オレンジ色領域の抽出~
HSV 表色系に変換した入力画像に対しオレンジの色領域内の画素を抽出し二値画像を作成.
+水色領域の抽出~
1. と同様の手順で水色の画素を抽出し二値画像を作成.
+オレンジ領域と水色領域のラベリング~
それぞれの二値画像に対しラベリング処理を行い,矩形領域Roi とRbj およびそれぞれの面積(画素数) Aoi とAbj を取得.
+オレンジ領域と水色領域の面積比を計算~
0.03 ≦ Abj/Aoi ≦ 0.75 である色領域のペアのみ以下の処理を行う.
+オレンジ領域と水色領域のペアの探索~
オレンジ領域Roi と水色領域Rbj の重心(mo,mb) の位置を比較する.
&br;

 はじめに,入力画像をHSV 表色系に変換しオレンジの色領域内と水色の色領域内の画素を抽出し,図11 のような二値画像を作成する.ここで抽出される色の中には白に近い明るい色が含まれるため,入力画像のRGB の3 成分の全てが200 を超えるものは除外するように設定した.また,二値画像を作成する際に膨張収縮処理を施すことで細かいノイズを取り除いている.
 次に,色抽出により生成された二値画像に対してラベリング処理を行う.ラベリングで得られた領域の内オレンジ領域は画素数100 以下,水色領域は画素数30以下のものを除外することで処理の高速化と誤検出の削減を行った.ラベリングされた領域からオレンジ領域と水色領域それぞれの矩形領域と各矩形領域の面積(画素数) を取得し以降の処理を行っていく.
 続いて,オレンジの矩形領域Roi と水色の矩形領域Rbj の面積比を計算する.図10で示したように探索対象の番号を示すボードが看板の前面に貼られる状況がある.このような状況に対応するためにつくばチャレンジの実験走行会から得られた画像をもとにオレンジ領域と水色領域の面積比の閾値を設定した.
 オレンジ領域Roi と水色領域Rbj の重心(mo,mb) の位置関係を図12に示す.実際の水色領域の重心のズレに対応する範囲の設定は実際の画像をもとに実験的に求めたものである.

CENTER:#ref(bin.png,center,60%)
CENTER:&size(14){図11:二値画像の例};~
&br;
CENTER:#ref(board_cog.png,center,70%)
CENTER:&size(14){図12:看板のオレンジ領域と水色領域の重心の関係};~
&br;

 以上の処理を3 方向に向けたカメラから得られるそれぞれの画像に対して適用し看板の探索を行い,看板が存在する場合その方向(ロボットの正面を0◦,反時計回りを正方向とする) を求める.そこで,3 方向に向けたカメラの画像上の座標と実空間上の方向の対応を取るためにキャリブレーションを行った.画像のx 座標に対応する実空間上の角度を解析したものが図13 になる.グラフの横軸は,各カメラから得られる画像の右方向をx,下方向をy,左上の座標を(x,y) = (0,0) としたときのx 座標であり,縦軸はそれに対応する実空間上の方向である.この対応を元にして画像上の看板の中心部のx 座標から看板の存在する方向を求めた.

CENTER:#ref(x_lrf_l.png,center,40%)
CENTER:&size(12){(a)左カメラの画像の対応};~
&br;
CENTER:#ref(x_lrf_c.png,center,40%)
CENTER:&size(12){(b)中央カメラの画像の対応};~
&br;
CENTER:#ref(x_lrf_r.png,center,40%)
CENTER:&size(12){(c)右カメラの画像の対応};~
&br;
CENTER:&size(14){図13:各カメラの画像上のx座標と実空間上の方向の対応関係};~

**LRFを用いた特定形状の検出 [#eed4918b]
 本手法を適用してカメラ画像を解析し求められる情報は対象の方向のみであり対象までの距離は得ることができない.そのため,距離の計測にはLRF を用いることにした.~
 本手法は単純に看板を検出した方向に移動してしまうと図14b のように本来の探索対象である人物から1.5m 以上離れた地点に停止してしまう可能性がある.そこで,LRF から得られる点群をクラスタリングし,立て看板の形状に相当するクラスタと人物の形状に相当するクラスタをそれぞれ抽出して図14c のように人物と看板の中間点から看板と人物の向きに直交する方向に対して目標地点を設定した.LRF による特定形状の抽出法は以下の通りである.

+同一平面上に存在する物体のクラスタリング~
点群の距離情報di(0 ≦ i ≦ 540) をi = 0 から走査していきdi≦7000[mm] かつ|di+1 - di|≦ dTH の条件をもとにクラスタリングを行う(ここでdTH =100[mm]).
+立て看板の幅に相当するクラスタの抽出~
クラスタの端点間の距離が280~420[mm] のクラスタを看板のクラスタとして抽出する.
+人物の幅に相当するクラスタの抽出~
クラスタの端点間の距離が250~650[mm] のクラスタを人物のクラスタとして抽出する.
+カメラ画像から得られた看板の方向との比較~
カメラ画像から得られた看板の方向の10◦ の範囲に看板の幅に相当するクラスタが存在した場合のみ以下の処理を行う.
+人物と看板の中間点の取得~
看板クラスタと人物クラスタの距離d が200[mm]< d < 1000[mm] であるものを探索し,両クラスタの中点を対象の存在する地点Pt とする.
+目標地点の設定~
看板クラスタと人物クラスタを通る直線を計算し,この直線に直行しPt を通る直線上のPt から1500mm の位置を目標地点とした.該当する点は2 点存在することになるが,ロボットに近い側の点を目標地点とする.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS