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图像处理的核心内容,熟练掌握各种区域算子的原理和应用,能够构建复杂而高效的机器视觉解决方案。通过大量的实践练习,可以逐步提高区域分析和处理的技能水平。

相关推荐
蓝程序1 天前
Spring AI学习 程序接入大模型
java·人工智能·spring
西柚小萌新1 天前
【论文阅读】--PEACE:基于多模态大语言模型的地质图全息理解赋能框架
人工智能·语言模型·自然语言处理
2501_941800881 天前
从微服务限流到系统稳定性的互联网工程语法实践与多语言探索
开发语言·python
GalenZhang8881 天前
使用 Python SDK 将数据写入飞书多维表格
数据库·python·飞书·多维表格
Ai野生菌1 天前
论文解读 | 当“提示词”学会绕路:用拓扑学方法一次击穿多智能体安全防线
人工智能·深度学习·安全·语言模型·拓扑学
狮子座明仔1 天前
MegaBeam-Mistral-7B:扩展上下文而非参数的高效长文本处理
人工智能·深度学习·自然语言处理·知识图谱
日更嵌入式的打工仔1 天前
Ehercat代码解析中文摘录<7>
笔记·ethercat
清水白石0081 天前
《深度剖析 Pandas GroupBy:底层实现机制与性能瓶颈全景解析》
开发语言·python·numpy
reasonsummer1 天前
【办公类-125-01】20260106期末资料多个docx合并成一个PDF打印(单数页+1空白页,双数页不变)
python·pdf