圖像相減(又稱為圖像差影),是指把同一物體圖片在不同時刻拍攝的兩幅圖像進行減法運算,從而得到差值結果圖像。
差值圖像顯示了圖像間的差異信息,本論文基本思想是針對標準模板圖像與缺陷圖像進行想減運算,從而得到想減結果圖像,通過分析相減圖像的灰度值,對要測試的圖像是否合格做出判斷,若判斷合格,則系統停止處理,若判斷為不合格則對不合格標簽進行剔除處理.
算法設計:設模板標準圖像灰度像素值為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
for\\(j=0;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.