13

2 つの 6 面サイコロの値を認識する単純なアプリケーションを構築しようとしています。いくつかの一般的な指針、またはオープン ソース プロジェクトを探しています。

2 つのサイコロは黒と白で、それぞれ白と黒のピップがあります。カメラまでの距離は常に同じですが、プレイ面での位置と向きはランダムです。

サイコロ http://www.freeimagehosting.net/uploads/9160bdd073.jpg
(最良の例ではありません。表面の色がより明確になり、影がなくなります)

私はこの種の認識ソフトウェアを開発した経験はありませんが、白または黒の色が支配的な正方形のプロファイルを検索して、最初に顔を分離することが秘訣だと思います (画像の残りの部分、つまりテーブル/再生表面、明らかに異なる色になります)、カウントのためにピップを分離します。トップダウンライティングで影をなくします。

説明されているシナリオが非常に単純 (一般的) であることを願っています。OCR テクノロジや同様のコンピューター ビジョンの課題に取り組んでいる開発者の「入門演習」としても使用できます。

アップデート:

さらにグーグルで調べたところ、不思議なことにまさに私が探していたものであるこのビデオに出くわしました。また、これまでのところOpenCV プロジェクトが私の最善の策であるようです。この他のプロジェクト OpenCVDotNetまたはEmgu CVで使用してみます。

更新:
まだ苦労しており、Emgu CV を動作させることができません。

アイデア、ポインタ、考えなどは大歓迎です!

4

7 に答える 7

9

@Brianが言ったように、画像トレーニングは「重要」ですが、実際には非常に簡単に作成できるプログラムになります。あなたがする必要があるのは、サイコロのハール分類器を開発することです。合計 6 つの分類子が必要になります。分類器は優れた画像認識の鍵であり、haar 分類器は現時点で最高のものです。彼らは作るのに長い時間がかかります。haar カスケードに慣れるための良いリンクを次に示します。

http://www.computer-vision-software.com/blog/2009/11/faq-opencv-haartraining/

http://www.cognotics.com/opencv/docs/1.0/haartraining.htm

http://note.sonots.com/SciSoftware/haartraining.html

この男の youtube ビデオをチェックしてから、彼がビデオで提供するリンクから彼のソースをダウンロードして、EmguCV でカスケード ファイルをどのように適用したかを確認してください。それはあなたが構築するものになります。

http://www.youtube.com/watch?v=07QAhRJmcKQ

このサイトは、画像のトリミングと、haar カスケードの作成に必要なインデックス ファイルの作成を自動化する小さなツールのソースへのリンクを掲載しています。数か月前に使用しましたが、正しく動作しませんでしたが、修正したところ、haar (HMM ではない) でうまく機能しました。私が修正したバージョンが必要な場合は、返信してください。

http://sandarenu.blogspot.com/2009/03/opencv-haar-training-resources.html

于 2010-05-03T04:56:26.810 に答える
3

大丈夫、

高レベルの抽象化(信頼性の高い手書き認識ソフトウェアや顔認識ソフトウェアを作成するために必要な抽象化のタイプなど)で画像認識を実行するためのアルゴリズムは、今日のコンピュータサイエンスで最も難しい問題の1つとして存続しています。ただし、説明したアプリケーションのように、十分に制約されたアプリケーションのパターン認識は、解決可能で非常に楽しいアルゴリズムの問​​題です。

私はあなたの仕事を実行するための2つの可能な戦略を提案します:

最初の戦略では、画像を前処理して低レベルの画像コンポーネントに関するデータを返すことができるサードパーティのソフトウェアを使用します。ここにSDKがあるpixcavatorというソフトウェアを使用した経験があります。。Pixavatorは画像をマイニングし、各ピクセルのカラー値間の不一致を調べて、画像内のさまざまなコンポーネントの境界線を返します。pixcavatorのようなソフトウェアは、写真のcomopentsの境界、そして最も重要なのは各ピップの境界を簡単に定義できるはずです。次に、サードパーティのソフトウェアから返されたデータを調べて、白または黒の小さな円形パーティションの説明に適合するコンポーネントを探すことがあなたの仕事になります。これらの画像コンポーネントのうち、分割された数を数え、それを使用して画像内のピップの量を返すことができます。

サードパーティのソフトウェアを使用せずにこの問題に取り組む意欲がある場合でも、問題は解決可能です。基本的に、ピップを探して画像テストをスキャンする円形のピクセルのセットである円形スキャナーを定義する必要があります(目が画像をスキャンして画像に隠されているものを探すのと同じように) )。アルゴリズムの「目」が画像をスキャンしているときに、画像からピクセルのセットを取得し(テストセットと呼びます)、事前定義されたピクセルのセット(トレーニングセットと呼びます)と比較し、確認します。テストセットが、事前定義されたエラー許容範囲内のトレーニングセットの1つと一致する場合。このようなテストを実行する最も簡単な方法は、テストセットの各ピクセルのカラーデータをトレーニングセットの各ピクセルと単純に比較して、不一致セットと呼ばれる3番目のピクセルセットを生成することです。不一致セットの値が十分に小さい場合(つまり、テストセットがトレーニングセットに十分に類似している場合)、画像上のその領域をピップとして定義し、画像の他の部分をスキャンします。

すべてのピップをキャッチし、ピップではないものについてテストで陽性にならないように、適切なエラー許容度を見つけるために少し推測して確認する必要があります。

于 2010-05-03T06:01:34.783 に答える
3

技術的なサポートはほとんどありませんが、Dice-O-MaticマークIIのメーカーがサポートできる可能性があります。

于 2010-04-08T03:46:37.210 に答える
2

これは、テンプレートからのオブジェクト認識に対するちょっとした質問であり、私が役立つと思う答えを提供しました。

さまざまな種類の分類子がおそらくうまく機能しますが、私はおそらく最初に概説した方法を試してみます。分類器は、実装、特に適切なトレーニングを行うのが難しいことがよくあります。また、問題がどこにあるのかを知るのは非常に困難です。分類器の実装にあるのか、間違った方法を選択したのか、パラメーターが間違っているのか、適切にトレーニングしなかったのか、それとも運が悪い?

いいえ、単純な画像処理方法といくつかの数学を使用して問題を(簡単に)解決できる場合は、分類器、テンプレートマッチング、ニューラルネットワークに近づかないでください。

于 2010-05-03T06:53:44.360 に答える
2

画像認識は重要です。何らかの方法で入力データを制約する必要がありますが、これについては考えたようです。

あなたの質問は、新聞で数独パズルの写真を撮って、それがあなたのためにパズルを解くことができるiPhoneアプリであるSudokuGrabの作者によるブログ投稿を思い出させました。投稿では、彼はあなたがあなたの問題を解決する際に直面するであろういくつかの問題と、彼がそれらをどのように克服したかについて議論します。

于 2010-04-08T03:56:34.543 に答える
1

もう1つの可能性は、最初に、より一般的な画像操作/認識アルゴリズムを使用してサイコロの位置を特定し、次に画像を回転させて標準の形式にスケーリングすることです(たとえば、まっすぐに回転されたサイコロの512x512ピクセルのグレースケール画像)。次に、6つの異なるニューラルネットをトレーニングして、画面上のさまざまな数のサイコロを認識します。AForge.Netは、優れた堅固な人工知能(ニューラルネットを含む)ライブラリであり、そこにかなりの道を開くはずです。

于 2010-05-03T06:46:11.750 に答える
0

このビデオでは、あなたが望む動作をほとんど見ることができると思います。作者は複数の白いサイコロを使用していますが、彼はコード (python/opencv) を提供しており、その上でプロジェクトを構築できるかもしれません。

于 2013-05-21T20:37:31.320 に答える