0

Мне поручено переупорядочить несколько случайно размещенных видеокадров в нужном порядке. Мне удалось это сделать, используя один кадр в качестве ссылки один раз и найти два ближайших кадра в терминах структуры для этого кадра ссылок. Предположительно, эти два ближайших кадра будут теми, которые стоят за и после этого кадра в видео. После нахождения двух ближайших кадров для каждого видеокадра, я бы вычислил возможный путь.Эффективный способ использования функции ssim() в Matlab для сравнения структур изображений (или любой другой альтернативы)

Моя проблема, однако, когда дело доходит до производительности, особенно при подсчете очков. Это очень неэффективно, к сожалению, и время выполнения для 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%, однако проблема в том, что мне нужно чтобы создать исполняемый файл, и я не уверен, что я бы достиг такой же производительности.

ответ

0

Ничего, здесь я просматриваю все пары изображений, дважды (параметры переключения), которые не нужны. можно уменьшить скорость на n-1/2.

Если вы хотите повысить эффективность по сравнению с точностью (что в моем случае, это так), поиск оценки из корреляции гистограмм является одним из возможных способов.

Мне потребовалось 55 секунд для обработки 72 кадров с помощью ssim(), а всего 1,2 секунды с разницей в гистограммах.