-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmotion_vector_difference.m
More file actions
27 lines (23 loc) · 1.12 KB
/
Copy pathmotion_vector_difference.m
File metadata and controls
27 lines (23 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function MVD = motion_vector_difference(mVect, imgsz, mbSize)
row = imgsz(1,1); col = imgsz(1,2);
nr = row/mbSize; nc = col/mbSize;
mbc = length(mVect);
MVp = zeros(2,mbc);
MVD = zeros(2,mbc);
MVD(:,1) = mVect(:,1) - MVp(:,1);
for k = 2:mbc
if(k <= nc)
MVp(:,k) = mVect(:,k-1); % MV of A block. MVleft.
elseif(mod(k-1,nc)==0)
MVp(1,k) = ceil(median([mVect(1, k - nc), mVect(1, k - nc + 1)])); %MV of B and C blocks. MVtop and MVtop-right.
MVp(2,k) = ceil(median([mVect(2, k - nc), mVect(2, k - nc + 1)]));
elseif(mod(k,nc)==0)
MVp(1,k) = ceil(median([mVect(1, k - 1), mVect(1, k - nc), mVect(1, k - nc - 1)])); %MV of A, B and D blocks. MVtop and MVtop-left and MVleft.
MVp(2,k) = ceil(median([mVect(2, k - 1), mVect(2, k - nc), mVect(2, k - nc - 1)]));
else
MVp(1,k) = ceil(median([mVect(1, k - 1), mVect(1, k - nc), mVect(1, k - nc + 1)])); %MV of A, B and C blocks. MVtop and MVtop-right and MVleft.
MVp(2,k) = ceil(median([mVect(2, k - 1), mVect(2, k - nc), mVect(2, k - nc + 1)]));
end
MVD(:,k) = mVect(:,k) - MVp(:,k);
end
end