当前位置: 代码迷 >> 综合 >> Matlab实现点云数据(文本格式)的平行投影
  详细解决方案

Matlab实现点云数据(文本格式)的平行投影

热度:11   发布时间:2023-12-17 01:53:05.0

三维点云数据的处理有时需要借助对应的二维图像,进行平行投影后,虽然会损失诸多信息,但对于没有二维图像的数据来说,不失为一种借鉴,对于如何使信息损失降到最低,欢迎讨论哦~

ticfid=fopen('face1.txt'); % 打开文件
row=0;
while ~feof(fid) [~]=fgets(fid); row=row+1; 
end
fclose(fid); 
row;data2=zeros(row,6);
data=load('face1.txt');
x=data(:,1);y=data(:,2);z=data(:,3);r=data(:,4);g=data(:,5);b=data(:,6);k=1;
for m=1:length(x)data2(k,1)=ceil(x(m,1)+0.5);  data2(k,2)=ceil(y(m,1)+0.5);
%     data2(k,1)=roundn(x(m,1),-1);  
%     data2(k,2)=roundn(y(m,1),-1);data2(k,3)=z(m,1);data2(k,4)=r(m,1);data2(k,5)=g(m,1);data2(k,6)=b(m,1);k=k+1;
endx_stand=unique(data2(:,1));
y_stand=unique(data2(:,2));
sort(x_stand);
sort(y_stand);
data2_2d=zeros(length(x_stand),length(y_stand),3);for i=1:length(x_stand)for j=1:length(y_stand)data2_2d(i,j,1)=255;data2_2d(i,j,2)=255;data2_2d(i,j,3)=255;end
end
for i=1:rowindex_x=find(x_stand==data2(i,1));index_y=find(y_stand==data2(i,2));data2_2d(index_x,index_y,1)=data2(i,4);data2_2d(index_x,index_y,2)=data2(i,5);data2_2d(index_x,index_y,3)=data2(i,6);
end
figure();
data2_2d=uint8(data2_2d);
imshow(data2_2d,[]);
imwrite(data2_2d,'face1.jpg');
% image(data2_2d);
% subplot(1,2,1); 
% data2_2d=uint8(data2_2d);
% imshow(data2_2d,[]);
% imwrite(data2_2d,'face2.jpg');
% subplot(1,2,2);
% A=imrotate(data2_2d,90,'nearest','crop');
% imshow(A);
% imwrite(A,'rotated face2.jpg');
toc

 

  相关解决方案