2016-05-11 4 views
-1

ビデオゲームからのフレームのセットを与えられたMATLABの基本的な追跡プログラムを実装する必要があり、それぞれを分析し、オブジェクト。私は、各オブジェクトのバウンディングボックスの座標を取得するために、機能regionpropsを使用し、以下のように、機能rectangleを使用してそれらを視覚化してきました:MATLABの一連の画像上の静的/動いているオブジェクトを分類する

for i = 1:size(frames,2) 
    CC{1,i} = findConnectedComponents(frames{1,i}); 
    stats{1,i} = regionprops('struct',CC{1,i},'BoundingBox','Centroid'); 
    imshow(frames{1,i}),hold on 
    for j = 1:size(stats{1,i},1) 
     r = rectangle('Position',stats{1,i}(j).BoundingBox); 
     r.FaceColor = [0 0.5 0.5 0.45]; 
    end 
end 

これはうまく動作しますが、私はしたいのですがもう一歩進んで静的オブジェクトと動くオブジェクトを区別することができます。私は重心を使って、各オブジェクトについて、それが各フレーム(オブジェクトが動いていることを意味する)で異なるかどうかを見ることを考えましたが、各画像ではオブジェクトの数が異なります。

たとえば、スペースインベーダーでこれを試していると、エイリアンを殺すと消えるので、オブジェクトの数が減ります。また、各投射物は別々のオブジェクトであり、異なる数の投射物がゲームの異なる瞬間に存在する可能性がある。

私の質問は、オブジェクトを移動するかどうかに基づいてオブジェクトを分類し、2つの異なる色でペイントする方法です。

+0

何らかの理由でオブジェクトの空間情報と時間情報を組み合わせ、フレーム内のカメラの動きに対して動きベクトルをキャンセルして、実際にビデオ内のフレーム内でどのオブジェクトが動かされたかを調べる必要があります。これは活発な研究課題です。 これは良いスタートです:http://www.cs.berkeley.edu/~katef/papers/CVPR2015_LearnVideoSegment.pdf – Harjatin

+0

私の問題についての良いことは、カメラの動きがないことです。 Atariのゲーム、PacManやSpace Invadersのような非常に簡単なゲームでは、一部のオブジェクトだけが画面の周りを動き、他のオブジェクトは静止しています。どういうわけか、それらを「分離」する必要があります。 –

答えて

0

一貫性のある背景の場合は、optical flowを使用するのが理想的です。

基本的な考え方はかなり簡単です。連続する2つのフレームを減算し、フレーム間を移動したオブジェクトのフローベクトルを取得することを検討してください。

Lucas–Kanade method Horn–Schunck methodをご覧ください。

Here is a link同じものをmatlabに実装します。

+0

ああ、私はオプティカルフローを考えましたが、残念ながら私はこのプロジェクトにコンピュータビジョンツールボックスを使用できません。境界ボックスを使ってそれを行うことができるはずです... –

+0

フローベクターは自分で見つけることができます'regionprops'を使います。 – Harjatin

+0

はい、どうですか?これは私の主な問題です...これらの手法を組み合わせて、静的オブジェクトの周りの緑色の境界ボックスと移動するオブジェクトの周りの赤色の境界ボックスでフレームを視覚化する方法... –