matlab二值图像 拟合直线

各位大侠,我这里有张二值图,希望将每行黑色像素的中点取出来,然后进行拟合,希望大神指点程序... 各位大侠,我这里有张二值图,希望将每行黑色像素的中点取出来,然后进行拟合,希望大神指点程序 展开
 我来答
jimtien
推荐于2016-05-13 · TA获得超过7655个赞
知道大有可为答主
回答量:2146
采纳率:88%
帮助的人:1138万
展开全部
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 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步... 点击进入详情页
本回答由上海华然企业咨询提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式