图像相减(又称为图像差影),是指把同一物体图片在不同时刻拍摄的两幅图像进行减法运算,从而得到差值结果图像。
差值图像显示了图像间的差异信息,本论文基本思想是针对标准模板图像与缺陷图像进行想减运算,从而得到想减结果图像,通过分析相减图像的灰度值,对要测试的图像是否合格做出判断,若判断合格,则系统停止处理,若判断为不合格则对不合格标签进行剔除处理.
算法设计:设模板标准图像灰度像素值为A(x,y),设待检测缺陷图像为B(x,y),两图像做相减运算为C(x,y),他们之间的关系式为:
C(x,y)=|B(x,y)-A(x,y)|图像减法运算结果体现两幅图像的差异,算法容易实现,通过对两幅图像进行相减结果取绝对值,可以清除两幅图像之间共同的背景图案,分割出图像之间的不同之处,最后保留有缺陷的图像.
如果两幅图像相减后C(x,y)越小,则表明图像之间的差异越小,两幅图像之间的相似度就越高,否则,相反.
如图所示,图1-1 为标准模板标签图像,图 1-2 为待检测标签图像.经过如下算法:
BOOL WINAPI TuXJianFa (LPSTR lpYDIB,LPSTR lpB-
DIB
,
LONG lkuan,LONG lgao)
{
LPSTR lpsrc,lpsrcB;
LPSTR lpDst;
LPSTR lpNewDIB;
HLOCAL hNewDIB;
long i;
long j;
unsigned char xiangsu,xiangsuB;
LONG mhzj;
mhzj=WIDTHBYTES(lkuan*8);
hNewDIB=LocalAlloc(LHND,lkuan*lgao);
lpNewDIB=(char*)LocalLock(hNewDIB);
lpDst=(char*)lpNewDIB;
memset(lpDst,(BYTE)255,lkuan*lgao);
for(i=0;i<lgao;i++)
{
for(j=0;j<lkuan;j++)
{
lpsrc=(char*)lpYDIB+mhzj*i+j;
lpsrcB=(char*)lpBDIB+mhzj*i+j;
lpDst=(char*)lpNewDIB+mhzj*i+j;
xiangsu=(unsigned char)*lpsrc;
xiangsuB=(unsigned char)*lpsrcB;
*lpDst=abs(xiangsu-xiangsuB);
}
}
memcpy(lpYDIB,lpNewDIB,lkuan*lgao);
LocalUnlock(hNewDIB);
LocalFree(hNewDIB);
return TRUE;
}
使得两幅标签图像的差异如图 1-3 所示:
从图1-3 可以看出:待检测标签图像与标准模板标签图像进行相减后,能够清除图像之间共同的部分,从而使差异部分体现出来.
总结:本文通过对现有的标签进行观察分析,提出了图像相减的软件检测算法,并依据该算法对标签缺陷检测系统进行测试,最终得以实现,该系统能够减轻工人的繁重的劳动,实现标签检测的工作效率.
参考文献:
[1] 宋慧欣,解读“新经济时代”中国机器视觉市场[J],自动化博览,2010.4:69~69
[2] 历小飞,基于机器视觉的汽车零件缺陷检测技术研究,武汉理工大学[D],武汉理工大学 2012:11~15.
[3] 何斌,马天宇,王运坚,Visual C++ 数字图像处理[D] 2002:473~477.