私はDIYタッチスクリーンを作ろうとしていて、それを地元の科学博覧会に参加させたいと思っていますが、マルチタッチのプログラミングの側面でそれをやりたかったのです。私の問題は、(USBベースのWebカメラからの)画像の分析に取り組んだことがないということです。
可能であればC#でこのプロジェクトを実行したいと思います(C ++-最悪の場合は最悪の場合)
(USB Webカメラからの)
黒い画像を分析してから、白いしみが見えてくるのを検出する必要があります。どうすればこれを行うことができますか?---すべてのpxlを分析するのではなく、変更を検出するための既知の方法はありますか?もしそうなら、これがどこにあるかへのポインタがいいでしょう:)
また、USB経由でWebカメラから入力を取得するにはどうすればよいですか?---ライブラリ/ddlはどこで入手できますか?
私はこれで動作するいくつかのプログラムを見ましたが、それらは画像を変換します-これは時間とプロセッサ速度を消費します...生の入力画像/データを使用する方法はありますか?
ヘルプ?
4 に答える
入力を取得すると(完全に暗く、完全に明るいコントラストであると仮定して)、次のような値のマトリックスが作成されます:(グレースケール)
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 256 0 0 0 0 0
0 0 0 0 0 256 256 256 0 0 0 0
0 0 0 0 0 0 256 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
あなたの仕事は、正しい色の値(256)のセクションをセグメント化し、位置を決定することである必要があります。動きを得るには[1つのオブジェクトのみを追跡していると仮定して]、ブロブの次の位置を前の位置と比較する必要があります。
現実の世界では、特にWebカメラを使用すると、コントラストの良い暗い背景が表示されることはありません。ウェブカメラは低解像度で、光は決して完璧ではなく、レンズとCCDの欠陥/色の近似からノイズが追加されます。
さらに、ブロブの動きを追跡する際に問題が発生する可能性があります(ブロブが表面の他の場所で誤検出される可能性があります。2つのブロブを追跡しようとすると、さらに多くの問題が発生します。
これらの問題のいくつかは次のとおりです。
- ブロブの衝突(どのブロブがどこに行くのかをどうやって知るのか)
- ブロブのクロスオーバー(ブロブはサイドを切り替えましたか、またはブロブは前の移動とは逆方向に移動しましたか)
- ブロブの結合(2つのブロブが1つになる場合)
C#を使用してカメラを取得するには、これを確認することをお勧めします。WIAは、写真を撮るために使用する最も速い方法ではありません。ただし、対処する方がはるかに簡単です。これを行うことにまだ興味がある場合は、フォトショップで2つの画像を描画し、マーカーを追跡することをお勧めします。それほどエキサイティングではありませんが、問題に簡単に取り組み、問題の説明を緩和するのに役立ちます。
あなたが欲しいのは「blob-detection」です。これがblobライブラリに関する良いスレッドです
マルチタッチ/コンピュータビジョンライブラリとソフトウェアの山はすでにそこにあります。この種のものに最適なリソースはwiki.nuigroup.comです。特にフレームワークとライブラリのセクション。現在、C#情報はそれほど多くありませんが、何かを見つけた場合は、必ずそのwikiにすべての人のために配置してください。
NuiGroupフォーラムのC#(.NET / Silverlight / WPF)セクションもあり、非常に役立ちます。そのコミュニティで与えられるべきいくつかの大きな助けがあります。
ウェブカメラを使い始める場所として、私はここから始めます:
http://www.hanselman.com/blog/CapturingVideoAWebCameraUsingWIANotPossible.aspx
いくつかのリンクをたどることができますが、これはスコットがさまざまな課題や一般的な質問について話し、より多くの情報へのリンクを提供する記事であるため、ここから始めることをお勧めします。
ウェブカメラから画像を取得するために、AForgeフレームワークは非常に使いやすいです!コードハーベスティングの目的でモーション検出サンプルアプリをチェックしてください:)