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

    拍摄印制在物品上的二维条码图像时, 除二维条码图案外,通常还会包含其他的背景信息,二维条码只占据整个图像的一部分。提出了一种条码的初步定位算法,能够迅速的定位二维条码的大致范围,并将其切割出来,去掉大部分无用的背景信息,既能够减少干扰,提高识别率,又能够减少后续图像处理的时间,提高译码速度。

   相较于其他的图形,二维条码拥有非常丰富边缘信息,利用这个特性可以实现对二维条码的初步定位。步骤如下:首先,对预处理后的图像进行边缘检测,得到边缘检测图像,并做反向处理。其次,对边缘图像分别进行水平和垂直方向上的投影,将同一位置上的黑色像素点进行累加,得到边缘投影图。由于二维条码的边缘信息比其他图案更加的丰富,所以二维条码所在的区域的投影值会比较大。最后, 对水平和垂直投影后的图像做一次高斯滤波处理,检测投影曲线的下降沿,结合投影值的大小,就可以确定出二维条码所在的区域

    接下来说一下二维码图像预处理还需要的两个步骤:边缘检测和投影定位。

    首先来说一下什么是边缘检测呢?边缘检测是图像处理和计算机视觉中的基本问题,常用来提取目标区域的轮廓,边缘检测的目的是标识数字图像中亮度变化明显的点,尽可能精确地确定图像中边缘的位置。边缘检测算子分为一阶和二阶,常见的一阶算子有Prewitt算子,Sobel算子, Canny算子等,二阶算子有Gauss-Lap lace 算子等。

    边缘检测的算子:    

   (1)Prewitt 边缘检测算子Prewitt算子利用图像边缘像素上下或者左右相邻像素的灰度差值比较大的特性来检测图像边缘。它在图像空间利用两个方向模板与图像进行领域卷积,当计算得到的值大于阈值 T,则认为这个像素点式边缘点,但这种方式容易受噪声点的干扰。水平和垂直 Prewitt 边缘检测算子如下所示:

               

   (2)Sobel边缘检测算子Sobel边缘检测算子包含两组3×3的矩阵,分别用来检测水平和垂直边缘的,为了降低图像边缘的模糊程度,Sobel算子对像素的位置影响做了加权,因此效果良好。一下分别为 Sobel 水平和垂直边缘检测算子。

               


   (3)Gauss-Laplace算子Gauss-Laplace算子结合了高斯平滑滤波器和Laplace锐化器的优点,它先对噪声进行平滑,再进行边缘检测,有效的去除了噪声对边缘检测的影响,因此本文使用 Gauss-Laplace 算子对二值图像进行边缘检测。经过测试,采用了5×5模板的Laplace算子对二维条码图像进行检测,进行反向处理有比较好的效果。


    投影定位技术:

    边缘检测将二维条码图像中黑白跳变的点做好标识,反向处理后,分别按水平和垂直方向投影,将同一坐标位置的黑色点进行累加,水平投影后每行的黑点个数记为x(t),垂直投影后每列的黑点个数记为y(t),投影后结果如图。

          

      先用用高斯滤波函数对信号进行平滑,能后再进行检测定位。结果如下:                                          

          


    假设水平和垂直投影函数经高斯函数平滑后分别用函数q(t)和p(t)表示,则高斯平滑过程可以表述如下:

    为了确保二维条码在划定的区域内,在确定条码位置时,可以留有一定的余量,使划定的区域略大于二维条码宽度。

    下图就是检测之后的图形:

          

 

    至此,我们就已经把所有的预防处理的步骤说完了,接下来就是要进行码字提取了。不过在此之前还是对于预处理做一个总结:普通摄像头拍摄到的二维条码图像存在的噪声,复杂背景信息等各种问题,设计并实现了二维条码预处理模块,包括图像灰度化、中值滤波、自适应二值化、二维条码初步定位等技术。图像灰度化将彩色图像变为灰度图像,节省存储空间和提高了图像处理速度。中值滤波的算法复杂度低,而且具有良好的去噪和边缘保持效果,被用于二维条码的滤波降噪。在对图像进行二值化时,充分考虑了图像中可能存在光照不均的情况,采用了一种改进的自适应二值化方法,有效的解决了图像中存在光照不均的影响。最后,利用二维条码丰富的边缘信息,完成对二维条码的初步定位,去除大部分无关的背景信息,提高解码速度和识别率。这一系列的算法都是图像处理方法,计算量小,容易实现,适用于嵌入式设备



  • 10
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值