檢測 餅乾完整度的檢測

2021-10-01 02:59:46 字數 2176 閱讀 5963

本示例通過形態學處理,然後再通過矩形度和孔洞面積作為判斷依據,來確認餅乾的完整情況。

示例**:

* 這個例子描敘了餅乾質量檢測。

* 使用形態學進行提取和檢查

* 通過一些形狀特徵,比如矩形度還有孔洞面積

* 讀影象

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...