matlab二值图像 拟合直线
展开全部
clear all;close all;
I0=imread('line.jpg');
I=rgb2gray(I0);
I=im2bw(I);
subplot(131);imshow(I);
[m,n]=size(I);
Imid=zeros(m,n);
x = zeros(1,m);
y = zeros(1,n);
for i=1:m %扫描行
I1=I(i,:); %提取一行
dI1 = diff(I1); %微分,找到边界点
edge = find(dI1~=0);
if length(edge)==2
y(i) = fix((edge(1)+edge(2))/2);
x(i) = i;
Imid(x(i),y(i)) = 1;
end
end
%显示提取的中点
subplot(132);imshow(Imid)
%直线拟合
%去掉异常点
x(find(y==0))=[];
y(find(y==0))=[];
p = polyfit(x,y,1);
x1 = 1:m;
y1 = polyval(p,x1);
%画出直线
L=I0;
for i=1:m
L(x1(i),round(y1(i)),1)=255;
end
subplot(133);imshow(L);title(['y=' num2str(p(1)) '+' num2str(p(2)) 'x']);
更多追问追答
追问
十分感谢!x(find(y==0))=[];这句报错请问是什么原因?
追答
报什么错?
上海华然企业咨询
2024-10-28 广告
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步...
点击进入详情页
本回答由上海华然企业咨询提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询