halcon hysteresis_threshold算子详解

hysteresis_threshold

原型

hysteresis_threshold(Image : RegionHysteresis : Low, High, MaxLength : )

功能

对图像执行滞后阈值操作

参数列表

Image (input_object) :输入图像
RegionHysteresis (output_object) :滞后阈值操作分割后Region
Low (input_control) :设置的低阈值
High (input_control) :设置的高阈值
MaxLength (input_control) :官方解释:Maximum length of a path of “potential” points to reach a “secure” point.字面翻译:“安全”点和“潜在”点路径的最大长度。我的理解如下:

详解

滞后阈值对图像执行滞后阈值操作(滞后阈值由Canny引入)出自:J. Canny, “Finding Edges and Lines in Images”; Report, AI-TR-720, M.I.T. Artificial Intelligence Lab., Cambridge, MA, 1983.如果有精力可以参考论文。
图像上的灰度值>=High分割的RegionsOut(“secure” points)直接作为结果输出;相反,如果灰度值<Low分割的RegionsLow被直接舍弃;灰度值介于两者之间,对于分割后的每个Region(“potential” ),如果与RegionsOut的距离小于MaxLength 值,那么这个region就被当做RegionsOut一起输出,也就是说最初分割的RegionsOut会影响最终的输出结果。
在line_gauss算子中的应用https://blog.youkuaiyun.com/qq_18620653/article/details/105446922

### Halcon `select_shape` 算子详解 #### 1. 函数原型 `select_shape` 的函数定义如下: ```cpp select_shape(Regions, Pattern, SelectedRegions, Feature, Min, Max) ``` 此算子用于基于特定形状特征筛选图像中的区域。 #### 2. 参数描述 - **Regions**: 输入的区域对象集合。 - **Pattern**: 模式字符串,指定如何处理边界情况,默认为空串表示不作特殊处理。 - **SelectedRegions**: 输出符合条件的选择后的区域列表。 - **Feature**: 形状特征名称,决定了依据哪种几何属性来过滤区域。常见的选项有面积(`area`)、周长(`contlength`)等[^3]。 - **Min/Max**: 设定所选特征值范围的上下限,只有当某个区域对应的特征落在这个区间内才会被保留下来。 #### 3. 特征选择示例 ##### 圆形度 (Circularity) 圆形度衡量的是一个物体接近理想圆的程度。其计算方式为 \( \frac{A}{P^{2}}\pi^{-1} \),其中 A 表示面积而 P 是指周长。对于完美的圆形而言,该比率等于 0.25;而对于其他任何非圆形,则会小于这一数值。 ```cpp // 计算并选取具有较高圆形度的对象 gen_contours_skeleton_xld(SkeletonContours, Regions) shape_trans(Regions,'circularity',Measurements) threshold(Measurements,Circularities,0.8,1.0) // 只取最像圆形的部分 select_obj_by_measure(Regions,Circularities,SelectedRegions,'and') ``` ##### 紧凑性 (Compactness) 紧凑性的定义是 \( C=\sqrt{\frac{4πA}{P^2}} \),它反映了轮廓曲线相对于内部填充空间的比例关系。通常情况下,更紧密的图形会有更高的紧致系数。 ```cpp // 过滤掉那些不够紧凑的目标 shape_trans(Region,'compactness',CompactnessValues) select_shape(Region,[],FilteredRegions,'compactness',min_compact,max_compact) ``` ##### 面积 (Area) 简单地按照像素数量统计每个连通分量占据的空间大小,并据此做出判断。 ```cpp // 移除过小或过大尺寸的元素 area_center(Region,&Areas) select_shape(Region,[],ResultingRegions,"area",minimum_area,maximum_area) ``` #### 4. 实际应用场景实例 假设有一个包含多个不同形态斑点的二值化图片,现在希望通过编程手段仅留下满足一定条件的大颗粒结构体作为最终分析目标。可以采用上述提到的方法组合起来实现这样的需求。 ```cpp read_image(Image,'path/to/image.png') threshold(Image,BinaryImage,0,128) // 转换成黑白两色图 connection(BinaryImage,ConnectedComponents) // 获取所有独立组件 select_shape(ConnectedComponents,[''],LargeParticles,'area',lower_bound,upper_bound) dev_display(LargeParticles) // 显示结果 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值