基于OpenCV的条形码区域检测(三)

该博客介绍了在条形码区域检测中,放弃形态学方法,转而利用条形码的梯度方向信息。通过将图像分割成小块并分析每个块的方向,找到充满条形码信息的块,再合并这些块来确定条形码区域。文章展示了将图像以200x200像素分割的效果,并提及实际应用中不必设置如此大的块。区域分块代码段解释了如何根据指定尺寸分割图像。
摘要由CSDN通过智能技术生成

基于OpenCV的条形码区域检测(三)

 根据 基于OpenCV的条形码区域检测(二) 中的测试结果可以得知,基于形态学的条形码区域检测是十分不可靠的。所以就考虑到了不使用形态学的方法,改为利用条形码的方向信息

源图像
梯度强度图像

  上图是一张Code128码的图像(白底黑码),根据它的梯度图可以看到它在条码条带边缘的强度特别高(根据Sobel算子得到的X方向的梯度gx,Y方向的梯度gy,那么该像素点上的强度就是 sqrt(gx^2 + gy^2) ,再通过对其进行归一化于[0,255]的灰度值的区间内的表现就为强度越高就越亮,在图像上的表现就为白色)。

  根据这个想法,如果我们将一张图片分成特别多的小区块,然后再观察每个区块内的方向信息,如果区块尺寸合适,那么将会出现条码区域完全充满一个区块内,如果我们能够得知那些小的区块是条码区域的话,只要将这些小区块合并起来,那么得到的区域就是条码区域了!

类似区块分割效果图

  上图就是将一张500W像素的图像以200×200的区块大小分割的效果,已经可以看到想要的效果了,这里为了展示故而将区块尺寸设置的偏大,在实际运用中并不需要设置的这么大。

进行处理之后的梯度强度图

  上图可以看到条码区域的效果非常的好,当然上图并不是简单地将将分块后的图进行Sobel强度计算然后再Threshold那么直接,具体的操作在后面会详细地解释。


区域分块代码:

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值