解锁Halcon灰度投影的高级技巧:'rectangle'模式在旋转目标检测中的实战应用
在工业视觉检测中,我们常常需要分析非标准摆放的物体——倾斜的包装袋、旋转的液晶屏、歪斜的印刷字符。传统的'simple'投影模式在这些场景下往往力不从心,而Halcon的gray_projections算子中隐藏着一个被多数开发者忽视的利器:'rectangle'模式。本文将带您深入探索这一模式的几何原理与实战价值,彻底改变您对灰度投影的认知。
1. 灰度投影的两种模式:几何视角下的本质差异
当我们谈论灰度投影时,多数开发者脑海中浮现的是沿图像坐标系x/y轴方向的简单累加。这种'simple'模式确实能满足基础需求,但当遇到旋转区域时,其局限性立刻显现。让我们从几何角度重新理解这两种模式的本质区别。
'simple'模式的数学表达:
- 水平投影:$P_y = \frac{1}{w}\sum_{x=x_{min}}^{x_{max}} I(x,y)$
- 垂直投影:$P_x = \frac{1}{h}\sum_{y=y_{min}}^{y_{max}} I(x,y)$
这种计算完全基于图像坐标系,与区域的实际方向无关。而'rectangle'模式则采用了完全不同的策略:
- 首先计算区域的最小外接旋转矩形(使用
smallest_rectangle2相同的算法) - 确定该矩形的主轴方向(长边方向)
- 沿主轴方向及其垂直方向进行投影计算
python复制# Halcon代码示例:两种模式的直观对比
read_image (Image, 'pcb_rotated.png')
gen_rectangle2 (ROI, 256, 256, rad(30), 100, 50)
gray_projections (ROI, Image, 'simple', HorSimple, VertSimple)
gray_projections (ROI, Image, 'rectangle', HorRect, VertRect)
下表展示了两种模式的核心差异:
| 特征 | 'simple'模式 | 'rectangle'模式 |
|------
