我有一个Lidar传感器生成的点云。
我想将3D点云投影到2D图像上,就像我看着传感器的眼睛一样(例如,传感器位于坐标(0,0,0)上)>
我想生成一个2D图像,看起来与Matlab生成的图形非常相似(见下文)。
我知道这个3D到2D投影位于针孔相机投影中。但是,我无法生成与Matlab相同的结果。 第二个问题-另外我不知道应该设置哪个焦距-因为点云中没有实际的焦距。
Here is matlab generated figure
这是我的Matlab代码
path = fullfile(pwd, 'carPointCloud.txt');
data = importdata(path);
data(:,1:3) = data(:,1:3) - min(data(:,1:3)) + 1;
figure(5), scatter3(data(:,1),data(:,2),data(:,3),ones(1, size(data,1)),
ones(size(data,1),1)); hold on;
resPixelToMeter = 100 / 1;
focalPixels = 1;
imgWidth = 850;
imgHeight = imgWidth;
u = resPixelToMeter * focalPixels * (data(:,1) ./ data(:,3)) + imgWidth /2;
v = resPixelToMeter * focalPixels * (data(:,2) ./ data(:,3)) + imgHeight /2;
%figure(1), hist(u);
%figure(2), hist(v);
outOfImgRoi = u>imgWidth | v>imgHeight;
u(outOfImgRoi) = [];
v(outOfImgRoi) = [];
u = round(u);
v = round(v);
imgDim = [imgHeight, imgWidth];
indexes = sub2ind(imgDim, v, u);
img = zeros(imgHeight, imgWidth);
img(indexes) = 1;
figure(3), imshow(img);