iSightとJavaで。第6弾。

今回やったことは、
・動いている(明るさが変わった)ところを近いところ同士でまとめて、その集合ごとに平均を計算する。
ということです。

当初の予定とは違って四角がたくさん出るようになってしまいました。
四角を統合するような処理をしてみたんですが思ったよりうまくいきませんでした。なぜだろう。

ソースコードは処理してる部分が150行とかちょっと長くなってきた上に別なクラスを2つほど追加してしまったので割愛させていただきます。

処理の流れは書いておきましょう。

1. キャプチャした画像から明度の変化がある部分を探して配列に格納する。
2. 動きを検出した各座標に対してそれぞれが互いに近いかどうかを判定して、近い物同士をまとめる。
3. 近い物同士をまとめた物の中で平均位置を計算する。
4. 3で得たまとめた物の中で、互いに重複している物を統合する。
5. 描画。

という流れでした。4があんまりうまく動いてないような気分。
あと2の”近い物”の基準がちょっと広すぎるのも難点。
3の近い物の判定に動きの向きとかを入れられるようになればもう少し四角が減らせるんじゃないかなと思っています。
あと近い物の判定に色を含ませるという処理の仕方も考えられそう。

そして、そろそろマシンの処理速度の限界というのも考えなきゃならなくなってきた。Javaの限界か、それとももっと効率の良いアルゴリズムがあるのか。