一、灰度增强
scale_image

适用于:
曝光不足
整体偏暗。
scale_image_max
自动拉伸
优点
自动增强。
缺点
如果存在异常亮点,
容易导致整体增强效果不好。
equ_histo_image
直方图均衡化
目的:
让灰度分布均匀。
优点
对比度明显增强。
缺点
噪声一起增强。

二、平滑去噪
mean_image

优点:
最快。
缺点:
边缘模糊。
工业:
几乎不用。
gauss_image

优点
工业使用最多。
边缘保持
比均值好。
缺点
细节下降。
应用:
Steger
亚像素
OCR
定位
基本都有。
median_image
中值滤波
优点
去椒盐噪声最好。
缺点
速度慢。
三、锐化增强
emphasize

优点
边缘增强明显。
缺点
噪声也增强。
应用:
字符
PCB
激光条纹。
laplace
二阶导。
数学: 
优点
边缘突出。
缺点
特别怕噪声。
sobel_amp

优点
速度快。
缺点
容易断裂。
四、区域算子
cpp
Threshold(阈值分割)
├── ① 全局阈值
│ threshold
│
├── ② 自动阈值
│ binary_threshold
│ auto_threshold
│
├── ③ 动态阈值(局部阈值)
│ dyn_threshold
│ var_threshold
│
├── ④ 多阈值分割
│ threshold_sub_pix
│ hysteresis_threshold
│
├── ⑤ 区域阈值
│ local_threshold
│
├── ⑥ 灰度区间
│ in_range
│
└── ⑦ 彩色阈值
threshold(RGB)
trans_from_rgb + threshold
全局阈值
threshold
优点:
最快计算最少实时性最好。
缺点
不能处理:光照变化。
自动阈值
binary_threshold
自动寻找最佳阈值。
优点:不用人工调。
缺点:双峰图像效果最好
auto_threshold
自动计算:多个阈值。
动态阈值(局部阈值)
dyn_threshold
思想:比较局部均值。
适合:
光照变化。光照不均下的自适应分割
优点
工业使用率极高
缺点:参数Offset不好调。
var_threshold
局部方差。
适合:
纹理。
多阈值分割
threshold_sub_pix
是亚像素不是:Region。而是:轮廓。
定位:
更准确。
hysteresis_threshold
双阈值。 Canny:
区域阈值
local_threshold
五、形态学
gray_opening
去亮噪声。
gray_closing
补孔。
gray_dilation
目标变粗。
gray_erosion
目标变细。
| 类别 | HALCON常用算子 | 数学基础 | 优点 | 缺点 | 工业使用频率 |
|---|---|---|---|---|---|
| 灰度增强 | scale_image、scale_image_max、equ_histo_image |
灰度线性变换、直方图均衡 | 实现简单、速度快 | 光照不均时效果有限,均衡化可能放大噪声 | ★★★★☆ |
| 去噪 | gauss_image、median_image、mean_image |
卷积、高斯分布、中值统计 | 去除随机噪声,提高稳定性 | 会损失部分细节 | ★★★★★ |
| 锐化 | emphasize、laplace |
高通滤波、二阶导数 | 突出边缘和纹理 | 对噪声敏感 | ★★★★☆ |
| 边缘增强 | edges_sub_pix、lines_gauss、sobel_amp |
梯度、一阶/二阶导 | 亚像素精度高,适合测量 | 参数较多,需要根据场景调整 | ★★★★★ |
| 局部增强 | dyn_threshold、var_threshold |
局部统计、自适应阈值 | 光照不均时效果好 | 参数依赖场景 | ★★★★★ |
| 形态学 | gray_opening、gray_closing、gray_dilation、gray_erosion |
数学形态学 | 去噪、修补目标形状 | 结构元素选择影响结果 | ★★★★☆ |
| 频域增强 | fft_generic、convol_fft |
傅里叶变换 | 去除周期噪声、纹理增强 | 计算量较大,实现复杂 | ★★☆☆☆ |
| 彩色增强 | trans_from_rgb、decompose3 |
颜色空间变换 | 可针对亮度或颜色单独增强 | 多用于彩色检测,单色工业相机较少用 | ★★★☆☆ |
六、工业项目常见组合
1. OCR
Image
│
gauss_image
│
scale_image_max
│
dyn_threshold
│
opening_circle
│
OCR
2. 激光条纹
Image
│
gauss_image
│
emphasize
│
lines_gauss
│
Steger
3. PCB
Image
│
median_image
│
emphasize
│
edges_sub_pix
4. 双目视觉
Image
│
gauss_image
│
equ_histo_image
│
binocular_disparity
七、halcon 和opencv 如何进行手眼标定的
halcon
cpp
① 相机标定(Camera Calibration)
│
▼
② 采集多组机器人姿态
│
▼
③ 每个姿态拍摄标定板
│
▼
④ 求每张图标定板Pose
│
▼
⑤ 构造 A、B
│
▼
⑥ 求解 AX=XB
│
▼
⑦ 验证误差
│
▼
⑧ 保存标定结果
| 步骤 | HALCON | OpenCV | 数学本质 |
|---|---|---|---|
| 相机标定 | camera_calibration / calibrate_cameras |
calibrateCamera() |
求内参 (K) 与畸变 |
| 标定板检测 | find_calib_object、find_marks_and_pose |
findChessboardCorners() |
提取角点 |
| 位姿估计 | find_marks_and_pose(内部包含位姿估计) |
solvePnP() |
求 (R,t) |
| 机器人位姿 | Robot Controller | Robot SDK | Base→Tool |
| 手眼标定 | hand_eye_calibration |
calibrateHandEye() |
求解 (AX=XB) |
| 验证 | 重投影/位姿误差 | 自己计算或项目实现 | 精度验证 |
OpenCV
cpp
calibrateCamera
│
▼
Camera Matrix
│
▼
solvePnP
│
▼
Target→Camera
│
▼
Robot Pose
│
▼
calibrateHandEye
│
▼
Camera→Gripper
总结
1、首先完成相机标定,得到相机内参和畸变参数。
2、机器人移动到多个不同姿态,每个姿态记录机器人末端(Base→Tool)位姿,同时拍摄标定板。
3、通过 HALCON 的 find_marks_and_pose(或 OpenCV 的 solvePnP)计算每张图中标定板相对于相机的位姿(Camera→Board)。
4、利用相邻姿态构造机器人运动 A 和相机运动 B,建立经典手眼标定模型 AX=XB。
5、HALCON 使用 hand_eye_calibration,OpenCV 使用 calibrateHandEye 求解固定变换 X,即相机与机器人末端之间的外参。
6、最后通过验证实验检查重投影误差、位姿误差和实际抓取误差,确认标定结果满足精度要求。
八、相机标定和图像矫正
opencv 是如何做的,用了哪些算子,步骤是什么样的
相机标定
Halcon 像机标定原理推导_halcon相机标定-CSDN博客
图像矫正
模版匹配NCC
什么时候用;
当目标灰度纹理稳定、形状基本不变、只有位置发生变化时,优先考虑 NCC。
NCC 的数学原理

什么情况下使用 NCC?
二维码、
字符、
PCB、
Logo。
什么时候不要用 NCC?
旋转。
尺度变化。
形状变化。
遮挡。
复杂背景。
NCC(Normalized Cross Correlation)是一种基于灰度相关性 的模板匹配算法,它通过计算模板与搜索区域的归一化互相关系数来评价相似度。由于进行了均值和方差归一化,因此对整体亮度变化 有一定鲁棒性。它适用于目标纹理丰富、灰度分布稳定、尺寸和形状基本不变、旋转角度较小或固定 的场景,例如 OCR 字符定位、PCB 元件检测、Logo 定位等。对于大角度旋转、尺度变化、遮挡、形变或复杂背景,NCC 的鲁棒性较差,此时通常更推荐使用 HALCON 的 Shape-Based Matching,因为它基于边缘轮廓,对旋转、部分遮挡和光照变化更加稳定。
模版匹配-Shape-Based
√ 有旋转
√ 有遮挡
√ 光照变化
√ 边缘明显