文章目录
-
-
- 📊 **一、去噪滤波:消除噪声干扰**
-
- **1. 高斯滤波** `gauss_filter`
- **2. 中值滤波** `median_image`
- **3. 自适应去噪** `remove_image_noise` (HALCON 10.0.2+)
- 🔍 **二、边缘检测:亚像素级轮廓提取**
-
- **1. Canny算法** `edges_sub_pix`
- **2. Deriche算法** `edges_deriche`
- **三、图像分割算子详解**
-
- **1. 阈值分割**
- **2. 区域生长**
- **3. 分水岭分割**
- **4. 动态区域分割**
- 🧩 **四、形态学处理:优化区域结构**
-
- **1. 基础操作**
- **形态学处理算子精解**
-
- **1. 基础操作**
- **2. 高级形态学技术**
- **例程**
- 🌟 **四、图像增强:提升特征可辨识度**
-
- **1. 对比度增强** `emphasize`
- **2. 动态阈值** `dyn_threshold`
- 🎨 **五、彩色图像处理**
-
- **1. HSV空间增强**
- **2. 深度学习融合**
- ⚙️ **六、综合应用:工件尺寸测量全流程**
-
- **目标**:检测铝合金表面划痕与凹坑(光照不均环境下)
- 💎 **七、选型决策树与避坑指南**
-
- **1. 算子选型逻辑**
- **2. 高频避坑策略**
- **3 分割算子常见问题**
- **4. 形态学操作调优表**
-
以下是针对HALCON图像预处理算子的系统性解析,结合原理剖析、参数详解、场景示例及工业级代码注释,帮助开发者深入掌握核心预处理技术。
📊 一、去噪滤波:消除噪声干扰
1. 高斯滤波 gauss_filter
- 原理:
基于二维高斯函数加权平均,距离中心越近的像素权重越高,数学表达:
G(x,y)=12πσ2e−x2+y22σ2G(x,y) = \frac{1}{2\pi\sigma^2} e^{-\frac{x^2+y^2}{2\sigma^2}}G(x,y)=2πσ21e−2σ2x2+y2 - 参数:
Sigma(标准差):控制平滑强度(典型值1.0~3.0),值越大越模糊。
MaskSize(掩膜尺寸):自动根据Sigma计算,通常无需手动设置。 - 场景:
抑制高斯噪声(如传感器热噪声),适合边缘保留要求不极端的场景。 - 示例:
read_image (Image, 'sensor_image.jpg') gauss_filter (Image, Smoothed, 2.5) // Sigma=2.5,中度平滑
2. 中值滤波 median_image
- 原理:
取邻域内像素灰度值的中位数替代中心值,有效消除离群点。 - 参数:
MaskType:结构形状('circle'或'square')
Radius:圆形半径或方形边长(如3~7像素)。 - 场景:
去除椒盐噪声(如工业相机传输干扰),保留边缘锐利度。 - 示例:
median_image (Image, Median, 'circle', 5) // 圆形掩膜,半径5px
3. 自适应去噪 remove_image_noise (HALCON 10.0.2+)
- 原理:
局部像素强度分析(LPI算法),动态调整滤波强度。 - 参数:
Method:算法类型('lpi')
Threshold:噪声检测阈值(值越小越敏感,典型20~30)
FilterSize:局部窗口大小(奇数,如5×5)。 - 场景:
混合噪声(如低光照图像),平衡去噪与细节保留。 - 示例:
remove_image_noise (Image, Cleaned, 'lpi', 25, 'filter_size', 5)
🔍 二、边缘检测:亚像素级轮廓提取
1. Canny算法 edges_sub_pix
- 原理:
- 高斯平滑 → 2. Sobel梯度计算 → 3. 非极大抑制 → 4. 双阈值连接边缘。
- 参数:
Filter:边缘检测类型('canny')
Alpha:平滑系数(小值保留细节,大值抗噪,典型1.0~2.0)
Low/High:双阈值(低阈值:高阈值 ≈ 1:2~1:3,如20/40)。 - 场景:
高精度尺寸测量(如齿轮齿距检测),要求亚像素级精度(误差<0.1px)。 - 示例:
edges_sub_pix (Image, Edges, 'canny', 1.5, 25, 50) // 抗噪与细节平衡 fit_circle_contour_xld (Edges, 'algebraic', -1, 0, 0, _, Row, Col, Radius) // 圆拟合
2. Deriche算法 edges_deriche
- 原理:
递归滤波器近似高斯导数,计算效率比Canny高30%。 - 参数:
Alpha:平滑控制(值越大边缘越连续)
Mode:梯度方向('positive'仅检测正梯度)。 - 场景:
实时检测(如流水线零件定位),资源受限场景。 - 示例:
edges_deriche (Image, Edges, 1.0, 1.0, 'positive', 'all', 0, 255)
三、图像分割算子详解
1. 阈值分割
threshold
原理:根据灰度值范围提取区域,适用于目标与背景对比度明显的场景。
参数:MinGray/MaxGray:灰度阈值范围(经验值:背景与目标灰度差>50)- 调优效果:
- 范围过窄 → 漏检(目标不完整)
- 范围过宽 → 过检(包含噪声)
示例:
read_image(Image, 'pcb.jpg') * 提取亮色焊点(灰度150~255) threshold(Image, SolderRegions, 150, 255)
2. 区域生长
regiongrowing
原理:从种子点出发,合并灰度相似的相邻像素(相似性准则:灰度差≤阈值)。
参数:Tolerance:允许的灰度差异(典型值5~20)MinSize:最小区域面积(过滤噪声)
场景:医学图像肿瘤分割、金属表面纹理分析。
示例:
* 种子点选择亮斑,合并相似区域 regiongrowing(Image, Regions, 10, 5, 100)
3. 分水岭分割
watersheds
原理:将图像视为地形,模拟水流淹没过程生成分水岭线(边界)。
参数:Markers:预标记区域(避免过分割)
调优技巧:- 预处理用高斯滤波降噪 → 减少虚假分水岭
示例:
gauss_filter(Image, Smoothed, 3) watersheds(Smoothed, Basins, Watersheds)
4. 动态区域分割
partition_dynamic
原理:在最小垂直跨度位置切割区域,解决字符粘连问题。
参数:Distance:期望分割宽度(如字符宽度)Percent:搜索范围比例(默认20%)
场景:OCR字符分割、条形码分离。
示例:
* 分割粘连字符(期望宽度25像素) partition_dynamic(TextRegion, SplitRegions, 25, 20)
🧩 四、形态学处理:优化区域结构
1. 基础操作
| 算子 | 原理 | 参数 | 场景 |
|---|---|---|---|
dilation_circle |
圆形结构元素扩展边界 | Radius(3~15) |
连接裂缝(如金属表面缺陷) |
erosion_circle |
收缩边界去除孤立点 | Radius(2~10) |
分离粘连目标(如颗粒计数) |
opening_circle |
先腐蚀后膨胀 | Radius(2~8) |
去小噪点(<5px) |
closing_circle |
先膨胀后腐蚀 | Radius(3~12) |
填孔洞(如铸件气孔) |
以下基于HALCON图像分割与形态学处理技术,结合工业视觉实践,系统梳理核心算子原理、参数调优策略及复杂场景解决方案,并提供可复用的代码示例。
形态学处理算子精解
1. 基础操作
| 算子 | 数学原理 | 作用 | 参数调优 |
|---|---|---|---|
dilation_circle |
A⊕BA \oplus BA⊕B | 扩大区域,连接裂缝 | Radius↑ → 膨胀更强 |
erosion_circle |
A⊖BA \ominus BA⊖ |

最低0.47元/天 解锁文章
941

被折叠的 条评论
为什么被折叠?



