matlab从图片提取或拟合直线并画出拟合直线的方法

假如现在有如下一张灰度图(图片名为001.jpg),现在要拟合图中的那条白线

代码如下(Matlab2017):

im=imread('001.jpg');   %读取图片

%im=rgb2gray(im);   %如果是rgb图片则转为灰度图

[h,w]=size(im);         %获取图片高(h)、宽(w)

%扫描每一个像素,并记录白点(值为1)坐标及个数
n=0;
for y0=1:1:h
    for x0=1:1:w
        if(im(y0,x0)==255)
            n=n+1;
            y(n)=y0;
            x(n)=x0;
        end   
    end  
end

%最小二乘法拟合直线
A = 0.0;
B = 0.0;
C = 0.0;
D = 0.0;
for i=1:1:n
    A=A+x(i)*x(i);
    B=B+x(i);
    C=C+x(i)*y(i);
    D=D+y(i);
end

a = (C*n - B*D) / (A*n - B*B);
b = (A*D - C*B) / (A*n - B*B);

%灰度图转rgb彩色图片
imrgb=repmat(im,[1,1,3]);

%画线,线宽3,红色
for i=1:1:w    
    y
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值