2009-05-20 11 views
2

私は、ユーザーが与えたテトリスを白黒画像の中で認識するアプリケーションを作らなければなりません。私は配列に分析するためにイメージを読んだ。Cでテトリスピースを認識する

Cでこれをどうすればできますか?

+0

画像はどこから来たのですか?それらはどのように作成されますか?彼らはどんなサイズでも、あるいは一定のサイズがありますか? –

+0

画像はどのように見えますか?写真?それとも完璧ですか?テトリスピースあたり4つの白いピクセルがありますか?より大きい?ピースの各ブロックは16x16ピクセルですか?画像の端に平行または回転しますか? –

+0

すべての質問に答えるには、次のファイルを参照してください。http://ruifelgueiras.net76.net/Work/work.doc – rpf

答えて

1

イメージを配列に読み込んだと仮定して、正規表現を使用するのはどうですか? 正確な形状マッチングは必要ありませんが、おおよそお試しください。

:ドキュメントファイルをダウンロードしました。正規表現がこの問題に適していないように、2D配列上のランダムな図形の中からランダムなパターンを特定する必要があります。それは悪いニュースです。良いニュースは、あなたの宿題は正確には画像処理ではなく、はるかに簡単です。

私はあなたのためのコードを作成しませんが、私はあなたに指示を与えることができますあなたの宿題です。

  1. オリジナルのパターン/ピースを回転させて新しいピースを作成できるルーチンが必要です。 (注:4x4四角形 - すべてのセルを意味します)
  2. ピースが2Dイメージの位置x、yに一致するかどうかをチェックするルーチンが必要です。一致する領域に角-2、y-2、x + 1、y + 1)となる。
  3. すべての画像の位置(x、y)を照合して検索します。

並列性を使用する必要があるため、4つのスレッドを作成し、各スレッドに異なる回転を割り当てて検索します。

+5

問題に直面したときには、「私が知っている、私は正規表現を使用します」と思う人もいます。今、彼らには2つの問題があります。 -Jamie Zawinski – Jem

+0

非常に巧妙なJem。パターン認識の問題です。宿題です。 Regexをいつ使うべきですか? –

+0

この問題で正規表現を使用するにはどうすればよいですか? – rpf

1

あなたは最初からそれを実装したくないかもしれません(もちろん必須でない限り)。私は適切なライブラリを探すことをお勧めします。私はOpenCVがいいと聞いたことがありますが、マシンビジョン自体は何もしていないので、私はそれをテストしていません。

1

接続されたコンポーネントを検索します(つまり、深さ優先検索を使用します;効率が問題であれば再帰を避け、代わりに独自のスタックを使用します)。最大の連結成分はテトリス片でなければなりません。次に、形状、サイズ、または何らかの境界の説明を使用してそれをさらに解析できます。

1

「I、J、L、O、S、T、Z」と呼ばれるウィキペディアのテトリスの形を見ると、バウンディングボックスの辺の比率バイナリイメージとC)あなたがI(4:1)かO(1:1)のどちらを持っているかを明らかにします。他の形状は2:3です。

(J、L、S、T、またはZ)の残りの図形を検出するには、図形のエッジの長さと位置を境界ボックスのエッジに当てはめることができるように見えます。したがって、Tは3面に沿って3と1を示し、2面に沿って1と1を示します。位置を把握することで、JとL、SとをZから区別できます。

関連する問題