Flash ActionScript WEBCAMを使った 赤色の検出

| | コメント(0) | トラックバック(2)
flashでWEBCAMをつかった赤色の検出をやってみた。
flash_webcam_red_tracking.jpg
赤い折り紙を検出してる様子。赤色を検出して、その重心を割り出す。
ラベリング処理などは行っていないので複数の物体があるときはその複数の物体の重心が表示される。

swf -- flashplayer8以上,webcam必須 ※遅いパソコンだと固まるかも.......試してません。

赤色の検出なんか簡単だろうと素人考えで思っていたのだがそうではなかった.....
折り紙の赤を検出しようと思ったのだけれど普通に色域を指定してやろうとしたら
うまくいかなかったので我流で検出している。

以下その部分のソースコード
my_bd.draw(my_video);
green_bd.copyChannel(my_bd,my_rect,my_pt,2,1);
blue_bd.copyChannel(my_bd,my_rect,my_pt,3,1);
blue_bd.draw(green_bd, new Matrix(), new ColorTransform(), 'lighten');
//ブルーとグリーンを合成。明るい方の値が優先される。
my_bd.draw(blue_bd, new Matrix(), new ColorTransform(), 'subtract');
/*元の画像の赤色から他の色を合成した値を引く。
この際、赤-他の色がマイナスの値をとらないようにdifferenceではなく、subtractをつかう。
*/
my_bd.applyFilter(my_bd, my_rect, null, noiseReduction);
my_bd.threshold(my_bd, my_rect, my_pt, '>', 0xff500000,0xffffffff);
my_bd.threshold(my_bd, my_rect, my_pt, '!=', 0xffffffff, 0xff000000);
/*
ここで赤の値が高い物を白に置き換える。閾値は0xff500000としとく。
(環境によって変化させる必要あり)その後二値化処理(白以外は黒に)
*/

こんなので本当にいいのか?一応できているけどもっと簡単にできるはず。

重心の検出部分は
var x=0
var y=0
var count=0
//重心を求める際のx y と標本の数を入れるcountの定義
for(i=0 ; i < my_cam.width ; i=i+5){
	//5pixel刻みにカメラの画像の横の長さまで
	for(e=0 ; e < my_cam.height ; e=e+5){
				//5pixel刻みにカメラの画像の縦の高さまで
		if(0 != my_bd.getPixel(i,e)){
			//もし画素が黒じゃなかったら
			x+=i;
			//その画素のiをxに足す
			y+=e;
			//その画素のeをに足す
			count++;
			//標本した画素の数を記録
			}
		}
	}
/*
上のfor文のあとに
x/count
y/count
を求めることによって重心の座標が求まる。
*/

と適当に書いている。

今日はとりあえずここまででおしまい。
ノイズをとるためにmedian filterでも入れるかな。

トラックバック(2)

このブログ記事を参照しているブログ一覧: Flash ActionScript WEBCAMを使った 赤色の検出

このブログ記事に対するトラックバックURL: http://www.hatayan.org/mt/mt-tb.cgi/421

» Camera(InteractiveChronicle.)~のトラックバック

動体検出のためのカメラ 検出精度が低いとか、htmlに埋め込むと動かないとかいろ... 続きを読む

» Flash画像認識用ムービークリップ(すがメモ/SUGAMEMO)~のトラックバック

Flashの画像認識用ムービークリップを作りました。 カメラの画像をBitmap... 続きを読む

コメントする

このブログ記事について

このページは、hatayanが2005年11月30日 12:31に書いたブログ記事です。

ひとつ前のブログ記事は「Firefox1.5 日本語版 今日リリース」です。

次のブログ記事は「movable type で <pre>タグを使うときのメモ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01