3

人気のゲーム、League of Legendsをプレイしているときに、特定のオブジェクトの相対位置を追跡するプログラムを作成しようとしています。具体的には、現在画面に表示されている「ミニオン」のx、y画面座標を追跡したいと思います(「ミニオン」は、写真の中央にある小さな男で、頭に小さな赤と緑のバーがあります)。

私は現在、Java Robotクラスを使用して、プレイ中に画面キャプチャをプログラムに送信しています。ミニオンを見つけて、画面に表示されている限り追跡するための最適なアルゴリズムを見つけようとしています。

私の現在の考えは、畳み込みニューラルネットワークを使用して、頭の上の色付きのバーでミニオンを識別して特定することです。ただし、新しいフレームごとにミニオンを再識別して特定する必要があります。これをリアルタイム(〜10-60 fps)で実行したい場合は、計算コストが高くなるようです。

この種のコンピュータビジョンアルゴリズムは私の専門ではありませんが、ビデオ内のオブジェクトが連続的に移動する(つまり、フレーム間をジャンプしない)という事実を利用するアルゴリズムが存在することは合理的と思われます。

それで、このタスクを達成するための簡単に実装可能なアルゴリズムはありますか?

ここに画像の説明を入力してください

4

2 に答える 2

4

これはコンピュータゲームなので、バーの色は一定でなければならないと思います。これは、動的照明がヘルスバーに影響を与える場合にのみ当てはまらない可能性があります。

したがって、この特定の色のすべてのピクセルを見つけるだけです。次に、いくつかの形態学的操作を実行し、画像をブロブにセグメント化します。いくつかの基準に適合するブロブのみを選択することで、ユニットの場所を見つけることができます。

私の答えにはビデオが含まれていないことは知っていますが、操作は非常に単純で、非常に高速である必要があります。

トラッキングについては、各ポイントごとに次のフレームで最も近いものを見つけてください。

HUDの位置は一定であるため、削除しても問題はありません。 HUDなしの画像

これは、Matlabでの迅速でそれほど堅牢ではない実装ですが、いくつかの制限があります。

  1. ユニットは非常に健全である必要があります(少なくとも40ピクセル幅)
  2. バーは重なりません。

 function FindUnits()
    x = double(imread('c:\1.jpg'));
    green = cat(3,149,194,151); 

    diff = abs(x - repmat(green,[size(x,1) size(x,2)]));
    diff =  mean(diff,3);
    diff = logical(diff < 30);
    diff = imopen(diff,strel('square',1));

    rp = regionprops(diff,'Centroid','MajorAxisLength','MinorAxisLength','Orientation');
    long = [rp.MajorAxisLength]./[rp.MinorAxisLength];
    rp( long < 20) = [];

    xy = [rp.Centroid];
    x = xy(1:2:end);
    y = xy(2:2:end);
    figure;imshow('c:\1.jpg');hold on ;scatter(x,y,'g');
end

そして結果:

ここに画像の説明を入力してください

于 2012-03-02T06:35:27.533 に答える
2

動的構造を含むモデルを使用する必要があります。オブジェクト追跡の目的には、隠れマルコフ モデル(HMM) (または一般的には動的ベイジアン ネットワーク) が非常に適しています。オンラインで HMM に関する多くのリソースを見つけることができます。ただし、直面する問題は、システム モデルによって異なります。システム ダイナミクスが線形ガウス マルコフ モデルとして簡単に表現できる場合は、単純なカルマン フィルターで問題ありません。ただし、非線形の非ガウス ダイナミクスの場合は、パーティクル フィルタリングを使用する必要があります。これは逐次モンテカルロ法です。カルマン フィルターと粒子フィルターはどちらも逐次的な方法であるため、現在のステップで取得した結果を使用して、次の時間ステップで結果を取得します。粒子フィルターによる複数オブジェクトの追跡に関するオンライン チュートリアルや論文を確認することをお勧めします。ただし、私が懸念している限り、追跡したいオブジェクトの数がわからないため、追跡したいオブジェクトの数と、追跡しているオブジェクトが次のように消える可能性があるため、追跡したいオブジェクトの数が主な問題になります。まあ(あなたはそれらの小さな男を殺すか、彼らは画面を離れるかもしれません)または他の男が画面に入ることができます。お役に立てれば。

于 2012-03-02T05:05:59.820 に答える