进行拟合前,需要对获取的轮廓进行分割、联合的处理,有如下相关的算子可以关注下:
分割:
//将XLD轮廓分段为直线段、圆弧段、椭圆弧段
segment_contour_xld
Contours:输入被分段的轮廓
ContoursSplit:输出分段后的轮廓
Mode:分割轮廓的模式
SmoothCont:用于平滑轮廓的点数
MaxLineDist1:轮廓与近似线之间的最大距离(第一次迭代)
MaxLineDist2:轮廓与近似线之间的最大距离(第二次迭代)
联合:
//联合直线,联合近似共线的轮廓(参数的意义,参看图示解析)
union_collinear_contours_xld
Contours:输入XLD轮廓
UnionContours:输出联合后的轮廓
MaxDistAbs:沿参考轮廓的回归线测量的两个轮廓之间的间隙的最大长度
MaxDistRel:两个轮廓之间的间隙的最大长度,相对于参考轮廓的长度,均沿着参考轮廓的回归线测量。(比例)
MaxShift:第二轮廓与参考轮廓的回归线的最大距离。
MaxAngle:两个轮廓的回归线之间的最大角度。
Mode:定义轮廓属性处理的模式,即:是否保留或丢弃轮廓属性。
//临近联合
union_adjacent_contours_xld
Contours:输入XLD轮廓
UnionContours:输出联合后的XLD轮廓
MaxDistAbs:轮廓终点的最大距离。
MaxDistRel:轮廓终点相对于较长轮廓长度的最大距离。(比例)
Mode:定义轮廓属性处理的模式,即:是否保留或丢弃轮廓属性。
//联合圆轮廓的函数
union_cocircular_contours_xld
Contours:被拟合的轮廓
UnionContours:拟合后的轮廓
MaxArcAngleDiff:两个圆弧的最大角距离
MaxArcOverlap:两个圆弧的最大重叠
MaxTangentAngle:连接线与圆弧切线之间的最大角度
MaxDist:两个圆弧之间间隙的最大长度(以像素为单位)
MaxRadiusDiff:适合两个圆弧的圆的最大半径差
MaxCenterDist:适合两个弧的圆的最大中心距离
MergeSmallContours:确定是否还应合并没有拟合圆的小轮廓(true或者false)
Iterations:迭代次数
其他:
//关闭边缘,让边缘更加封闭
close_edge
Edges:包含一个像素粗边的区域
EdgeImage:边缘幅度图像
RegionResult:包含被关闭边缘的区域
MinAmplitude:最小边缘幅度
//关闭边缘,限制数量
close_edges_length
Edges:包含一个像素粗边的区域
Gradient:边缘幅度图像
CloseEdges:包含被关闭边缘的区域
MinAmplitude:最小边缘幅度
MaxGapLength:边缘扩展的最大点数
//得到骨架亚像素轮廓
gen_contours_skeleton_xld
Skeleton:输入骨架
Contours:轮廓结果
Length:轮廓上点的最小数量
Mode:轮廓滤镜模式
//提取骨架
//计算一个区域的骨架
skeleton
Region:要被稀疏的区域
Skeleton:骨架结果
//对区域去获取边缘
boundary
Region:被计算边缘的区域
RegionBorder:边缘结果
BoundaryType:边缘类型
更多halcon和六轴机械臂算法干货公众号: