根据 Suganuma 等的论文,我正在尝试实现从视差图像到虚拟视差图像的均匀变换。人。“一种使用虚拟视差图像的障碍物提取方法”。在完成论文中描述的矩阵计算之后,我得到了一个全局齐次变换矩阵,它只描述了方向 v 上 -27.7 的平移,这是有道理的。
现在,为了进行这种转换,我在 MATLAB 中实现了一个循环:
virtual_disparity=zeros(size(disparityMap));
%Homogeneous vector of a point of the disparityMap U=[u/d v/d 1/d 1]' (4x1)
U = zeros(4,1);
U_v = zeros(4,1);
for i=1:size(disparityMap,1) %Rows-->y
for j=1:size(disparityMap,2) %Cols-->x
d = disparityMap(i, j); % (i,j)-->(cols,rows)-->(y,x)
U = [j/d i/d 1/d 1]'; % [u/d v/d 1/d 1]'
U_v = B*U; % B is the whole homogeneous transform
U_v = U_v./U_v(4);
u_v_x = U_v(1); %u_v_j
u_v_y = U_v(2); %u_v_i
if((u_v_x>1) && (u_v_x<=size(virtual_disparity, 2)) && (u_v_y>1) && (u_v_y<=size(virtual_disparity, 1)))
virtual_disparity(round(u_v_y), round(u_v_x)) = disparityMap(i, j);
end
end
end
现在,问题是我得到的虚拟差异没有任何意义,因为它甚至与 B 中描述的转换不对应,正如我所说:
1.0000 0 0.0000 0
0 1.0000 0.0000 -27.7003
0 0 1.0000 0
0 0 0 1.0000
这些分别是视差和虚拟视差:
我整天都在重新检查,我没有发现错误。