gen_contours_skeleton_xld(Skeleton : Contours : Length, Mode : )算子
时间: 2024-02-05 16:05:08 浏览: 253
gen_contours_skeleton_xld算子是HALCON中用于从骨架图生成轮廓的算子。它可以根据骨架图生成一系列轮廓,并返回轮廓的长度和类型。
具体来说,gen_contours_skeleton_xld算子可以通过以下参数进行调用:
- Skeleton:输入的骨架图。
- Contours:输出的轮廓。
- Length:输出的轮廓长度。
- Mode:轮廓类型,可以选择"outer"(外轮廓)或者"inner"(内轮廓)。
在运行该算子时,它会根据指定的轮廓类型(outer或者inner)从骨架图中提取相应类型的轮廓,并将轮廓返回到Contours参数中。同时,它还会计算轮廓的长度,并将长度返回到Length参数中。
需要注意的是,gen_contours_skeleton_xld算子仅能处理二值图像的骨架图,并且对于非连通的骨架图,它只能处理其中的一个连通分支。如果需要处理多个连通分支,可以将骨架图分解成多个骨架图,并分别对每个骨架图调用该算子。
相关问题
halcon 搜索xld长度算子
Halcon中的xld长度算子是指xld_length。该算子用于计算xld对象的长度。下面是示例代码:
```cpp
// 读取图像
read_image(image, "test.jpg");
// 转换为灰度图像
rgb1_to_gray(image, gray);
// 边缘检测
edges_image(gray, edges, "canny", 2, 20);
// 转换为xld对象
gen_contours_skeleton_xld(edges, &skeleton, "filter");
// 计算长度
xld_length(skeleton, &length);
// 显示结果
dev_open_window(0, 0, 800, 600, "Length Example", "fixed", "", &window);
set_color(window, "red");
disp_xld(skeleton, window);
disp_message(window, length, "image", 20, 20, "red", "false");
```
halcon select_shape算子详解
### 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) // 显示结果
```
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)