Halcon学习笔记-Day5

第五十一节:区域孔洞填充技术深入

fill_up_shape:智能孔洞填充

​fill_up_shape​算子是Halcon中用于填充指定特征孔洞的强大工具,它在fill_up​的基础上增加了特征筛选功能,使得孔洞填充更加精确和可控1

复制代码
fill_up_shape(Region : RegionFillUp : Feature, Min, Max : )

参数详解:

  • Feature: 用于筛选孔洞的特征类型

    • area: 根据面积筛选孔洞
    • circularity: 根据圆度筛选
    • rectangularity: 根据矩形度筛选
  • Min/Max: 特征值的最小/最大阈值

应用场景

  1. 缺陷检测预处理:在缺陷检测中,先填充不需要的小孔洞,突出主要缺陷
  2. 图像分割优化:改善分割结果,使区域更加完整
  3. 形态学重建:为后续的形态学操作做准备

第五十二节:区域特征计算与筛选

select_shape:区域特征精准筛选

​select_shape​算子基于区域的各种几何特征进行筛选,是区域分析中的核心工具3

复制代码
select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )

常用特征参数:

  • area: 区域面积
  • row, column: 区域中心点坐标
  • width, height: 最小外接矩形的宽高
  • circularity: 圆度 (0-1之间,越接近1越圆)
  • rectangularity: 矩形度 (0-1之间,越接近1越像矩形)
  • outer_radius: 最小外接圆半径

实际应用示例

复制代码
* 筛选面积在100-10000之间的圆形区域
select_shape(Regions, CircularRegions, 'area', 'and', 100, 10000)
select_shape(CircularRegions, SelectedRegions, 'circularity', 'and', 0.8, 1.0)

第五十三节:连通域分析与排序

connection:连通域分割

​connection​算子将输入的连通区域分割为多个独立的连通域,为后续的特征分析奠定基础10

复制代码
connection(Region : ConnectedRegions : : )

sort_region:区域智能排序

​sort_region​算子支持多种排序方式,特别适用于OCR和图像分析中的字符排序10

复制代码
sort_region(Regions : SortedRegions : SortMode, Order, RowOrCol : )

排序模式:

  • character: 按字符阅读顺序排序
  • first_point: 以每个区域的左上角为准
  • last_point: 以每个区域的右下角为准
  • upper_left, upper_right, lower_left, lower_right: 按外接矩形的特定角点排序

第五十四节:区域形态学深度应用

膨胀与腐蚀的组合运算

形态学操作是区域处理的核心技术,通过不同组合可以实现复杂的区域变换3

开运算(Opening):先腐蚀后膨胀

复制代码
opening(Region, StructElement : RegionOpening : : )
  • 作用:去除小的突出部分,平滑边界

闭运算(Closing):先膨胀后腐蚀

复制代码
closing(Region, StructElement : RegionClosing : : )
  • 作用:填充小的空洞,连接相近的区域

形态学结构元素选择

不同的结构元素会产生不同的处理效果:

  • 圆形结构元素:产生圆滑的边界
  • 矩形结构元素:保持直角特征
  • 线性结构元素:保持方向性特征

第五十五节:区域几何特征计算

基础几何特征

面积和重心:

复制代码
area_center(Region : : : Area, Row, Column)

主轴方向:

复制代码
orientation_region(Region : : : Phi)

高级几何特征

最小外接矩形:

复制代码
smallest_rectangle1(Region : : : Row1, Column1, Row2, Column2)
smallest_rectangle2(Region : : : Row, Column, Phi, Length1, Length2)

最小外接圆:

复制代码
smallest_circle(Region : : : Row, Column, Radius)

第五十六节:区域形状转换与重构

shape_trans:形状标准化

​shape_trans​算子将不规则区域转换为标准几何形状,便于后续分析和匹配3

复制代码
shape_trans(Region : RegionTrans : Type : )

转换类型:

  • rectangle1: 转换为水平外接矩形
  • rectangle2: 转换为带方向的外接矩形
  • outer_circle: 转换为最小外接圆
  • convex: 转换为凸包

第五十七节:区域边界提取与分析

get_region_contour:边界轮廓提取

边界轮廓提取是连接区域和XLD数据结构的重要桥梁4

复制代码
get_region_contour(Region : : : Row, Col)

区域与XLD的相互转换

区域转XLD:

复制代码
gen_contour_region_xld(Region : Contours : Mode : )

XLD转区域:

复制代码
gen_region_contour_xld(Contours : Region : Mode : )

第五十八节:区域骨架提取与中心线

skeleton:区域骨架化

骨架提取用于获取区域的拓扑结构,特别适用于道路分析、字符识别等应用4

复制代码
skeleton(Region : Skeleton : : )

骨架的特点:

  • 保持区域的拓扑结构
  • 宽度为1像素
  • 包含区域的主要几何信息

第五十九节:区域距离计算与分析

distance_transform:距离变换

距离变换将区域转换为距离图像,每个像素值表示到区域边界的距离22

复制代码
distance_transform(Region : DistanceImage : Metric, Foreground : )

距离度量方法:

  • city-block: 城市块距离
  • euclidean: 欧几里得距离
  • chessboard: 棋盘距离

区域间距离计算

点到点距离:

复制代码
distance_pp(Row1, Col1, Row2, Col2 : : : Distance)

点到直线距离:

复制代码
distance_pl(Row, Col, Row1, Col1, Row2, Col2 : : : Distance)

第六十节:区域特征直方图分析

特征直方图的构建

特征直方图是分析区域集合分布的重要工具,通过可视化展示特征值的分布规律11

复制代码
feature_histogram(Regions : : : Histograms)

直方图分析应用

  1. 自动阈值确定:通过直方图的双峰特性确定最佳分割阈值
  2. 异常检测:识别偏离正常分布的异常区域
  3. 质量控制:统计分析产品质量分布

第六十一节:区域补集与差集运算

complement:区域补集

​complement​算子计算区域与其定义域的补集2

复制代码
complement(Region : RegionComplement : : )

差集运算

基本差集:

复制代码
difference(Region1, Region2 : RegionDifference : : )

对称差集:

复制代码
symm_difference(Region1, Region2 : RegionSymmDifference : : )

第六十二节:区域合并与分解

union:区域合并

合并多个连通域:

复制代码
union1(Regions : RegionUnion : : )

合并两个区域:

复制代码
union2(Region1, Region2 : RegionUnion : : )

区域分解技术

通过特征筛选和区域分割,可以将复杂的区域分解为多个简单区域进行分析。

第六十三节:区域裁剪与缩放

区域裁剪

复制代码
clip_region(Region : RegionClipped : Row1, Column1, Row2, Column2 : )

区域缩放

复制代码
zoom_region(Region : RegionZoomed : ScaleRow, ScaleCol : )

第六十四节:区域投影与统计分析

区域投影

灰度投影:

复制代码
gray_projections(Image : : : ProjectionRow, ProjectionCol)

统计分析

区域统计特征:

复制代码
region_features(Regions : : : Features)

常用统计特征包括:

  • 面积均值和标准差
  • 中心点坐标分布
  • 形状特征的统计分布

第六十五节:综合应用案例

缺陷检测系统

基于前面的学习,我们构建一个完整的缺陷检测流程:

复制代码
* 1. 图像预处理
read_image(Image, 'defect_image')
emphasize(Image, ImageEnhanced, 10, 10, 1.0)

* 2. 区域分割
threshold(ImageEnhanced, Regions, 128, 255)
connection(Regions, ConnectedRegions)

* 3. 特征筛选
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 50, 5000)
select_shape(SelectedRegions, CircularRegions, 'circularity', 'and', 0.3, 1.0)

* 4. 孔洞处理
fill_up_shape(CircularRegions, FilledRegions, 'area', 10, 1000)

* 5. 结果输出
count_obj(FilledRegions, Number)

应用要点总结

  1. 特征选择的重要性:根据具体应用选择合适的区域特征
  2. 参数调优:通过实验确定最佳的阈值参数
  3. 鲁棒性考虑:在不同光照和噪声条件下测试算法稳定性

学习心得:区域操作是Halcon图像处理的核心内容,熟练掌握各种区域算子的原理和应用,能够构建复杂而高效的机器视觉解决方案。通过大量的实践练习,可以逐步提高区域分析和处理的技能水平。

相关推荐
IT_陈寒1 小时前
React的useState居然还有这种坑?我差点删库跑路
前端·人工智能·后端
用户413062258292 小时前
给AI回答加引用角标citation:RAG前端实现
人工智能
金銀銅鐵2 小时前
[Python] 从《千字文》中随机挑选汉字
后端·python
米小虾2 小时前
WAIC 2026 倒计时30天:300+ AI 产品全球首发,今年看点全解析
人工智能
码上天下3 小时前
多模态Agent上传图片:前端压缩格式与预览实战
人工智能
姗姗来迟了3 小时前
Vue3封装可复用AI对话组件:一次抽象复盘
人工智能
怕浪猫3 小时前
哪些软件对 Chrome DevTools Protocol 频繁使用
人工智能·架构·前端框架
leo在掘金4 小时前
从DeepSeek 510亿融资到GitHub 33K Star开源项目:这周的技术生态发生了什么?
人工智能