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が有用であるか
を検証したのが本研究である。
つくばチャレンジにおける人物検出手法の例としては[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 以上離れた位置に停止してしまう可能性がある.
#ref(): File not found: "omni.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
以上の関連研究を考慮し,本研究では,色情報・形状情報がともに安定して得られる看板の検出を試みた.はじめに,つくばチャレンジの実際の画像をもとにカメラ画像からの特定色領域の抽出で検出するべき色範囲の設定を行った.また,特定色領域の抽出では看板のオレンジ色領域と水色領域の2 種類を抽出し,その2つの面積比と重心の関係を確認することで誤検出の削減を試みた.つくばチャレンジ2016 では,探索対象の誤検出もカウントされるため誤検出を可能な限り削減する工夫が必要であった.探索対象である人物と看板は移動しないため,検出された対象位置が一定であるかを確認し,5 フレーム連続で一定の位置に看板を検出し
た際にアプローチするという手法を採用した.さらに,探索対象へのアプローチの際には立て看板の隣に存在するであろう人物の形状を確認し,人物と看板の中間点から看板と人物の向きに直交する方向に対して目標地点を設定した.これにより,対象にアプローチした際に人物から1.5m 以上離れるような状況を回避した.
以上のように,ディープラーニングのような複雑な手法を用いるのではなく,色情報と形状情報を組み合わせたシンプルな手法を用いることにより,計算コストを抑えつつ,連続する数枚の画像を用いての検証をリアルタイムに行うことで,最小限のハードウェア構成での検出精度の向上を可能にしていく.以降で本手法の詳細を述べる.
つくばチャレンジ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] を利用している.
以上のハードウェア構成で,要求される機能を十分に実現できることを前提に,できる限りシンプルなアルゴリズムを採用した.
#ref(): File not found: "robot.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
外形寸法 | W610×L634×H800mm |
ホイール径 | 300mm |
総重量 | 70.0kg |
動力源 | DCモーター×4 |
最大速度 | 800mm/s |
センサ | LRF×2 (LMS151,TiM551) エンコーダ×4 USBカメラ×1 9軸ジャイロセンサ×1 |
バッテリー | Li-ion(7S20Ah) |
制御用CPU | Intel i7 5650U |
解像度 | 744×480 |
FPS | 30fps |
シャッター方式 | グローバルシャッター |
視野角 | 約94.2° |
計測範囲 | 270° |
分解能 | 0.5° |
計測周期 | 50Hz |
計測距離 | 50m |
#ref(): File not found: "lrf_in.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
#ref(): File not found: "lrf_out.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
カメラ画像から色情報を抽出して立て看板の探索を行う方法について述べる.入力画像は3 方向に向けているカメラから得られる画像を使用した.実環境上には,似たような色が多く存在しており, 看板のオレンジ1 色の抽出では誤検出が多くなってしまう可能性がある. そこで, 本手法では看板のオレンジと看板下部の水色の2 色を抽出し, それぞれの領域の関係を比較することで検出精度の向上を図った.以降でカメラ画像からの特定色領域の抽出方法について述べる.
#ref(): File not found: "color_patch.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
実環境で撮影された画像は, 撮影時の場所や天候・時間帯により照明条件が変化する. カメラ画像から特定の色を抽出する色の値を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 をすることでオレンジ色の範囲を一つの多角形で表現できるようにした.
#ref(): File not found: "color_range.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
#ref(): File not found: "color_mask.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
入力画像の例を図10 に示す.特定色領域の抽出は,3 方向に向けられたUSBカメラから得られる画像それぞれに対して行う.立て看板は地面に置かれるため画像の上部に写ることはほとんど起こり得ない.そこで,ここでは画像の右方向をx,下方向をy,左上の座標を(x; y) = (0; 0) としたときにオレンジ色の抽出をy ≧ 240,水色の抽出をy ≧ 285 と設定することで誤検出の削減および処理の高速化を図った.
#ref(): File not found: "input.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
色情報を用いた特定色領域の抽出の手順は以下のとおりである.
はじめに,入力画像をHSV 表色系に変換しオレンジの色領域内と水色の色領域内の画素を抽出し,図11 のような二値画像を作成する.ここで抽出される色の中には白に近い明るい色が含まれるため,入力画像のRGB の3 成分の全てが200 を超えるものは除外するように設定した.また,二値画像を作成する際に膨張収縮処理を施すことで細かいノイズを取り除いている. 次に,色抽出により生成された二値画像に対してラベリング処理を行う.ラベリングで得られた領域の内オレンジ領域は画素数100 以下,水色領域は画素数30以下のものを除外することで処理の高速化と誤検出の削減を行った.ラベリングされた領域からオレンジ領域と水色領域それぞれの矩形領域と各矩形領域の面積(画素数) を取得し以降の処理を行っていく. 続いて,オレンジの矩形領域Roi と水色の矩形領域Rbj の面積比を計算する.図10で示したように探索対象の番号を示すボードが看板の前面に貼られる状況がある.このような状況に対応するためにつくばチャレンジの実験走行会から得られた画像をもとにオレンジ領域と水色領域の面積比の閾値を設定した. オレンジ領域Roi と水色領域Rbj の重心(mo,mb) の位置関係を図12に示す.実際の水色領域の重心のズレに対応する範囲の設定は実際の画像をもとに実験的に求めたものである.
#ref(): File not found: "bin.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
#ref(): File not found: "board_cog.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
以上の処理を3 方向に向けたカメラから得られるそれぞれの画像に対して適用し看板の探索を行い,看板が存在する場合その方向(ロボットの正面を0◦,反時計回りを正方向とする) を求める.そこで,3 方向に向けたカメラの画像上の座標と実空間上の方向の対応を取るためにキャリブレーションを行った.画像のx 座標に対応する実空間上の角度を解析したものが図13 になる.グラフの横軸は,各カメラから得られる画像の右方向をx,下方向をy,左上の座標を(x,y) = (0,0) としたときのx 座標であり,縦軸はそれに対応する実空間上の方向である.この対応を元にして画像上の看板の中心部のx 座標から看板の存在する方向を求めた.
#ref(): File not found: "x_lrf_l.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
#ref(): File not found: "x_lrf_c.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
#ref(): File not found: "x_lrf_r.png" at page "小惑星画像の対応点決定を目的としたSIFTとAKAZEの性能比較"
本手法を適用してカメラ画像を解析し求められる情報は対象の方向のみであり対象までの距離は得ることができない.そのため,距離の計測にはLRF を用いることにした.
本手法は単純に看板を検出した方向に移動してしまうと図14b のように本来の探索対象である人物から1.5m 以上離れた地点に停止してしまう可能性がある.そこで,LRF から得られる点群をクラスタリングし,立て看板の形状に相当するクラスタと人物の形状に相当するクラスタをそれぞれ抽出して図14c のように人物と看板の中間点から看板と人物の向きに直交する方向に対して目標地点を設定した.LRF による特定形状の抽出法は以下の通りである.