Exhaustive Block Matching Algorithm
5 次查看(过去 30 天)
显示 更早的评论
Hi all,
I'm trying to write the Exhaustive Block Matching Algorithm based on the pseudo-code written in this slide: http://inst.eecs.berkeley.edu/~ee290t/sp04/lectures/motion_estimation.pdf
I think I wrote my programme not correctly but don't know where I was wrong. Can anyone please help me? Thank you very much :(
2 个评论
Jan
2012-2-1
It is very likely, that someone is assisting to solve the problems if you post the corresponding code and explain, what's going wrong. Currently the best answer is: "yes".
采纳的回答
Qihan Gao
2021-8-29
Hi, a reply after nearly 10 years to the original question. Since I am learning this subject these days, I have modified the codes to get it work. Here are my modified codes.
%Extract the matrix of your image and doing rgb2ycbcr transformation
%Here we assume that the Y_ref and Y_predict are the Luminance plane matrix
%As in YCbCr/YUV dimension,
%Cb and Cr carries less information that human sensors hard to detect
%Y_ref is the original first frame
%Y_predict is the original second frame
%N is the macroblock size
%R is the radius of pixels of the searching window
%Y_esitimate is the new second frame that the function produces from
%original first frame
%SAD is Sum of Absolute Difference
%Reson of using SAD not MAD is considering the total arithmetic operations
%Using SAD can reduce the computional complexity comparing to calculating MAD
function [Y_estimate SAD_counter] = Exhaustive_Search(Y_ref,Y_predict,N,R)
%SAD operations conunter
SAD_counter = 0;
[height width] = size(Y_ref);
for i = 1:N:height-N+1
for j = 1:N:width-N+1
%initialisation of SAD_min, the maximum value is 1xN^2 (after scaling)
SAD_min = 1*N^2;
for m = -R:1:R
for n = -R:1:R
if ( i+m < 1 || i+m+N-1 > height || j+n < 1 || j+n+N-1 > width)
continue;
end
SAD=sum(abs(Y_predict(i:i+N-1,j:j+N-1)-Y_ref(i+m:i+m+N-1,j+n:j+n+N-1)),'all');
SAD_counter = SAD_counter+1;
if (SAD < SAD_min)
SAD_min = SAD; Y_estimate(i:i+N-1,j:j+N-1) = Y_ref(i+m:i+m+N-1,j+n:j+n+N-1);
end
end
end
end
end
0 个评论
更多回答(3 个)
Tuan Nguyen
2012-2-7
5 个评论
Walter Roberson
2021-2-10
N is the block size. R is the search range. K is the current search location.
f1 is the first of the two blocks to be matched. f2 is the other block to be matched.
beppo
2017-11-22
Hi, what is the arrow function at the very bottom? Also, is the code working or not? Thanks
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Computer Vision with Simulink 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!