4

手が開いているか閉じているかを認識する簡単な方法を探しています。

私は C# とEmguCVを使用していますが、これはこのコンテキストでは重要ではありません。何をする必要があるかを説明する「疑似コード」だけが必要です。

このアルゴリズムへの入力画像は、手を表すバイナリ画像 (セグメンテーション プロセスは既に実装済み) です。出力はブール値でなければなりません (オープン ハンドの場合は true、それ以外の場合は false)。

これは入力例です:

ここに画像の説明を入力

凸包、または白い領域のパーセンテージについて何かを考えようとしましたが、これらの方法はこの種の問題に対して十分に堅牢ではないと思います。

4

2 に答える 2

1

機械学習の用語では、入力画像のサイズ (白いピクセルの場合は 1、黒いピクセルの場合は 0) のバイナリ入力行列を単一のバイナリ出力 (開いた手は 1、閉じた手は 0) に分類します。手)。

閉じた手と開いた手の多くの画像を取得し、それらに手でラベルを付けてトレーニング セットを構築する場合 (しゃれではありません)、教師あり学習アルゴリズムを適用して分類子を作成できます。

教師あり学習アルゴリズムには多くの選択肢があります。おそらく、最初のショットで試すのに最適なものは、サポート ベクター マシンでしょう。

http://en.wikipedia.org/wiki/Support_vector_machine

サポート ベクター マシンは、基本的に、入力画像とトレーニング セットで提供されるサンプルとの間の「距離」を計算することによって機能します。入力画像が、トレーニング セットの閉じた手よりもトレーニング セットの開いた手の例に平均して「近い」場合、それは開いた手として分類されます (逆も同様です)。

他にも多くの教師あり学習アルゴリズムがあります。

http://en.wikipedia.org/wiki/Supervised_learning

于 2013-03-19T13:42:04.720 に答える
1

凸包はうまくいくはずです。凸包にある黒い領域のパーセンテージを計算できます。それがしきい値よりも大きい場合は、手が開いています。それ以外の場合は、白い領域の面積と周囲を計算し、それらの比率を確認します。開いた手の面積/周囲は、閉じた手の場合よりも小さくする必要があります。

于 2013-03-19T13:33:35.340 に答える