图像与几何算子
本文按“你要解决什么问题”来组织内置图像算子,给出选型建议与常见坑。全部算子接受 IMAGE / vIMAGE 输入,输出写到变量池;多数可配合 Region 做局部处理。
算子名以程序编辑器“工具选择器”中实际显示为准;同组算子常共享同一套流程,下述为典型用途与参数要点。
1. 预处理:降噪与平滑
| 算子 | 用途 | 要点 |
|---|---|---|
| Blur | 简单均值模糊 | 快,去孤立噪点 |
| Gaussian | 高斯模糊 | 最常用,去高斯噪声,边缘保留好于均值 |
| Median | 中值滤波 | 去椒盐噪声的默认选择 |
| Bilateral | 双边滤波 | 去噪同时保留边缘(代价是慢) |
| Filter2D | 自定义卷积核 | 需要自己设计核时用 |
坑:滤波核尺寸都是奇数;越大越糊,先小后大试。去完噪再进阈值 / 边缘,结果会稳很多。
2. 二值化:Threshold 家族
| 算子 | 用途 |
|---|---|
| Threshold | 固定阈值(THRESH_BINARY 等模式),照明稳定时的首选 |
| Adaptive Threshold | 自适应阈值,照明不均 / 背景渐变时的首选 |
输出:二值图(8U,0/255)。很多流程是 灰度 → 阈值 → 形态学 → 连通域/区域分析 的经典链,阈值是第一步质量闸门。
3. 边缘检测
| 算子 | 用途 | 典型参数 |
|---|---|---|
| Canny | 多级边缘检测,输出细边缘 | 双阈值(低/高)、孔径 |
| Sobel | 一阶导数,输出梯度幅值/方向 | ksize=1/3/5 |
| Laplacian | 二阶导数,找过零点 | 对噪声敏感,常先 Gaussian |
选型:要完整轮廓线用 Canny;要做梯度方向分析(如求直线角度)用 Sobel。
4. 形态学
| 算子 | 用途 |
|---|---|
| Dilate / Erode | 膨胀 / 腐蚀:扩张或收缩前景 |
| MorphologyEx | 开运算(去小杂点)/ 闭运算(填小孔)等组合 |
典型用法:二值化后先 开运算去孤立噪点,再 闭运算连通断开的缺陷,最后交给连通域统计。核形状与尺寸直接决定效果。
5. 图像算术与逻辑
| 算子 | 用途 |
|---|---|
| Add / Subtract / Multiply / Divide | 像素级四则(可带标量) |
| Add Weighted | 加权融合(两张图按权重相加,常用于叠加差异高亮) |
| Bitwise And / Bitwise Or | 位运算,与掩码配合裁剪 ROI 的常用手段 |
典型用法:差分检测(同一产品 OK 图与当前图相减,差异即疑似缺陷)、Bitwise And 把图像裁剪到 Region 内。
6. 几何变换
| 算子 | 用途 |
|---|---|
| Flip | 镜像翻转 |
| Rotate | 旋转 |
| Resize | 缩放(线性 / 最近邻等插值) |
| Warp Affine | 仿射变换(3 点)——倾斜矫正、二维码平台透视近似 |
| Warp Perspective | 透视变换(4 点)——真正的透视矫正 |
选型:只有平移+旋转+缩放用 Affine;物体有透视形变(拍斜了)用 Perspective。变换后记得同步更新后续算子的坐标(检测框坐标会跟着变)。
7. 通道与色彩
| 算子 | 用途 |
|---|---|
| Split / Merge | 通道拆分 / 合并(BGR→单通道→处理→合回) |
| Convert | 位深 / 通道数转换(8U ↔ 16U ↔ 32F、灰度 ↔ 彩色) |
坑:深度学习与 OCR 一般要求 8U 3 通道输入;模板匹配对不同位深支持不同,先统一 Convert 再进下一级能省很多排查时间。
8. 直方图
| 算子 | 用途 |
|---|---|
| Calc Hist | 计算灰度/彩色直方图(配合用户视图观察分布) |
| Equalize Hist | 直方图均衡化:低对比度图像增强 |
9. 匹配与定位
| 算子 | 用途 | 输出 |
|---|---|---|
| Match Template | 模板匹配:在一张大图里找已知小图的位置 | 匹配结果位置与分数 |
模板匹配适合刚性目标(形状固定、旋转小)。旋转 / 缩放大时考虑标定 + 几何工具,或换深度学习定位。
10. 区域(Region)分析
| 算子 | 用途 |
|---|---|
| Connected Components | 连通域分析:把二值图拆成独立区域并编号 |
| Bounding Rect | 求区域的外接矩形 |
| 区域生成 / 组合类 | 以几何(矩形 / 圆 / 多边形 / 圆环)生成掩码 |
经典流程示例(缺陷计数):
Convert(灰度) → Threshold(找暗点) → MorphologyEx(开运算去噪)
→ Connected Components(拆分缺陷) → 统计数量/面积 → IF 判断是否超标
坑:Region 与图像必须同尺寸;用 Bitwise And 或 SplitRegions 类工具把处理限制在 ROI 内,能显著提速并减少误检。
11. 图像 IO
Load Image / Save Image:支持常见图片格式;路径可用 $(SolutionDir) 宏(见 总览)避免硬编码绝对路径。
选型速查
| 症状 | 首选算子 |
|---|---|
| 图有椒盐噪声 | Median |
| 照明不均匀 | Adaptive Threshold |
| 找圆 / 找直线 | 几何拟合类(圆/线)配合边缘预处理 |
| 找已知图案的位置 | Match Template |
| 检查区域连通性 / 计数 | Threshold → MorphologyEx → Connected Components |
| 拼图 / 大图切块 | Resize / ROI 切分 → 批量 vIMAGE |