halcon中動態閾值分割以及使用偏差模型法檢測缺陷

動態閾值分割定義

將圖像與局部背景進行比較的操作稱動態閾值分割處理。

注意動態閾值的說法
當進行比較操作(做差)時,設置的閾值並不一定是動態的,這裏動態主要指各個局部的背景灰度值可能是動態變化的,即(背景+閾值)是動態的。

局部背景的估計
  • 空域上
    可以用均值、高斯、中值濾波器對局部進行平滑處理的結果作爲對背景灰度值得估計。有時爲了加快處理速度,也可以採樣的方式,自己任意設置濾波器掩碼。 halcon中代碼如下:
mean_image(Image,Mean,D*2+1,D*2+1)
dyn_threshold(Image,Mean,Seg,5,'light')
  • 時域上
    採集n張圖像,匹配對準後,每個像素點在n張圖像的均值/中值可作爲背景的估計
空域動態閾值缺陷檢測的限制

    動態閾值分割的結果不僅包括比局部背景更亮或更暗的物體,也包括亮區域或暗區域的邊緣,這也就是說,如果我們用空域動態閾值分割檢測缺陷,圖像邊緣也會被分割出來,這往往並不是我們需要的,因此這種方法我們通常會將roi限定在離邊緣有一定距離的地方。

偏差模型法缺陷檢測
核心思想
  • 求良品圖時域平均,以進行背景的估計
  • 求良品圖時域標準差,以進行閾值進行設置<即:背景灰度值和閾值都是動態的>
偏差模型的推導及由來
  1. 理想情況下(檢測物體無形變,匹配對準很精確),那麼直接用檢測圖像減去參考圖像,在配一個閾值即可
    在這裏插入圖片描述
  2. 但是
    實際情況下,檢測物體總會出現微小形變,或採集時出現輕微畸變,這種情況下,直接用上式,邊緣部分基本會誤檢測;
    ex:如果物體尺寸增加半個像素,物體與背景灰度值差異是200,那麼當前圖像與參考圖像在物體邊緣部分的灰度差異將會是100,這個值通常會超過一個合理的閾值,邊緣被錯誤檢測出
  3. 因此
    在進行閾值分割處理時,要考慮圖像預期的灰度值偏差。理想情況下,容許偏差可以是標準差乘以一個常數。
    在這裏插入圖片描述
    其中g(rc)爲時域的均值圖像,v(rc)爲常數c*標準差s(rc)

標準差反應偏離樣本均值程度,物體邊緣地方容易形變,因此這些位置的標準差較大,當分割時,這些地方的閾值自然就大,就不容易誤分割

  1. 但是
    如果訓練圖像相比於實際測試圖像的偏差非常小時,比如物體一部分接近相機飽和極限,此方法效果不好
  2. 因此
    爲偏差圖像引入一個絕對閾值a(檢測亮缺陷)和b(暗缺陷)進行控制分割,當偏差小時,就用此絕對閾值進行分割
S={(r,c) ∈R|f(rc)<l(rc) V f(rc)>u(rc)}
u(rc) = m(rc) + max(a, cs(rc))
l(rc) = m(rc) - max(b, ds(rc))

以上就是halcon偏差模型進行缺陷檢測的理論知識。

算子組合
# 創建
create_variation_model (Width, Height, 'byte', 'standard', VariationModelID)
# 訓練
train_variation_model (ImageTrans, VariationModelID)
# 查看均值圖像,偏差圖像
get_variation_model (MeanImage, VarImage, VariationModelID)
#設置絕對閾值,異常偏差的倍數因子
prepare_variation_model (VariationModelID, 20, 3)
#檢測分割
compare_variation_model (ImageReduced, RegionDiff, VariationModelID)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章