24小时热门版块排行榜    

查看: 1056  |  回复: 0

zhongliuhua1

新虫 (初入文坛)

[交流] 最小二乘法拟合直线请教

W5是用canny算子提取后的边界,用最小二乘法对提取得边界进行直线拟合,然后再求两直线夹角,但是程序运行错误。


最小二乘法代码如下:
j=0;
[xa,ya]=size(BW5);
for i=1:xa
  q=find(BW5(i,==1);
   if~isempty(q);%判断能否找到边界点
   j=j+1
   [q1,q2]=size(q);%q1,q2分别是q矩阵横坐标和纵坐标的个数
   e0(j,=[i,q(1),q(q2)];%i是边界点的横坐标;q(1)是第一条边界曲线纵坐标;q(q2)是第2条边界曲线纵坐标;e0是由i,q1,q(q2)组成的矩阵
    end
end
p1=polyfit(e0(:,1),e0(:,2),1);%p1是左边界曲线的拟合直线系数
p2=polyfit(e0(:,1),e0(:,3),1);%p2是右边界曲线的拟合直线系数
x=1:xa;%横向扫描点
y1=polyval(p1,x);%左边界拟合所得直线的值范围
y2=polyval(p2,x);%右边界拟合所得直线的值范围
plot(x,y1,x,y2);%画出拟合直线
a=p1(1);b=p2(1);
theta=atan(abs((a-b)/(1+a*b)));
alfa=theta*(180/pi);
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhongliuhua1 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见