MATLAB中怎么根据点云数据,识别轮廓

MATLAB中怎么根据点云数据,识别轮廓,第1张

看是什么数据格式,有的可以直接load

比如这样的数据文件:

38643 52888 008600065

38643 52844 008600065

38643 52486 01420001

38639 52881 008600065

38638 53194 01860005

38634 53303 01070006

38631 52186 007900037

38631 52167 007900037

38626 53586 009600026

38624 52495 06620004

A = load('cloud3ddat'); %读入数据

%x,y,z轴坐标

x=A(:,1);

y=A(:,2);

z=A(:,3);

scatter3(x,y,z); %散点图

[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4'); %构造坐标点

pcolor(X,Y,Z);

shading interp; %伪彩色图

fcontourf(X,Y,Z); %等高线图

figure,surf(X,Y,Z); %三维曲面

题主贴出来的代码没有问题,不会出现你所说的错误。

请仔细检查代码是否与贴出来的一致。

程序运行得到的point1和point2相同:

>> point1

point1 =

   119     1

   119   189

>> isequal(point1,point2)

ans =

     1

是这样的,如果你再程序开始添加holdon这个的画,表示这之后的每一次作图都保留以前的图,这样就可以连续画图

反之holdoff,表示打开这个之后,每次画图,删除以前的图,

Close all; clear all; clc;

dir='D:\重要文件\A中期-图像处理\4047\7二值图像\';

point1 = [];

for i=1:3

  fn=strcat(dir,int2str(i));

  f=imread(strcat(fn,'bmp'));

J1=imfill(f,'holes');%填充

J2=bwperim(J1);%轮廓提取

rect=[0 0 191 119];

J3=imcrop(J2,rect);

[x,y]=find(J3==1)

xsort = sort(x,'descend');

ind1=find(x==xsort(1));

point1=[point1;x(ind1),y(ind1)]; %建议先看看3幅图像各自的边缘点是否都识别出来了,确认后可以把point1整体保存到xls中

%xlswrite('D:\重要文件\A中期-图像处理\4047\4047焦点坐标xls',point1,'she%et1',['A',num2str(i)])

end

解决方案1:

直接用缉鼎光刮叱钙癸水含惊ifft();例如信号x

y=fft(x);%对信号傅里叶变换到频域

z=ifft(y);%对信号y傅里叶反变换到时域,

解决方案2:

工具箱啊。IFFT()函数

以上就是关于MATLAB中怎么根据点云数据,识别轮廓全部的内容,包括:MATLAB中怎么根据点云数据,识别轮廓、我用MATLAB处理轮廓线与图片下边缘的两个交点的坐标、matlab程序画图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10129099.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存