「大連鎖チャンスあならいざあ」とは?

「ぷよぷよ!!クエスト」のだいれんさチャンスを自動で解くプログラムです。

キャプチャした画像を解析できるほか、パソコンに繋いだWebカメラから リアルタイムにゲームの画面を判定してこたえを出すことができます。

画像解析例

Webカメラ解析例

 ダウンロード

ここからダウンロードできます。任意の場所に解凍して使ってください。

download ダウンロード


Windows XP と Windows 7 の 32bit版 で動作を確認しています。
動作には Java6 または Java7 が必要です。
Webカメラは UVC対応のものならば大体動くと思います。


 使い方

起動

「puyoana」というアイコンをダブルクリックすれば起動します。




画像の解析

  1. 「ファイル(F)」メニューから「画像ファイルを開く(P)...」を選び、解析したい画像を選びます。
  2. 「必要な部分を切り出しますか?」というダイアログに「はい」と答えると画像の必要な部分だけが読み込まれます。




  3. ここで「いいえ」を選ぶと、画像が完全に読み込まれます。
    キャプチャ画像の場合、解析に必要なのは画像下部のぷよぷよが表示されている領域だけなので、 通常は「はい」で構いません。

  4. ぷよセレクタ(緑色の枠)の中にぷよぷよが収まっていることを確認します。



  5. ぷよセレクタの位置がおかしい場合は、



    「機能(L)」メニューから「ぷよセレクタをiPhone用にセット(I)」を選択するか、



    マウスで左上から範囲選択して、ぷよセレクタの位置を整えます。



    iPhone や Android で画面キャプチャした画像の場合は前者の方が楽です。

  6. 「機能(L)」メニューの「大連鎖チャンスを解析(A)」を選びます。




  7. だいれんさチャンスが解析され、こたえが表示されます。







Webカメラ映像の解析

  1. 「ファイル(F)」メニューから「カメラを開く(P)...」を選び、解析したい画面にカメラを合わせます。

  2. ※ iPhoneとかAndroidとか持っていないので、パソコンの画面で説明します。

  3. ぷよセレクタ(緑色の枠)の中にぷよぷよが収まるように調整します。



  4. ぷよセレクタの位置がおかしい場合は、マウスで左上から範囲選択して、ぷよセレクタの位置を整えます。







  5. カメラの位置、画像の歪みなど調整し、おおむねクロスヘアの中心がぷよに当たるように調整します。

  6. 色が正しく認識できていないぷよ(黒四角(■)表示になっているターゲット)の色を設定します。

  7. 大連鎖チャンスあならいざあは、ぷよセレクタが捉えた色と自分が知っている色を比べ、 もっとも近い色のぷよだと認識します。 たとえばぷよセレクタが捉えた色が水色や群青色ならあおぷよ、 ワインレッドやブラッドレッドならあかぷよ、というように。 ところが、通常カメラから見える色は、天気やディスプレイの種類、光の反射具合、カメラの性質などで 毎回微妙に異なります。そのため、その時々に「ピンクに見えるがコレはむらさきぷよ」とか、 「薄い黄色に見えるがこれは白色」などとチューニングをする必要があります。

    チューニングには 2種類の方法があります。

    1つは『色定義』。
    こちらは、カメラから見えているこの色を「あかぷよ」とみなすよ、などと あならいざあに教えてあげる機能です。

    もう1つは『色推定の厳密さ』。
    知っている色にどれだけ近ければその色とみなすか、を設定する機能です。
    例えばあるピンクは赤だけど、もうちょっと薄くなると赤とはみなさない、というように、色距離を設定します。

    多くの場合は、色推定の厳密さを設定すれば解決します。



    「範囲」が 41.4 だと黒四角(■)が多いですが、



    「範囲」を 71.0 まで上げればほぼ正確に判定できるようになり、



    「範囲」を 350.0 にしたら、完全に判定できました。

  8. 「機能(L)」メニューの「大連鎖チャンスを解析(A)」を選びます。




  9. だいれんさチャンスが解析され、こたえが表示されます。




  10. うまく動いた設定情報は保存しておきましょう。
    「ファイル(F)」メニューから「プロファイルに名前をつけて保存(S)...」を選択すれば、設定を保存できます。


 うまく動かないときは

「Javaの起動に失敗しました」と言われる



パソコンに Java がインストールまたはセットアップされていません。 Java をインストールしてから再度試してみてください。

Java のダウンロード(無料)

それでも解消しない場合は、Javaの場所を指定してください。
「編集(E)」メニューから「JavaVMを設定(J)...」を選択し、Javaw.exe の場所を指定します。

「参照..」ボタンを押し



Javaw.exeを探して選択します。
たいがい「C:\Program Files (x86)\Java\jre7\bin\javaw.exe」にあります。



「OK」ボタンを押して戻ります。




「Error:Unable to access jarfile」と言われる



必須のモジュール「analyzer.jar」が見つからないというエラーです。
通常 puyoana.exe と同じ場所にあるべきですが、puyoana.exe だけを移動したり、 ZIP からの解凍が不完全だったりすると発生します。

puyoana.exe と同じフォルダに「analyzer.jar」を置くか、再度ダウンロードからやり直してください。


居るはずの無い場所にぷよがいる!



右上のなにもないところに、あおぷよが検出されています。便宜上「ごーすと」と呼びます。
これは背景の青い光の絵をあおぷよと誤認しているためです。

解消には、あならいざあを調整する必要があります。
「編集(E)」メニューの「色推定の厳密さを設定(D)...」から、「範囲」を下げると直ることが多いです。




居るはずの場所にぷよが居ない!



あおぷよがあるはずのところが黒四角(■)で検出されています。
これはぷよセレクタが検出している色が、正しいぷよの色だと判断できないためです。

解消には、あならいざあを調整する必要があります。
「編集(E)」メニューの「色推定の厳密さを設定(D)...」から、「範囲」を上げると直ることが多いです。



居るはずの場所にぷよが居ないし、居ないはずの場所になんか居る!



前述 2つの問題が同時に出ているパターンです。
これはぷよセレクタが検出している色が、正しいぷよの色だと判断できないためです。

解消には、あならいざあを調整する必要がありますが、『色推定の厳密さ』だけでは調整できません。
「編集(E)」メニューの「色定義を編集(D)...」から色定義ダイアログを表示し、設定を編集します。



具体的な設定は試行錯誤するしかないのですが、ごーすと(居ないはずの場所に居るぷよ)が でなくなるまで「範囲」を下げた上で、色定義に色を追加していくとうまくいくことが多いです。





 機能説明

大連鎖チャンスあならいざあは、元々 Webカメラからの映像を解析し、 リアルタイムにだいれんさチャンスのこたえを出すことを目的に開発しました。
ところが実際にやってみるとカメラの画像はノイズが色々あって、 なかなかキレイに解析することができません。
結局自動的に解析するのは諦めて、人間の勘を反映できる機能を作り込むことにしました。

ということで、ここでは設定方法やこのプログラムが採用しているアルゴリズムを解説します。


色定義ダイアログ



実際の色とぷよの色を紐付ける設定ダイアログです。たぶんこのソフトの中で一番わけわからない。
RGBコードで表現される色(この絵だと04,1a,80)を、ぷよぷよの色である 「あか、あお、みどり、むらさき、きいろ」で言えばどれに当たるか、を定義します。

ダイアログを表示した状態でメインウィンドウをクリックすると、クリックした場所の色が取り込めます。
取り込んだ状態でプルダウンリストからぷよの色を選んで「追加」ボタンを押すと、 リストに紐付けが追加されます。
リストをクリックした状態で「削除」ボタンを押すとその色が消えます。
設定はリアルタイムで反映されますが、OKボタンを押さない限り、いつでも破棄(キャンセル)できます。



フィルタ



あならいざあの認識状況をユーザに伝える機能です。て固く言うとこれもわけわかんないですね。
平たく言うと次の通りです。
  • ピックアップカラーフィルタ は、ぷよセレクタが選んでる色を表示します
  • アナライズドぷよフィルタ は、ぷよセレクタが選んでる場所が何ぷよかを表示します
  • フィルタを非表示 は、ぷよセレクタだけを表示します
標準はアナライズドぷよフィルタです。 そのほかは、ぷよの色が正確に判定できないときに、状況を判断するために使います。

大連鎖チャンスあならいざあは、ぷよの中心色だけで色を判断しているのではないため、 ピックアップカラーを色定義に追加しても、設定どおりにならないことがあります。



ぷよ色判定のアルゴリズム

ぷよ色判定は、おおむね次のアルゴリズムで実装しています。 半分自分のためのメモ。
  1. ぷよセレクタのクロスヘアを基準に、中心と周囲 17point をサンプリング
  2. サンプリングした色を色定義と照らし合わせ。全ての色定義との色距離が、厳密さの範囲外なら黒とみなす
  3. サンプルの中で、白を除く頻出の色を判定
  4. 黒以外と判定された色は、白も検出されれば(それは白目だろうから)導出した色と判断する
  5. 黒以外と判定された色で白が検出されず、かつ黒も2番目に頻出であれば、その場所は背景(黒)であるとみなす
アルゴリズムやサンプリング方法は研究の余地があるのですが、いまはこんなところ。




Copyright (c) 2013 YGGDRASILL SOFT
Create: 2013.09.16 T.Naka