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

相关推荐
文心快码BaiduComate10 小时前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
风象南10 小时前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
曲幽11 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
Mintopia11 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮12 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬12 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia12 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区12 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两15 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
敏编程15 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python