濃淡補正的實現探究和複雜背景下細小缺陷的檢測

 

“濃淡補正”是基恩士視覺的一個很強大的算法工具。使用“濃淡補正”的預處理,可以消除工件表面的光澤和陰影,僅抽取污點及瑕疵。(如下圖)

 

至於它的實現原理,網上搜不到相關資料。不過根據它的實現效果,能大致窺見它的原理:排除背景漸變的濃淡變化,只抽取對比度急劇變化的部分。

 

看到這句話,想必有些人已經想到了一個詞“動態閾值”,沒錯,動態閾值是跟它有幾分相似,這個我們後面再分析。

 

一、濃淡補正近似實現

 

下圖中,要把“黑點”和“彎曲的細黑線”提取出來,其中黑點正方形的邊長是5個像素。

 

處理算法如下:

1 read_image (Image, '白格矩陣.jpg')
2 rgb1_to_gray (Image, GrayImage)
3 
4 gen_disc_se (SE, 'byte', 11, 11, 0)  //設計結構元素
5 gray_dilation (GrayImage, SE, ImageDilation)
6 gray_erosion (ImageDilation, SE, ImageErosion)
7 sub_image (ImageErosion, GrayImage, ImageSub, 1, 120)  //這個120也可以設置其他值

 

構造的結構原圖是一個11 × 11的矩形結構元素。

 

分析:

gray_dilation (GrayImage, SE, ImageDilation),對圖像進行灰度值像素膨脹即灰度值較大的區域膨脹,面積變大。(如下圖左ImageDilation)

② gray_erosion (ImageDilation, SE, ImageErosion),對圖像進行灰度值像素收縮即灰度值較大的區域收縮,面積變小。(如下圖右ImageErosion)

③ 在灰度值像素膨脹的過程中,原圖中的“小黑點”和“細長的黑線”被它們周圍的高亮灰度值像素膨脹覆蓋掉了。(如下圖左)

④ 在灰度值像素收縮的過程中,圖中的白格子面積縮小,幾乎恢復原狀,不過在上一步中被膨脹覆蓋掉的小黑點、細黑線不可能再復原了。

⑤ sub_image (ImageErosion, GrayImage, ImageSub, 1, 120),用無黑點、黑線的圖ImageErosion減去原始圖,就有效提取出了黑點和黑線。(如上圖所示)

 

 

使用這種方式提取複雜背景的黑點和黑線,有什麼注意點呢?

① 結構元素要構造得合理,一般來說,構造正方形結構元素最通用。

② 圖中“小黑點”的邊長是5 pix,結構元素至少要設置爲6 × 6 纔行,不然不能有效提取出小黑點。

③ 點只能提取較小的,線也只能提取較細長的。(因爲結構元素設計過大,可能會有難以預料的結果)

 

下圖中展示了結構元素分別爲3 × 3、50 × 50時,最終的效果圖ImageSub:

 

二、複雜背景下的算法表現

 

 

 

三、動態閾值

 

 

四、diff_of_gauss

 

(待續)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章