0

ランダムに配置された多数のビデオ フレームを正しい順序に並べ替えるタスクが与えられました。各フレームを参照として 1 回使用することでこれを行うことができ、その参照フレームの構造に関して最も近い 2 つのフレームを見つけました。おそらく、これらの最も近い 2 つのフレームは、ビデオ。ビデオ フレームごとに最も近い 2 つのフレームを見つけた後、可能なパスを計算します。

しかし、私の問題はパフォーマンス、特にスコアリングに関してです。残念ながら非常に非効率的で、72 フレーム (320x240) の実行時間だけで、スコアリングだけで約 80 秒かかります。私はMatlab(または同様の言語)にあまり精通していませんが、これは私が今採点のために行っていることです:

for i =1: n_images,
current_image = Images{1,i};

%obtain score pairs image similarity
for j = 1:n_images,
    if i ~= j,
        scores(1,j) = ssim(Images{1,j}, current_image);                
    end
end      
[svalues, index] = sort(scores,'descend');
Closest(1,i) = index(1,1);
Closest(2,i) = index(1,2);
%Closest consists of a 2 x n_images matrix, where for each frame index, there are two 
%column values, which are the indexes of the closest frames. 
end

最適化のためのヒントや、より良いスコアリング方法の提案を誰かに教えてもらえますか?

編集:画像は正規化され、グレースケールに変換されます

編集 #2: スコアリング ループに parfor を追加してスレッドを使用しようとしましたが、パフォーマンスが約 50% 向上しましたが、問題は実行可能ファイルを作成する必要があり、同じことを達成できるかどうかわかりません。パフォーマンス..

4

1 に答える 1