一、PatInspect原理詳解
1.PatInspect簡介
PatInspect主要用於缺陷檢測,例如印刷字符檢測、部分缺失或者明暗變換、激光打標內容檢測等,該檢測方法對光照的穩定性要求較高,視野內的光照不均勻極易造成誤判與過殺。通過將當前圖像與“訓練圖像”對比,獲取“原始差異圖像”,再將“原始差異圖像”與“閾值圖像”進行對比,進而獲取“閾值差異圖像”得到最終的當前圖像與訓練圖像的差異,通常差異區域為缺陷所在。
2.PatInspect 原理
PatInspect中主要涉及以下幾個關鍵詞:
- 訓練后圖像(Trained Pattern)
- 標准差圖像(Standard Deviation Image)
- 閾值圖像(Threshold Image)
- 原始差異圖像(Raw Difference Image)
- 閾值差異圖像(Threshold Difference Image)
2.1訓練后圖像
訓練后圖像來源於一幅或者多副沒有缺陷的圖像,通常情況下選擇多副圖像,這樣可以在一定程度上抑制光照不均勻帶來的差異。圖像訓練的環境是檢測運行的環境在光照、視野、背景等硬件環境部署方面要保持高度一致。訓練后圖像的計算方法檢測區域相對應位置的像素平均值。
當然,如果只提供一幅圖像的話平均值就無從談起,訓練后圖像的值就是提供的那幅訓練圖像。在只提供一幅訓練圖像時要尤其注意光照環境的均一穩定,否則極容易造成誤檢。
2.2 標准差圖像
對於提供多副訓練圖像的情況,標准差圖像的計算方式為在圖像中的每一個位置計算多副圖像的標准差,計算方式如下圖所示。
在統計數據中,標准差反應的是一組數據的離散程度,標准差越大說明數據的離散程度或者波動程度越大。從下面的標准差圖像中可以看出,在每個檢測目標的邊緣處或者紋理區域標准差較大,這是因為用於訓練的圖像由於光照、采圖角度等外界因素的差異在明暗過度區域的像素值差異較大。而在紋理不明顯或者過渡較為平緩的區域同一像素位置的像素值差異較小,所以在標准差圖像中取值較小。雖然計算方式不同,標准差圖像與Sobel圖像在效果上極為相似,都是在紋理變換明顯的“高頻”區域取得較大的值,在紋理不明顯的“低頻”區域取值較小。所以對於僅僅提供一副圖像的情況,就用Sobel圖像來代替標准差圖像來描述訓練圖像在邊緣部分的差異。
2.3 閾值圖像
在檢測過程中並沒有直接使用標准差圖像,而是使用對標准差進行變換后的閾值圖像,閾值圖像的計算方式很簡單,就是對標准差圖像的對應像素值進行線性變換。
在上述計算公式中,A為尺度參數,B為偏移參數。通過設置不同的閾值圖像參數,可以調節檢測“嚴格程度”,如果A和B都設的比較小,可能細微的像素值變換就會被檢測出來。如果A和B都選擇比較大的數值,只有像素值變化明顯的區域才可能被檢測到。
2.4 圖像歸一化
為了抑制因光照不穩定引起的誤檢,運行時圖像與訓練圖像進行對比前需要對運行時圖像進行歸一化,調節整體亮度水平,使得運行時圖像與訓練后圖像在同一亮度環境中進行比較。CogPatInspectTool的圖像歸一化方法有以下幾種:
- Identity
對運行時圖像不進行歸一化,主要是在測試階段用來進行觀察,確定不進行歸一化可能出現的缺陷位置與缺陷類型 - Histogram Equalization
直方圖均衡化,調整運行時圖像的灰度直方圖與訓練后圖像的灰度直方圖相匹配,適用於檢測面積比較小的情況,因為大面積出現缺陷會影響灰度直方圖分布。 - Match Tails
忽略“高尾部”與“低尾部”對運行時圖像的直方圖進行調整與訓練后的圖像相匹配,適用於圖像中可能出現陰影或者耀光的情況。 - Mean and Standard Deviation
通過運行時圖像灰度直方圖的平均值與標准差對灰度直方圖進行調整,適用於大小適中的缺陷檢測以及光照變換比較明顯的情況。 - Robust Line Fit
通過選擇最佳擬合的線性直方圖均衡化函數來調整像素值。與其它的歸一化方法相比,該方法可以容忍更大的缺陷,但需要更多的處理時間。當缺陷面積超過加檢測區域的四分之一甚至更多時,並且缺陷像素值可以位於參考圖像的左右尾部之外時,請使用穩健的線擬合方法。 - Local Correction or Enhanced Local Correction
局部修正方法,先對運行時圖像進行矩形分割,再對每個區域進行歸一化處理
3.Patinspect 算法流程
- step1. 訓練數據,獲取Trained Pattern,選擇一幅或者多副圖像,設置閾值圖像中線性變換參數A和B,設置運行時圖像的歸一化方式。
- step2. 計算match image,該圖像由訓練時選取的檢測區域決定,即截取輸入圖像中的檢測區域。
- step3. 對match image進行圖像歸一化。
- step4. 計算原始差異圖像(raw difference image)。
- step5. 比較原始差異圖像與閾值圖像,對於超過閾值圖像中對應值的原始差異圖像中的像素值進行保存,小於閾值圖像中對應值的像素值置零,生成閾值差異圖像(ThresholdDifference Image)
- step6. 將閾值差異圖像輸入給其他工具進行進一步的分析。
二、CogPatInspectTool使用案例
在實際使用中,每次采集到的圖像在位置、姿態、尺度等可能存在差異,為了准確提取檢測區域,避免因檢測位置不對應造成的誤檢測,CogPatInspectTool通常配合CogPMAlignTool使用,有CogPMAlignTool提供目標在不同圖像之間的位姿關系。
1 案例檢測需求描述
該案例目的為檢測激光打標字符質量,在打標區域中不能出現打標內容丟失,也不能出現多打、漏打、少打等缺陷。如下圖所示,左側為正常打標良品,右側為人為制造的不良品。
2 項目搭建流程
step1.配置圖像源,選擇檢測圖像所在的文件夾,圖像源中即包含良品圖像又包含存在缺陷的不良圖像。
step2.添加CogPMAlignTool 並對匹配模板,搜索參數進行配置。
step3.添加CogPatInspectTool進行參數配置。將CogPatInsecptTool 的輸入圖像鏈接到圖像源的“OutputImage”,“pose”鏈接到CogPMAlignTool的GetPose輸出,后續詳細操作過程如下:
- 點擊外層ToolGroup的運行按鈕,使得CogPatInspectTool 獲取到一幅良品圖像,點擊“抓取訓練圖像與原點”,得到用於訓練的圖像;
- 在右側的下拉列表中選擇Current.TrainImage;
- 選擇檢測區域,可以通過掩膜對檢測區域進行調整,屏蔽變量部分與光照不穩定部分,從而避免檢測過程中的誤檢。
- 點擊“訓練新模式”,此時相當於提供了一幅良品圖像到工具中,如果想添加多副訓練圖像需要從外層運行程序,使得CogPatInspectTool重新獲取一幅圖像,點擊“統計訓練當前模式”。注意,在訓練過程中的添加的圖像必須是良品圖像,如果誤將不良品圖像添加到訓練數據中會造成災難性的后果。
- 訓練圖像添加完成之后,點擊“結束統計訓練”,
- 如果對當前的訓練結果不滿意,點擊“取消訓練模式”,所有的訓練數據清空,可以重新進行添加訓練圖像。黃色矩形框中的參數用於設置從標准差圖像到閾值圖像的線性變換系數,單幅圖像與多副圖像需分開進行設置。
- 在運行參數Table頁中,選擇對應的歸一化算法,選擇標准參考上節中圖像歸一化部分,通常情況下選擇默認即可。
step4 點擊外層ToolGroup的運行按鈕,對當前輸入圖像進行檢測即可以看到運行效果。
接下來補充說明一下運行過程中的match image ,match image 時將當前圖像的待檢測區域與訓練圖像對其之后的結果圖,如下圖所示,注意,此時圖像還沒有進行歸一化處理,圖像中紅色和綠色部分表示當前圖像與訓練圖像之間的像素值差異,可以看到在非缺陷區域差值較小,在明顯的缺陷區域標注為紅色,像素差值較大。
CogPatInspectTool 最終目的是獲取DifferenceImageAbsolute,將此圖像輸出到blob等工具根據檢測面積、位置等進行過濾,最后得出檢測結果。