Я работаю над следующим кодом.Как получить векторы скорости и величины поля оптического потока? Я использую метод оптического потока Lucas-Kande
n=0;
folder = fileparts(which('viptraffic.avi'));
movieFullFileName = fullfile(folder, 'viptraffic.avi');
vidReader = VideoReader(movieFullFileName);
opticFlow = opticalFlowLK('NoiseThreshold',0.0039);
while hasFrame(vidReader)
frameRGB = readFrame(vidReader);
frameGray = rgb2gray(frameRGB);
flow = estimateFlow(opticFlow,frameGray);
H=imag(flow)
V=real(flow)
frameWithFlow = getframe(gca);
imshow(frameRGB);
imshow(frameWithFlow.cdata)
hold on
plot(flow,'DecimationFactor',[5 5], 'ScaleFactor',10)
hold off
n=n+1;
end
Есть ли способ получить оценки оптического потока по скорости и величине для каждого поля оптического потока, полученного на каждом изображении?
Ну, с приведенным выше кодом он переписывает значение фазы и величины для каждого кадра. Чтобы этого избежать, я создал трехмерную матрицу как: - nArrays = Vid_dur * Vid_frate; % Vid_dur - продолжительность видео, а Vid_frate - частота кадров видео threeD_Ori = нули (Vid_height, Vid_width, nArrays, 'single'); % Vid_height и Vid_width - высота и ширина видеофрагментов. Теперь я храню данные в матрице как threeD_Ori (:,:, ii) = flow.Orientation; Но это приводит к ошибке неправильной матрицы. Как сохранить результат? –