10

ライブWebカメラから取得した画像があります。画像内の特定のオブジェクトを検出し、その部分を抽出してさらに処理できるようにしたいと考えています。

具体的には、画像はゲームボードの画像になります。この質問の目的のために、それが数独ゲームボードであるとしましょう。

私の最初のアプローチは、対照的な領域を探してそこから解決することでしたが、多くの潜在的なエッジ(多くの誤り)が発生し、実際に必要な領域を特定する方法についての本当の手がかりがないようです。 !!

画像の関連部分を見つけて抽出する方法について、アルゴリズム、ライブラリ、コードサンプル、または単に優れたアイデアがありますか?

4

10 に答える 10

10

これには、無料のAForge.Net画像処理ライブラリを使用してください。たくさんのクールなものがあります。

于 2009-07-31T10:38:20.413 に答える
3

画像に対してフィルター操作とマスクを実行する必要があります。

画像からオブジェクトを取得する簡単な方法はないと思います。エッジ検出アルゴリズム、クリッピングを使用し、有効なオブジェクト/画像の基準を設定する必要があります。

画像のしきい値処理を使用してオブジェクトを検出することもできます。以下の画像処理ライブラリを参照してください。

  1. C、C++、C#、Visual Basic .NET、Delphi、Python 用のフィルターAPI
  2. http://www.catenary.com/
  3. 上記のライブラリよりも豊富なCIMGですが、C++ で記述されています。
于 2009-07-31T10:18:56.973 に答える
1

(多くの可能性があると思います)アプローチの1つ:

  1. 与えられた画像から直線 (エッジなど) を「取得/計算」するフィルターを見つけます。

  2. これで、すべての行 (xStart、yStart & xEnd、yEnd) のコレクション (配列) ができました。座標からすべての線の長さを簡単に計算できます。

  3. ここで、いつでも (!) 画像内に「1 つの最大の正方形/長方形」を期待できることを考えると、必要な数独長方形領域を見つけて計算し、画像からトリミングしてさらに処理を行うのは非常に簡単です。処理。

編集:その種の問題を解決/プログラミングすることは常に挑戦的ですが、同時に非常に興味深いものです:)。

于 2009-07-31T10:35:26.393 に答える
1

Hough Transformを使用してみてください。

于 2009-07-31T14:17:12.680 に答える
1

コーナー検出器 (Harris 検出器はうまく機能します) を使用して、数独グリッドの交差点とコーナーを見つけることから始めます。

次に、これらのポイントを使用して画像の修正を行い、画像を変換して、グリッドができるだけ長方形になるようにします。これで、OCR を実行する各正方形を問題なく見つけることができるはずです。

画像修正は単純ではなく、かなりの計算が必要です。

読む準備をしてください:)

ゲーム ボードの画像がすでに長方形に近い場合は、もちろん修正部分をスキップして、コーナー ポイントを直接使用して OCR の正方形を見つけることができます。

多くの人がニューラル ネットワークの使用を提案しています。この問題にニューラル ネットワークを投入する必要はまったくないと確信しています。オブジェクトの定義があいまいなオブジェクトを分類する必要がある場合、NN は (場合によっては) 有効です。「画像内の車を見つける」は、ニューラル ネットワークに使用できる問題です。これは、車の外観が非常に異なっていても、いくつかの機能が同じである可能性があるためです。したがって、十分なデータがあれば、車を検出するように NN をトレーニングできます。この問題では、非常に規則的で常にほとんど同じように見えるものがあるため、NN は何も簡単にしたり改善したりしません。

于 2009-08-02T07:59:57.817 に答える
1

他のアイデアを拒否することなく、ステップ 1 は実際には画像の回転を検出する必要があります。これを行うには、各ポイントで局所勾配を決定し、そのヒストグラムを作成します。これには、90 度のオフセットで 4 つの主要コンポーネントがあります。理想的には、これらは 0、90、180、および 270 ですが、そうでない場合は画像を回転させる必要があります。たとえば、サンプル画像では、時計回りに約 8 度の回転から開始する必要があります。

于 2009-08-11T14:50:21.797 に答える
1

フォージカラーフィルタリングを使用する

C#には多くのフィルタリング方法が提供されていますが、主に私はforgeフィルターを好みます。この目的のために、フィルターはほとんどありません。

* ColorFiltering
* ChannelFiltering
* HSLFiltering
* YCbCrFiltering
* EuclideanColorFiltering

こちらをご覧ください

于 2010-12-24T14:36:57.997 に答える
0

CamShiftまたはBlob trackingまたはParticle filtersをグーグルで検索する必要があります。それらはすべてあなたの問題に役立ちます。それらのほとんどは OpenCV に同梱されており、それは C# ラッパーの AForge.NET です。YouTube で、それらがどのように機能するかを示す素晴らしいデモを見つけることができます。

幸運を

于 2013-05-03T14:02:56.397 に答える