我已经给出了一个场景的三维点或这些点的一个子集,包括一个场景对象。我想从这些点创建一个深度图像,即图像中的像素值编码相应的3d点到相机的距离。
我发现了以下类似的问题
http://www.mathworks.in/matlabcentral/newsreader/view_thread/319097
然而那里的答案对我没有帮助,因为我想使用MATLAB。获取图像值并不困难(例如,简单地计算每个3d点到相机原点的距离),但是我不知道如何计算出2d图像中的相应位置。
我只能想象你在一个平面上投射所有三维点并将它们在飞机上的位置分成平面上的离散,好的矩形。然后,您可以平均每个bin的深度值。 然而,我可以想象这样一个程序的结果将是一个非常像素化的图像,而不是非常平滑。 你会怎么解决这个问题?
答案 0 :(得分:1)
假设您已经校正了相机倾斜(如果您知道角度,则可以进行简单的矩阵乘法),您可以只关注this example
X = data(:,1);
Y = data(:,1);
Z = data(:,1);
%// This bit requires you to make some choices like the start X and Z, end X and Z and resolution (X and Z) of your desired depth map
[Xi, Zi] = meshgrid(X_start:X_res:X_end, Z_start:Z_res:Z_end);
depth_map = griddata(X,Z,Y,Xi,Zi)