halcon-回归拟合

张开发
2026/4/21 12:44:11 15 分钟阅读

分享文章

halcon-回归拟合
主函数********************************** *拟合 ***pt1 pt1_Real:[ 85.0667, 86.5333, 86.5667, 86.7333, 86.7667] //实际膜厚即b tuple_length (pt1, Length) N:1 Polynomial_Fitting (N, ColorValue, RealThick, A, B, C_pt1, D_pt1, FitThickValue) *说明 *算法名多项式拟合 *N:拟合多显示的次数可写123 *ColorValue计算值 *RealThick实际值 *AB,C,D多项式系数次数依次降低 *FitThickValue拟合出来的膜厚值Polynomial_Fitting (N, pt1, pt1_Real, A, B, C_pt1, D_pt1, FitThickValue)* * * 系数初始化 A : 0 B : 0 C : 0 D : 0 * FitThickValue : [] * * * * * * * * if (N3) * * * * * 创建|ColorValue|行4列矩阵 * * 行数由数据多少决定列数由求解的未知系数数量决定二次函数就是3列三次函数就是4例四次函数就是5列。。。。。。。 create_matrix (|ColorValue|, N1, 1.0, MatrixA) * 创建|ColorValue|行1列的矩阵存放数据常数项即X^0 * create_matrix (|ColorValue|, 1, 1, MatrixACol0) * 创建|ColorValue|行1列的矩阵存放数据x * create_matrix (|ColorValue|, 1, ColorValue, MatrixACol1) * 创建|ColorValue|行1列的矩阵存放数据x^2 create_matrix (|ColorValue|, 1, ColorValue * ColorValue, MatrixACol2) * 创建|ColorValue|行1列的矩阵存放数据x^3 create_matrix (|ColorValue|, 1, ColorValue * ColorValue * ColorValue, MatrixACol3) * 创建|ColorValue|行1列的矩阵存放数据x^4 * 创建|ColorValue|行1列的矩阵存放数据x^5 * ........................ set_sub_matrix (MatrixA, MatrixACol3, 0, 0) set_sub_matrix (MatrixA, MatrixACol2, 0, 1) set_sub_matrix (MatrixA, MatrixACol1, 0, 2) set_sub_matrix (MatrixA, MatrixACol0, 0, 3) * * 普遍规律最高次项放左边也就是00 * 次高次项放最高此右边也就是01 * 依次往下 * 创建一个|RealThick|行1列的矩阵存放膜厚值 即Ax B种的B create_matrix (|ColorValue|, 1, RealThick, MatrixB) * 求解方程得出系数 solve_matrix (MatrixA, general, 0, MatrixB, MatrixX) * * 获取系数 get_value_matrix (MatrixX, 0, 0, A) get_value_matrix (MatrixX, 1, 0, B) get_value_matrix (MatrixX, 2, 0, C) get_value_matrix (MatrixX, 3, 0, D) * * 三次函数拟合结果 * FitThickValue : A*ColorValue*ColorValue*ColorValueB*ColorValue*ColorValueC*ColorValueD * * 清除矩阵句柄 clear_matrix (MatrixA) clear_matrix (MatrixB) clear_matrix (MatrixX) clear_matrix (MatrixACol0) clear_matrix (MatrixACol1) clear_matrix (MatrixACol2) clear_matrix (MatrixACol3) * * * * * * endif * * * * 二次 * if (N2) * * * * * 创建|ColorValue|行3列矩阵 * * 行数由数据多少决定列数由求解的未知系数数量决定二次函数就是3列三次函数就是4例四次函数就是5列。。。。。。。 create_matrix (|ColorValue|, N1, 1.0, MatrixA) * 创建|ColorValue|行1列的矩阵存放数据常数项即X^0 * create_matrix (|ColorValue|, 1, 1, MatrixACol0) * 创建|ColorValue|行1列的矩阵存放数据x * create_matrix (|ColorValue|, 1, ColorValue, MatrixACol1) * 创建|ColorValue|行1列的矩阵存放数据x^2 create_matrix (|ColorValue|, 1, ColorValue * ColorValue, MatrixACol2) * * ........................ set_sub_matrix (MatrixA, MatrixACol2, 0, 0) set_sub_matrix (MatrixA, MatrixACol1, 0, 1) set_sub_matrix (MatrixA, MatrixACol0, 0, 2) * * * 普遍规律最高次项放左边也就是00 * 次高次项放最高此右边也就是01 * 依次往下 * 创建一个|RealThick|行1列的矩阵存放膜厚值 即Ax B种的B create_matrix (|ColorValue|, 1, RealThick, MatrixB) * 求解方程得出系数 solve_matrix (MatrixA, general, 0, MatrixB, MatrixX) * * 获取系数 * get_value_matrix (MatrixX, 0, 0, B) get_value_matrix (MatrixX, 1, 0, C) get_value_matrix (MatrixX, 2, 0, D) * * 二次函数拟合结果 * FitThickValue : B*ColorValue*ColorValueC*ColorValueD * 清除矩阵句柄 clear_matrix (MatrixA) clear_matrix (MatrixB) clear_matrix (MatrixX) clear_matrix (MatrixACol0) clear_matrix (MatrixACol1) clear_matrix (MatrixACol2) * * * * * * endif * * * * 一次 * if (N1) * * * * * 创建|ColorValue|行2列矩阵 * * 行数由数据多少决定列数由求解的未知系数数量决定二次函数就是3列三次函数就是4例四次函数就是5列。。。。。。。 create_matrix (|ColorValue|, N1, 1.0, MatrixA) * 创建|ColorValue|行1列的矩阵存放数据常数项即X^0 * create_matrix (|ColorValue|, 1, 1, MatrixACol0) * 创建|ColorValue|行1列的矩阵存放数据x * create_matrix (|ColorValue|, 1, ColorValue, MatrixACol1) * 创建|ColorValue|行1列的矩阵存放数据x^2 * * set_sub_matrix (MatrixA, MatrixACol1, 0, 0) set_sub_matrix (MatrixA, MatrixACol0, 0, 1) * * * 创建一个|RealThick|行1列的矩阵存放膜厚值 即Ax B种的B create_matrix (|ColorValue|, 1, RealThick, MatrixB) * 求解方程得出系数 solve_matrix (MatrixA, general, 0, MatrixB, MatrixX) * * 获取系数 * * get_value_matrix (MatrixX, 0, 0, C) get_value_matrix (MatrixX, 1, 0, D) * * 一次函数拟合结果 * FitThickValue : C*ColorValueD * * 清除矩阵句柄 clear_matrix (MatrixA) clear_matrix (MatrixB) clear_matrix (MatrixX) clear_matrix (MatrixACol0) clear_matrix (MatrixACol1) endif * * * * return ()

更多文章