我的任务是将一些随机放置的视频帧重新排序为正确的顺序。我已经设法通过使用每个帧作为参考来做到这一点,并在该参考帧的结构方面找到两个最接近的帧..大概这两个最接近的帧将是该帧后面和之后的帧视频。在为每个视频帧找到两个最接近的帧之后,我会计算一个可能的路径。
然而,我的问题是在表现方面,尤其是在得分方面。不幸的是,它的效率非常低,仅计算 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%,但是问题是我需要创建一个可执行文件,我不确定我是否会实现相同的效果表现..