Я создаю алгоритм, который извлекает информацию из изображений - большая часть этой информации является данными, подобными энергии. Это в основном выполняется с помощью прохождение образа с ядром (размер задается как параметр) и получение квадратов сумм значений в этом ядре.
Это выполняется в трех масштабах, где три размера ядра (патча) равны (на данный момент) : smallestPatchSize, smallestPatchSize * 3, smallestPatchSize * 9 (с перекрывающимися ядрами во втором и третьем случае). Это делается для нескольких цветовых каналов, градиентных фильтров, и т. д. (всего их 17).
У меня вопрос, можно ли векторизовать приведенный ниже код; очевидно, что для выполнения этой части кода требуется гораздо больше времени, чем для выполнения любой другой. Я новичок в Matlab и все еще пытаюсь освоить векторизацию, но эта меня опережает :)
for dim = 1:17
for i = 1:smallestPatchSize:(size(image,1) - currentPatchSize)
for j = 1:smallestPatchSize:(size(image,2) - currentPatchSize)
% calculate the position in the energy matrix
% which has different dimensions than the input pictures
iPosition = (i - 1 + smallestPatchSize) / smallestPatchSize;
jPosition = (j - 1 + smallestPatchSize) / smallestPatchSize;
% calculate the energy values and save them into the energy matrix
energy(iPosition, jPosition, dim) = sum(sum(abs(...
filters(i:i+currentPatchSize, j:j+currentPatchSize,dim)))) ^ 2;
end
end
end
Заранее спасибо - это мой первый вопрос @ StackOverflow :)