一种点阵式DM二维码图像处理方法及装置
技术领域
本发明属于二维码计算机图像处理技术领域,特别涉及一种点阵式DM二维码图像处理方法和装置。
背景技术
点阵式DM(DataMatrix)目前主要应用于汽车制造、制药医疗、军队枪械管理等领域,由于其易于生成,因此在金属、玻璃、硬塑等材料中到了广泛的应用。同时由于点阵式DM二维码生成方法和使用材料的多样性导致其条形码图像普遍存在对比度低、多噪声干扰、背景复杂、采集过程中出现的光照不均匀等情况。与标准的DM符号不同,点阵式DM二维码的点间空隙大,如图1所示。如对这种码毫无处理地进行识别,则又会加大识别的难度,因此对于点阵式二维码图像进行图像预处理是很有必要的。
随着嵌入式平台的发展与推广,已经出现了便携式二维码识别阅读器,使对二维码的识读更加快捷方便,目前关于DM码图像预处理的研究层出不穷,但是对于点阵式DM码图像预处理的研究相对较少。因此本发明提出了点阵式DM图像预处理方法以及相应的装置。
发明内容
本发明针对点阵式DataMatrix二维码存在的识别率低的问题,提出了一系列结合二值化的形态学变换的图像预处理方法,并通过斑点检测使平滑模糊与形态学变换具有自适应性。该方法能够克服点阵式DataMatrix码在识别中间隙过大、光照不均匀和噪声干扰等问题,并将点阵式DM二维码转化为标准的格式,从而可通过目前的DM码手持识别设备进行检测,硬件上无需二次开发,***设计可行快速有效,能满足目前对点阵式DM解码的实际需求。
本发明提供了一种点阵式DM二维码图像处理方法,包括:
步骤一:读取点阵式DM二维码图像,在不改变原点阵式DM二维码图像宽高比例的基础上,利用最近邻插值算法或双线性插值算法进行宽度统一化处理;
步骤二:将统一尺寸后的图像转换为灰度图;
步骤三:对灰度化后的图像进行高斯平滑滤波处理,去除图像背景的细小纹理,使点阵码元的实心点更加平滑;
步骤四:将高斯平滑滤波后的灰度级图像转化为黑白二值化图像;
步骤五:对步骤四中二值化后的图像进行码元检测,得到点阵式码元的直径;
步骤六:根据步骤五获得的点阵码元的直径大小而动态的改变平均模板的大小,进而对步骤二中的灰度图进行动态均值滤波处理,对动态均值滤波后的灰度图再进行kittler算法与Bernsen算法相结合的改进的二值化处理;
步骤七:将步骤六获得的二值化图像进行形态学的开运算和闭运算操作,得到处理后的点阵图像,其中,
开运算用下式表示:
闭运算用下式表示:
其中A为输入的二值图像,B为正方形结构元素。
步骤八:将步骤七获得的点阵图像通过中值滤波去噪处理,转变为可识别的块状结构的标准DM二维码图像。
进一步的,所述步骤七开运算中的正方形结构元素B的边长优选为点阵码元直径的1/3,闭运算中正方形结构元素B的边长优选为小于点阵码元直径1至5个显示像素点。
进一步的,步骤八使用的中值滤波去噪处理优选为通过以下步骤实现:
把图像中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点,其中二维中值滤波输出通过下式获得:
g(x,y)=med{f(x-k,y-1),(k,1∈W)}
其中,med{}表示取数组序列的中间值;f(x,y),g(x,y)分别为原始图像和处理后图像;W为3×3大小的二维模板;k,l均为整数,分别表示坐标x、y方向上的增量。
进一步的,步骤六的动态均值滤波处理优选的进一步包括如下步骤:
(1)模板大小通过下式获得:
其中round表示取整操作;
(2)计算平均滤波模板:
其中,k为平均模板的大小,D为点阵码元的直径,ε是平均模板;
(3)按照下式进行平均滤波:
I1(x,y)=ε*I(x,y)
其中I(x,y)表示灰度图矩阵,I1(x,y)表示滤波后图像灰度矩阵;
进一步的,步骤四中将高斯平滑滤波后的灰度级图像转化为黑白二值化图像的过程具体包括:
(1)用Kittler算法得到全局阈值T,计算该全局阈值T的方法如下:
其中,f(x,y)是步骤二获得的原始的灰度图,e(x,y)=max{|ex|,|ey|}即梯度最大值,ex=f(x-1,y)-f(x+1,y)是水平方向上的梯度,ey=f(x,y-1)-f(x,y+1)是垂直方向上的梯度;
(2)扫描整个f(x,y)灰度图像,则二值化结果为:
其中b(x,y)为二值化结果。
进一步的,步骤六使用的kittler算法与Bernsen算法相结合的改进的二值化处理包括如下具体步骤:
步骤(1)用Kittler算法得到全局阈值T,计算该全局阈值T的方法如下:
其中,f(x,y)是步骤二获得的原始的灰度图,e(x,y)=max{|ex|,|ey|}即梯度最大值,ex=f(x-1,y)-f(x+1,y)是水平方向上的梯度,ey=f(x,y-1)-f(x,y+1)是垂直方向上的梯度;
步骤(2)采用Bernsen算法对图像直方图中光照不均的区间进行处理,该区间的灰度值集中在步骤(1)得到的全局阈值T附近,如果T3>D,D是Bernsen算法处理的区间宽度即点阵码元的直径
则二值化结果
如果T3<D,D是Bernsen算法处理的区间宽度即点阵码元的直径
则二值化结果
其中,
T3是阈值选择依据且T3(x,y)=maxs-mins,
T2(x,y)=0.5(maxd+mind),
T4(x,y)=0.5(T+T2(x,y));
其中,
maxd表示像素点(x,y)在大小为4w*4w的窗口中最大像素值;
表示像素点(x,y)在大小为4w*4w的较大窗口中最小像素值;
表示像素点(x,y)在大小为2w*2w的较小窗口中最大像素值;
表示像素点(x,y)在大小为2w*2w的较小窗口中最小像素值;
上述式中的max表示取窗口内像素的最大值,min表示取窗口内像素的最小值,k和l均为整数,分别表示坐标x、y方向上的增量;w表示局部阈值运算的窗口,w取值范围为5~9,T2表示窗口内像素灰度平均值,T4是T2与全局阈值T的平均值。
进一步的,步骤五中的码元检测具体流程如下:
利用高斯拉普拉斯算子检测图像码元,对于二维高斯函数:
其中,σ为函数的宽度参数即特征尺度,用于控制函数的径向作用范围,σ越大表示函数的径向越宽,其相似的码元越大,σ越小表示函数的径向越窄,其相似的码元越小,x,y表示二维空间位置,g(x,y,σ)表示二维高斯函数;
式(1)的拉普拉斯变换为:
其中,Δ2g表示二维高斯函数的拉普拉斯函数,Δ2表示二阶微分算子,g表示二维高斯函数;规范化的高斯拉普拉斯变换为:
式(3)中表示规范化的高斯拉普拉斯函数,其方差为0;
式(3)所示的规范化的二维高斯拉普拉斯函数是圆对称函数,通过改变σ的值,检测不同尺寸的二维码码元,而求取得极点值等价于求取下式:
其中,表示对规范化的高斯拉普拉斯函数求σ的偏导,表示求规范化的高斯拉普拉斯函数的极点值;
亦即:
r2-2σ2=0
其中r表示二维码图像二值化的圆形码元的半径,在尺度时,高斯拉普拉斯响应值达到最大,同理,如果图像中的圆形码元黑白反相,那么,该码元的高斯拉普拉斯响应值在尺度为时达到最小,高斯拉普拉斯响应达到峰值时的尺度σ值是码元检测的特征尺度,计算二值化后的图像在不同尺度下的离散拉普拉斯响应值,然后检查位置空间中的每个点,若该点的拉普拉斯响应值都大于或小于其它立方空间邻域的值,那么,该点就是被检测到的二维码数据元素点,上述寻找位置空间和尺度空间的峰值可通过如下函数表示:
该函数表示同时在空间位置和尺度上拉普拉斯响应达到最大值或最小值的点的取值,该点就是所要检测的码元;其中,t表示尺度值,(x,y)表示空间位置,max minlocal(x,y,t)(·)表示响应函数在空间和尺度位置上的最大值或最小值,arg(·)表示对应函数值的变量的取值,表示在尺度空间下标准二维拉普拉斯函数。
本发明还提供了一种点阵式DM二维码图像处理装置,包括:
图像读取模块,用于读取点阵式DM二维码图像,在不改变原点阵式DM二维码图像宽高比例的基础上,利用最近邻插值算法或双线性插值算法进行宽度统一化处理;
灰度转换模块,用于将统一尺寸后的图像转换为灰度图;
高斯平滑滤波模块,用于对灰度化后的图像进行高斯平滑滤波处理,去除图像背景的细小纹理,使点阵码元的实心点更加平滑;
二值化转换模块,用于将高斯平滑滤波后的灰度级图像转化为黑白二值化图像;
码元检测模块,用于对二值化转换模块中二值化后的图像进行码元检测,得到点阵式码元的直径;
动态均值滤波及二值化转换模块,用于根据码元检测模块获得的点阵码元的直径大小而动态的改变平均模板的大小,进而对灰度转换模块获得的灰度图进行动态均值滤波处理,对动态均值滤波后的灰度图再进行kittler算法与Bernsen算法相结合的改进的二值化处理;
运算操作模块,用于将动态均值滤波及二值化转换模块获得的二值化图像进行形态学的开运算和闭运算操作,得到处理后的点阵图像,其中,
开运算用下式表示:
闭运算用下式表示:
其中A为输入的二值图像;B为正方形结构元素;
标准化模块,用于将运算操作模块获得的点阵图像通过中值滤波去噪处理,转变为可识别的块状结构的标准DM二维码图像。
进一步的,所述运算操作模块的开运算中的正方形结构元素B的边长优选为点阵码元直径的1/3,闭运算中正方形结构元素B的边长优选为小于点阵码元直径1至5个显示像素点。
进一步的,标准化模块使用的中值滤波去噪处理优选为通过以下方式实现:
把图像中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点,其中二维中值滤波输出通过下式获得:
g(x,y)=med{f(x-k,y-1),(k,1∈W)}
其中,med{}表示取数组序列的中间值;f(x,y),g(x,y)分别为原始图像和处理后图像;W为3×3大小的二维模板;k,l均为整数,分别表示坐标x、y方向上的增量。
附图说明
图1是点阵DM码与标准DM码的对比图;
图2是点阵DM码图像处理流程图;
图3是二值化的点阵DM码图像与二值化后的斑点(码元)检测示意图;
图4是开运算和闭运算的效果图;
图5是点阵DM码图像转换为标准DM二维码图像的效果示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细的说明,并不是把本发明的实施范围局限于此。
如图1所示,点阵DM码(右)与标准DM码(左)有着显著的区别。
由于点阵式DM码是由均匀的圆点按照一定的规则组成的,如果按照常规的方法直接对图片进行模糊平滑以及形态学变化,效果很不理想,容易造成过处理以及处理效果不明显。
[实施例一]
本实施例提供了一种点阵式DM二维码图像处理流程和方法,该方法可以通过计算机程序实现或是通过硬件电路实现,具体流程参照图2所示。
(一)读取图像并统一尺寸
为了方便处理,首先在读取图像后对点阵式二维图像的大小进行统一化,在不改变原图宽高比例的基础上利用最近邻插值算法或双线性插值算法进行宽度统一化,经过试验表明统一化能够使辨识更加精准。
(二)转换为灰度图
位于便于对图像进行处理,需要将原始采集的图像转换为灰度图像。
(三)高斯平滑滤波处理
由于条码背景的粗糙度影响辨识精确性,而点阵DM码的点阵模块均为实心斑点,平滑对实心点影响不大,所以,为了去除图片的复杂纹理,需要进行模糊平滑化处理。点阵式DM条码对平滑处理的要求不需要太高,通过多种平滑滤波变换的实验比较,发现动态均值滤波与高斯滤波均满足要求。因此本步骤中使用高斯平滑得到自然的平滑效果,不至于太模糊,以使斑点检测的测量更精准稳定。
(四)二值化处理
图像的二值化处理就是通过选取适当的阈值,将灰度级图像转化为可以反映图像整体结构和局部特征的黑白二值化图像。在点阵式Data Matrix条码图像处理过程中,通过对二值化后的图像进行相应运算,可以比较容易获取目标区域的边界、位置、大小等特征信息,从而为条码图像的分析和识别奠定基础。
首先,用Kittler算法得到全局阈值T,计算该全局阈值T的方法如下:
其中,f(x,y)是步骤二获得的原始的灰度图,e(x,y)=max{|ex|,|ey|}即梯度最大值,ex=f(x-1,y)-f(x+1,y)是水平方向上的梯度,ey=f(x,y-1)-f(x,y+1)是垂直方向上的梯度;
然后,扫描整个f(x,y)灰度图像,则二值化结果为:
其中b(x,y)为二值化结果。
(五)斑点检测
斑点检测(即点阵码元检测)的原理如下:
利用高斯拉普拉斯(Laplace of Guassian,LoG)算子检测图像码元,对于二维高斯函数:
其中,σ为函数的宽度参数即特征尺度,用于控制函数的径向作用范围,σ越大表示函数的径向越宽,其相似的码元越大,σ越小表示函数的径向越窄,其相似的码元越小,x,y表示二维空间位置,g(x,y,σ)表示二维高斯函数;
式(1)的拉普拉斯变换为:
其中,Δ2g表示二维高斯函数的拉普拉斯函数,Δ2表示二阶微分算子,g表示二维高斯函数;
规范化的高斯拉普拉斯变换为:
式(3)中表示规范化的高斯拉普拉斯函数,其方差为0;
式(3)所示的规范化的二维高斯拉普拉斯函数是圆对称函数,通过改变σ的值,检测不同尺寸的二维码码元,而求取得极点值等价于求取下式:
其中,表示对规范化的高斯拉普拉斯函数求σ的偏导,表示求规范化的高斯拉普拉斯函数的极点值;
亦即:
r2-2σ2=0
其中r表示二维码图像二值化的圆形码元的半径,在尺度时,高斯拉普拉斯响应值达到最大,同理,如果图像中的圆形码元黑白反相,那么,该码元的高斯拉普拉斯响应值在尺度为时达到最小,高斯拉普拉斯响应达到峰值时的尺度σ值是码元检测的特征尺度,计算二值化后的图像在不同尺度下的离散拉普拉斯响应值,然后检查位置空间中的每个点,若该点的拉普拉斯响应值都大于或小于其它立方空间邻域的值,那么,该点就是被检测到的二维码数据元素点,上述寻找位置空间和尺度空间的峰值可通过如下函数表示:
该函数表示同时在空间位置和尺度上拉普拉斯响应达到最大值或最小值的点的取值,该点就是所要检测的码元;其中,t表示尺度值,(x,y)表示空间位置,max minlocal(x,y,t)(·)表示响应函数在空间和尺度位置上的最大值或最小值,arg(·)表示对应函数值的变量的取值,表示在尺度空间下标准二维拉普拉斯函数。
根据以上原理,可以很好地检测到二维码图像的数据元素点及其各个斑点的尺寸,见图3。
(六)动态滤波及改进的二值化处理
首先,进行动态滤波处理:
(1)模板大小通过下式获得:
其中round表示取整操作;
(2)计算平均滤波模板:
其中,k为平均模板的大小,D为点阵码元的直径,ε是平均模板;
(3)按照下式进行平均滤波:
I1(x,y)=ε*I(x,y)
其中I(x,y)表示灰度图矩阵,I1(x,y)表示滤波后图像灰度矩阵;
然后,进行改进的二值化处理:
本方法的二值化算法选用了kittler算法与改进的Bernsen算法相结合的二值化算法,针对于点阵式二维码点模块相对于平滑,背景纹理相似的特点,可以很好的忽略不必要的背景细节,同时对光照不均匀的图片有很好的处理效果。首先根据Kittler的简单统计算法找到图像发生光照不均的区域,然后改进Bernsen算法的处理过程、调整参数、削弱原算法的伪影问题,并用改进后的算法处理图像光照不均的部分。该算法具有良好的稳定性和自适应性,可以明显提高二维条码的二值化效果和识别率。
kittler算法与改进的Bernsen算法相结合的二值化处理方法如下:
步骤(1)用Kittler算法得到全局阈值T,计算该全局阈值T的方法如下:
其中,f(x,y)是步骤二获得的原始的灰度图,e(x,y)=max{|ex|,|ey|}即梯度最大值,ex=f(x-1,y)-f(x+1,y)是水平方向上的梯度,ey=f(x,y-1)-f(x,y+1)是垂直方向上的梯度;
步骤(2)采用Bernsen算法对图像直方图中光照不均的区间进行处理,该类区间的灰度值集中在步骤(1)得到的全局阈值T附近,
如果T3>D,D是Bernsen算法处理的区间宽度即点阵码元的直径
则二值化结果
如果T3<D,D是Bernsen算法处理的区间宽度即点阵码元的直径
则二值化结果
其中,
T3是阈值选择依据且T3(x,y)=maxs-mins,
T2(x,y)=0.5(maxd+mind),
T4(x,y)=0.5(T+T2(x,y));
其中,
maxd表示像素点(x,y)在大小为4w*4w的窗口中最大像素值;
表示像素点(x,y)在大小为4w*4w的较大窗口中最小像素值;
表示像素点(x,y)在大小为2w*2w的较小窗口中最大像素值;
表示像素点(x,y)在大小为2w*2w的较小窗口中最小像素值;
上述式中的max表示取窗口内像素的最大值,min表示取窗口内像素的最小值,k和l均为整数,分别表示坐标x、y方向上的增量;w表示局部阈值运算的窗口,w取值范围为5~9,T2表示窗口内像素灰度平均值,T4是T2与全局阈值T的平均值。
(七)进行开、闭运算,获得点阵图像
点阵式DM码是由点模块构成的,为了变为可识别的标准DM码,需要将点阵模块变为块状结构,就用到了形态学变换上开、闭运算,开、闭运算是膨胀与腐蚀的组合形式。
其中,A被B膨胀,记为定义为:
其中,A被B腐蚀,记为AΘB,定义为:
AΘB={z|(B)z∩Ac≠Φ}
A被B的形态学开运算可以记做AοB,这种运算是A被B腐蚀后再用B来膨胀腐蚀的结果:
A被B的形态学闭运算可以记做A·B,这种运算是A被B膨胀后再用B来腐蚀膨胀的结果:
在本方法中,A为输入的二值图像,B为正方形结构元素。
开运算可以使图像的轮廓变得光滑,还能使狭窄的连接断开和消除毛刺,但与腐蚀不同的是图像大的轮廓并没有发生整体的收缩,物***置也没有发生任何变化。闭运算同样可以使轮廓变得光滑,但与开运算相反,它通常能够弥合狭窄的间断,填充小的空洞。如图4为开运算和闭运算的示意图。因此将开运算与闭运算运用在DM二维码标准化上,可以去掉二值化后的杂散点与一些毛刺。大量实验总结可得,用斑点检测得到的斑点尺寸(即点阵码元直径)的三分之一的方形结构元素进行开运算,去除杂散点与毛刺。用稍小于斑点尺寸(即点阵码元直径)1至5个显示像素点的方形结构元素进行闭运算,使点模块变为近似块状结构,使其“L”形边界清晰可见。
(八)开、闭运算后进行中值滤波处理,转化为标准二维码图像
中值滤波去噪处理优选为通过以下方式实现:
把图像中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点,其中二维中值滤波输出通过下式获得:
g(x,y)=med{f(x-k,y-1),(k,l∈W)}
其中,med{}表示取数组序列的中间值;f(x,y),g(x,y)分别为原始图像和处理后图像;W为3×3大小的二维模板;k,1均为整数,分别表示坐标x、y方向上的增量。
转变为标准DM二维码图像后的效果如图5所示。
[实施例二]
本发明还提供了一种功能模块架构的软件虚拟装置,其包括以下结构:
一种点阵式DM二维码图像处理装置,包括:
图像读取模块,用于读取点阵式DM二维码图像,在不改变原点阵式DM二维码图像宽高比例的基础上,利用最近邻插值算法或双线性插值算法进行宽度统一化处理;
灰度转换模块,用于将统一尺寸后的图像转换为灰度图;
高斯平滑滤波模块,用于对灰度化后的图像进行高斯平滑滤波处理,去除图像背景的细小纹理,使点阵码元的实心点更加平滑;
二值化转换模块,用于将高斯平滑滤波后的灰度级图像转化为黑白二值化图像;
码元检测模块,用于对二值化转换模块中二值化后的图像进行码元检测,得到点阵式码元的直径;
动态均值滤波及二值化转换模块,用于根据码元检测模块获得的点阵码元的直径大小而动态的改变平均模板的大小,进而对灰度转换模块获得的灰度图进行动态均值滤波处理,对动态均值滤波后的灰度图再进行kittler算法与Bernsen算法相结合的改进的二值化处理:
运算操作模块,用于将动态均值滤波及二值化转换模块获得的二值化图像进行形态学的开运算和闭运算操作,得到处理后的点阵图像,其中,
开运算用下式表示:
闭运算用下式表示:
其中A为输入的二值图像;B为正方形结构元素;
标准化模块,用于将运算操作模块获得的点阵图像通过中值滤波去噪处理,转变为可识别的块状结构的标准DM二维码图像。
当然,上述功能模块架构的产品也能通过真实的硬件电路实现。
本发明中所提到的点阵斑点也被称为点阵码元,斑点和码元属于同一概念。
基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。