Next: ポールの位置決定法
Up: 画像処理
Previous: 画像の仕様の決定
Subsections
画像形式が決まり、ポールの認識をしようとするにあたり、まずは画像からポー
ルを抽出することが必要になりました。そこで、ポールとポールででない部分
とに別ける処理~2値化処理~を行うことになりました。実際には、ポールが赤
と青の2種類あるので、入力された画像は2通りの2値化処理がされ、2枚の画像
が得られることとなります。
最初に考えられたのは、計算によるRGBの値を比較する2値化処理です。得られ
るデータが、RGBのデータそのものと言うこともあり、単純に、「RがBとGより
も大きければ赤だろうという」発想から始めました。青を含め式にしてみると
以下のようになります。

しかし、これでは灰色に近いような色まで抽出してしまい使い物になりませ
んでした。
そこで、比較するときに計数を用いたり、2次関数を用いるなどして工夫して
みたところ、以下のような式に行き着きました。

これで、ノイズが少し残るものの、ほぼ2値化できる式になりました。しか
し、実際にロボットに実装してみると、このノイズがかなりの曲者で、PD制
御を行うとき、振動が収束せず、発振ているような状態になってしまいまし
た。
計算による2値化された画像を良く調べてみると、特定の色(壁の下の黒い部分
や中央のライン)が、ポールと同系色の暗い色と判別されてしまっていること
が分かりました。これは、局所的に点々とあるので、とても計算では分離でき
ませんでした。そこで、ポール固有の色を客観的に表わせるカラーマップを作
ることにしました。
カラーマップの実体は以下の様なppm形式の画像ファイルにしました。座標が
RGBの各光度を表し、1つの色を指します。その座標がRGB全て0であるか、そう
ではないかで判別するような仕組みにしました。
図:
フィルターの構成
![\begin{figure}
\begin{center}
\includegraphics [width=11cm]{ImageProcessing/filer_format.eps}
\end{center} \end{figure}](img40.gif) |
このカラーマップを使ってフィルターを作製する方法は、以下のような手順で
行います。
- 1.
- 背景を撮りカラーマップ化
- 2.
- ポールを置いて撮りカラーマップ化
- 3.
- その差分を検出しそれをフィルタ化
- 4.
- これらを重ねることで汎用性の高いフィルタを得る
この方式は、限られた環境では抜群の制度を誇りました。しかし、サンプルを
とった環境以外では、全くといっていいほどポールに反応せず、膨大なサンプ
ル数が必要になり、実用的でないという事で採用されませんでした。
サンプルをフィルター化し重ねていく方法ではうまく行かなかったので、今度
は逆に、広範囲に反応するフィルターから反応して欲しくない色を抜いていく
方法を考えました。この際、元となるフィルターは計算で作ったフィルターを
用いました。
実際にはこれが採用されました。しかし、これで2値化した際に完璧にポール
だけが抽出できたわけではありませんでした。特に、教室のドア等が晴天の日
の光を受けたとき、青いポールと同系色になってしまい、完全な分離ができま
せんでした。
Takao NAKAI
1999年1月18日