halcon視覺缺陷檢測系列(1)常用的6種方法

libaineu2004發表於2020-01-08

一、缺陷檢測綜述

缺陷檢測是視覺需求中難度最大一類需求,主要是其穩定性和精度的保證。首先常見缺陷:凹凸、汙點瑕疵、劃痕、裂縫、探傷等。常用的手法有六大金剛(在halcon中的ocv和印刷檢測是針對印刷行業的檢測,有對應運算元封裝):

1.blob+特徵(例如官方示例surface_scratch.hdev)

2.blob+差分+特徵

3.光度立體

4.特徵訓練

5.測量擬合

6.頻域+空間結合

 

二、頻域+空間結合法

1、頻域結合空間,其實頻域就是用波動觀點看世界,看問題角度變了,光經過鏡頭其實發生的是傅立葉變換,此思想在傅立葉光學上有所闡述,就像光經稜鏡分光,而光進入計算機內部,進行了取樣和量化,然後我們用函式f(x,y)來表示這些資料描述。影像處理應用傅立葉變換就是將空間域(影像本身)轉換至頻率域。傅立葉變換可以將一個訊號函式,分解一個一個三角函式的線性組合。由於任何周期函式都可以由多個正弦函式構成,那麼按照這個思想,影像由f(x,y)來表示,那麼這時你就可以拆成多個正弦函式構成,這樣每個正弦函式都有一個自己的頻率。

2、頻率特徵是影像的灰度變化特徵,低頻特徵是灰度變化不明顯,例如影像整體輪廓,高頻特徵是影像灰度變化劇烈,如影像邊緣和噪聲。一個重要的經驗結論:低頻代表影像整體輪廓,高頻代表了影像噪聲,中頻代表影像邊緣、紋理等細節。

3、什麼時候使用傅立葉變換進行頻域分析?

1)具有一定紋理特徵的影像,紋理可以理解為條紋,如布匹、木板、紙張等材質容易出現。 
2)需要提取對比度低或者訊雜比低的特徵。 
3)影像尺寸較大或者需要與大尺寸濾波器進行計算,此時轉換至頻域計算,具有速度優勢。因為空間域濾波為卷積過程(加權求和),頻域計算直接相乘。

4、舉例

*1採集影像
read_image (Image66, 'C:/Users/Administrator/Desktop/66.png') 
rgb1_to_gray (Image66, GrayImage)

*2預處理之拉開對比度(這裡採用頻域,頻域到空間域的常用運算元有三個fft_iamge,rft_generic,fft_generic 
fft_generic (GrayImage, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')

*注意一般在頻域裡就是選擇你想要的頻段而已,被稱為濾波,這個手法在halcon中有三個,
*一個是直接手畫,然後paint_region
*一個是涉及濾波器,然後進行濾波,這個對於初學者有點難度,先掌握常見濾波器。
*第三個就是呼叫power_real,對其進行blob解析。
*這裡用的直接手動paint_region,選擇對應的頻段 
gen_rectangle1 (ROI_0, 350.855, 3.85433, 473.273, 1101.15)
paint_region (ROI_0, ImageFFT, ImageResult, 0, 'fill') 

*注意這裡又回到了空間,頻域和空間是同等重要地位,只是看問題的角度不一樣,這也符合唯物辯證法法
fft_generic (ImageResult, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'byte') 
*接下來就是一個blob提取而已,當然這裡方法可以根據情況變化多端,比如你可以分水領域法,
*然後呼叫select_gray,對每個區域對應灰度值特徵進行篩選,當然您也可以用共生矩陣
emphasize (ImageFFT1, ImageEmphasize, 7, 7, 1) 
threshold (ImageEmphasize, Regions, 44, 101)
dilation_circle (Regions, RegionDilation, 3.5) 
connection (RegionDilation, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 78.88, 190.87) 
*這裡就是顯示而已
dev_display (Image66) 
dev_display (SelectedRegions)

另外,halcon自帶的例子detect_mura_defects_texture.hdev也值得學習

更多的內容,參見我的另一篇博文halcon視覺缺陷檢測之頻域和空間域轉換的方法詳解

 

三、光度立體法

在工業領域,表面檢測是一個非常廣泛的應用領域。在halcon中,使用增強的光度立體視覺方法,三維表面檢測被加強。利用陰影可方便快速的檢測物體表面的缺口或凹痕。 使用光度立體視覺方法可在複雜影像中輕鬆找到表面缺陷 。

四面打光,合成影像,求取梯度圖型,然後Halcon裡的光度立體法也是這方面的應用,關鍵的運算元就是photometric_stereo

潛在問題:

1.看官方例子貌似都是條形組合光源打光,用光度立體法檢測,一定要把缺陷打出來才行嗎?
2.一定要取4張圖片嗎?
3.photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, ResultType, 'poisson', [], [])該運算元的配置有什麼講究嗎?

舉例:檢測-光度立體法檢測藥片包裝背面的缺陷

官方例子:皮革檢測,inspect_leather_photometric_stereo.hdev

 

 

---

參考文獻

1、halcon機器視覺缺陷檢測之劃痕-超人視覺

http://www.ihalcon.com/read-8013.html

https://pan.baidu.com/share/link?shareid=3266393619&uk=2369503810

2、halcon缺陷檢測的示例程式碼解析

https://blog.csdn.net/ymj7150697/category_8002603.html

 

相關文章