您的位置:首页 > 其它

数字图象处理之二维码图像提取算法(六)

2014-12-11 21:56 337 查看
整体的框图如下所示:



Hough 变换是图像空间和参数空间之间的一种变换, 利用点与线的对偶性,将原始图像空间的给定曲线变为参数空间的一个点,这样直线的检测就变为参数空间中峰值的检测。

接下来来了解一下霍夫变换:





可以证明,直角坐标系p-0中的一条直线和极坐标上的点是一一对应的,而且直角坐标系中同一条直线上的点对于极坐标p-0上的曲线必定会有一个公共交点。那么就可以将直角坐标系中直线的检测问题转变为平面上峰值的检测。



如果直接对 PDF417 条码做 Hough 变换,条码中的前景像素点过多,计算量非常大,而且条码中的黑块也会影响直线求取的精度。
PDF417 条码是一种堆叠式条码,层内每行的像素点分布一样,层与层之间的像素点分布不同。因此,可对 PDF417条码做一次行差运算,
将像素灰度值差值不为 0 的像素点都变为黑色,否则都为白色,则条码层分界处的黑色点比层内多出许多,同时也减少了前景像素点的个数,降低了 Hough 变换的运算量。





由上图可以看出,行差运算后PDF417条码图像中需要计算的前景像素点大量的减少了,而且在行边界处存在一条明显的断断续续的直线。
因此,可以用Hough变换来得到直线的倾斜角度。但是,Hough 变换的运算量不仅和需要计算的前景像素点个数有关,而且和参数坐标的量化精度成正比,量化越细,计算量越大,反之,则越小,采用较大的量化间隔可以减小
Hough 变换的运算量, 但量化增大,又不能得到图像倾斜角度的精确值。为了解决这个矛盾,本文采用两级Hough变换,第一次Hough变换采用较大的量化间隔求得图像的大致倾斜角度,限定角度范围,第二次细化量化空间,求取条码图像精确的倾斜角度。

求得角度之后就要进行条形码旋转到水平状态。


二维图像旋转是指物体沿着某个定点转动某个角度的重定位过程,在对图像旋转之间,我们需要先设定一个旋转基准点以及旋转角度。本文的旋转基准点设定为采集到图像的中心位置,假设图像的宽度和高度分别为

W和

H,则基准点位置坐标为(W/2,H/2)
,旋转角度由前面的Hough 变换求得。在旋转过程中,规定逆时针方向为正,顺时针方向为负。 设定基准点为原点, 像素点P(X0,Y0)逆时针旋转角度
theata 后坐标变为(x1,y1),其中 alafa 为像素点P与x轴的初始夹角,p为 P 到原点的距离,
theate为旋转的角度。



旋转前后坐标点之间的关系可以用数学公式表示如下:











需要采用一种方法用整数点位置的灰度值代替非整数位置点的灰度值,这种方法叫做灰度内插。这种代替将不可避免的会造成图像的失真,为了减小灰度内插带来的误差,前人提出了多种插值算法,包括最近邻插值、双线性插值和双三次插值算法等。
最邻近插值算法简单,每一个插值输出像素的值就是在输入图像中与其最邻近的抽样点的值,但是这种算法会造成比较严重的块状效应,即在边缘处出现锯齿。双三次插值是利用像素点P(x,y)周围
4× 4 个像素点的灰度值按照三次多项式进行内插,算法精确度很高, 效果好, 处理后的图像非常平滑,但运算量大,不大适合实时处理,实际中较少采用。双线性插值综合了上述两种方法的优劣,只利用P(x,y)周围4个点的灰度值进行内插,既保证了图像的质量,又兼顾了计算量,可以运用到实时图像处理中。所以,本x项目在图像旋转过程中采用的是双线性插值算法对图像进行内插。假设
P(x1,y1) 为旋转后的坐标点,其他四个点为围绕着点 的四个整数像素点,如下图:







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: