本示例通過形態學處理,然後再通過矩形度和孔洞面積作為判斷依據,來確認餅乾的完整情況。
示例**:
* 這個例子描敘了餅乾質量檢測。
* 使用形態學進行提取和檢查
* 通過一些形狀特徵,比如矩形度還有孔洞面積
* 讀影象
read_image (image, 'food/hazelnut_wafer_01')
dev_close_window ()
dev_open_window_fit_image (image, 0, 0, -1, -1, windowhandle)
dev_update_window ('off')
dev_set_line_width (3)
dev_set_draw ('margin')
set_display_font (windowhandle, 20, 'mono', 'true', 'false')
* for index := 1 to 24 by 1
* 讀影象
read_image (image, 'food/hazelnut_wafer_' + index$'.02')
* 快速二值化,提取出屬於餅乾區域的亮區域
binary_threshold (image, foreground, 'smooth_histo', 'light', usedthreshold)
* 開運算,去掉外圍的一些雜點
opening_circle (foreground, finalregion, 8.5)
* 計算區域中所有孔洞的面積和
area_holes (finalregion, areaholes)
* 計算區域的矩形度,也就是給該區域打分,越與矩形相似,得分越高
rectangularity (finalregion, rectangularity)
dev_display (image)
* 以孔洞面積、矩形度來判斷餅乾的完整性
* 區域內孔洞面積越大,說明餅乾內部碎,如果矩形度得分低,說明餅乾的邊緣碎
if (areaholes > 300 or rectangularity < 0.92)
dev_set_color ('red')
text := 'not ok'
else
dev_set_color ('forest green')
text := 'ok'
endif
dev_display (finalregion)
disp_message (windowhandle, text, 'window', -1, -1, '', 'false')
if (index < 24)
disp_continue_message (windowhandle, 'black', 'true')
stop ()
endif
endfor
重點說明:1. 計算區域內孔洞面積的運算元為area_holes,如果在區域內有多個孔洞,該運算元會計算所有孔洞的面積和。
2. 得到區域的矩形度運算元為rectangularity,如果區域和矩形相似度越高,則得分越高。
3. 判斷一塊餅乾是否完整的判斷條件為:如果矩形度得分小於0.92分,或者是孔洞面積大於300,但凡這兩個條件有乙個滿足,則該餅乾是不完整的。
執行流程:
完整的餅乾影象
完整餅乾的區域:
完整餅乾的檢測結果顯示:
破碎的餅乾影象:
破碎餅乾的區域:
破碎餅乾的檢測結果顯示:
Halcon 餅乾缺陷檢測
使用的主要是blob 特徵的方式 blob用於定位 特徵 這裡主要使用的是區域所佔的面積數 和矩形度兩個指標。因為面積數是個經驗值,所以上面有些ng和ok是很接近的。讀取read image image,food hazelnut wafer 01 關閉視窗 dev close window 開啟乙...
資料相似度檢測
上面這個是中文的乙個解釋。這裡我並不是為了要進行某種相似度函式的解釋,而是說,怎麼來解決我一直困擾的問題。n 2問題。就是要獲取全部的對比樣本,我應該怎麼做,在大資料環境下,如果上千上萬個樣本,這玩意就更難弄了。我這裡出現的問題就是,我前面在做這個二進位制程式的比較,然後發現了這麼乙個問題,我使用s...
Linux AIDE 檔案完整性檢測
一 aide的概念 aide advanced intrusion detection environment,是一款入侵檢測工具,主要用途是檢查文件的完整性。aide在本地構造了乙個基準的資料庫,一旦作業系統被入侵,可以通過對比基準資料庫而獲取檔案變更記錄,使用aide.conf作為其配置文件。a...