3

我必须实现深度图像基础渲染。给定一个 2D 图像和一个深度图,该算法将生成一个虚拟视图——如果将相机放置在不同的位置,场景会是什么样子。我写了这个函数,V是二维视图像素的矩阵,D是深度图的像素和相机移位参数。Z=1.1-D./255;是规范化。我尝试遵循以下指令:对于深度图中的每个像素,计算由深度产生的差异,对于源 2D 图像中的每个像素,在虚拟视图中为其找到一个新位置:旧位置 + 差异特定像素。功能不好用,怎么回事?

function[virtualView]=renderViews(V,D,camerashift)
Z=1.1-D./255;
[M,N]=size(Z);
for m=1:M
for n=1:N
d=camerashift/Z(m,n);
shift=round(abs(d));
V2(m,n)=V(m+shift,n);
end
end
imshow(V2)
4

0 回答 0