В этом примере показано, как использовать Block
Matching
блокируйтесь, чтобы оценить движение между двумя изображениями.
Считайте фреймы изображения, для которых должно быть оценено движение.
I1 = imread('car_frame1.png'); I2 = imread('car_frame2.png');
Откройте модель путем вызова open
функция в командной строке MATLAB. Задайте имя файла Simulink, чтобы открыться.
open_system('ex_blockmatching.slx');
Загрузите изображения в рабочее пространство модели при помощи Image From Workspace
блок. Чтобы непосредственно считать изображения из расположения файла, используйте Image From File
блокируйтесь вместо этого. Модель оценивает движение между двумя изображениями RGB движущегося автомобиля, которые получены в различных временных интервалах. Модель использует три алгоритма соответствия блока шага для оценки движения. Функция стоимости для соответствия с неперекрывающимися макро-блоками установлена в среднеквадратичную погрешность (MSE). Размер макро-блоков установлен в 35 35, и максимальное смещение (в горизонтальном и вертикальном направлении) допускало соответствующие блоки, установлен в 7 пикселей. Скорость выводится от Block
Matching
блок состоит и из горизонтальных и из вертикальных составляющих вектора движения в комплексной форме.
Можно использовать Compositing
блокируйтесь, чтобы наложить обоих изображения.
Симулируйте модель и сохраните выход модели в рабочее пространство MATLAB. Выходные параметры модели вектор движения и изображение overlayed.
out = sim('ex_blockmatching.slx');
Считайте выходной вектор движения и изображение overlayed.
vx = real(out.simout.Data); vy = imag(out.simout.Data); imageOverlay = out.simout1.Data;
Задайте точки на плоскости изображения относительно размера макро-блоков.
x = 1:35:size(imageOverlay,1); y = 1:35:size(imageOverlay,2);
Отобразите изображение overlayed и постройте горизонтальные и вертикальные составляющие вектора движения при помощи quiver
функция.
figure,imshow(imageOverlay);
hold on
quiver(y',x,vx,vy,0);