使用最小二乘法将xld曲线拟合成直线

简介: 使用最小二乘法将xld曲线拟合成直线

halcon已经有算子fit_line_contour_xld


当然也可以自己实现:

* 先获得xld曲线上的点坐标
    get_contour_xld (ObjectSelected2, Row2, Col2)
    tuple_length (Row2, Length2)
    create_matrix (Length2, 1, Col2, MatrixID_y2) //y
    create_matrix (Length2, 2, 1, MatrixID_x2) //x
    set_value_matrix (MatrixID_x2, [0:Length2-1], gen_tuple_const(Length2, 0), Row2) //把X矩阵第一列换成MX的值
    mult_matrix (MatrixID_x2, MatrixID_x2, 'ATB', MatrixMultID_x2x2) //ATB=A的转置*B,实际上就是xT*x
    mult_matrix (MatrixID_x2, MatrixID_y2, 'ATB', MatrixMultID_x2y2) //xT*y
    invert_matrix (MatrixMultID_x2x2, 'general', 0, MatrixInvID_x2x2) //xTx的逆
    mult_matrix (MatrixInvID_x2x2, MatrixMultID_x2y2, 'AB', MatrixMultID_beta2) //xTx的逆 * xT*y ;就成了系数 β(a,b组成的矩阵)
    get_full_matrix (MatrixMultID_beta2, beta_Values2) //β的值,也就是a和b的值
    X20:=Row2[0]
    X2n:=Row2[Length2-1]
    Cols_2:=beta_Values2[0] * [X20,X2n] + beta_Values2[1]
    * 生成xld直线
    gen_contour_polygon_xld (Contour2, [X20,X2n], Cols_2)
    length_xld (Contour2, Length_Con2)
    * 计算距离 (原曲线到拟合直线)
    distance_pl (Row2, Col2, X20, Cols_2[0], X2n, Cols_2[1], Distance2_C2)


---


参考文献


http://ihalcon.com/read-17610.html


相关文章
|
5月前
|
Python
轮廓的矩
【6月更文挑战第25天】轮廓的矩。
34 1
|
5月前
|
SDN Python
轮廓的近似多边形
【6月更文挑战第11天】轮廓的近似多边形。
40 4
|
6月前
|
数据可视化
R语言中的多项式回归、B样条曲线(B-spline Curves)回归
R语言中的多项式回归、B样条曲线(B-spline Curves)回归
|
6月前
|
算法
[Halcon&拟合] 直线、矩形和圆的边缘提取
[Halcon&拟合] 直线、矩形和圆的边缘提取
377 0
7.6 曲面及其方程
7.6 曲面及其方程
79 0
曲线拟合-最小二乘法
线性最小二乘法及matlab例程
【数理统计】参数估计及相关(点估计、矩估计法、最大似然估计、原点矩&中心距)
【数理统计】参数估计及相关(点估计、矩估计法、最大似然估计、原点矩&中心距)
311 0
【数理统计】参数估计及相关(点估计、矩估计法、最大似然估计、原点矩&中心距)