解決的問題
屬於圖像增強方法,主要增強邊緣,減少圖像邊緣擴散,更便於邊緣提取等操作。
算法功能
- 在圖像邊緣產生強的不連續性,
- 在一個區段內(包含一個最大影響區和一個最小影響區的範圍簡稱爲區段)圖像是分段常數
用下圖解釋什麼時最大最小影響區域:
- 首先定義最大-最小影響區域:
最大影響區域就二階偏微分爲負數的區域,最小影響區域二階偏微分爲正數的區域
- 然後:
一個區段即最大和最小影響區域組成的區段,shock_filter使此區域內是分段常數的,即下圖實線:
算法起源及思想
第一個衝擊濾波器shock filter最初在1975年,由Kramer和Bruckner提出來的。基於在最大影響區域進行灰度膨脹操作,在最小影響區域進行灰度腐蝕操作,像素到底位於最大還是最小影響區域通過二階偏微分來決定,迭代以上操作直到在最小最大影響區域交界處產生一個尖銳的shock。
"衝擊濾波"術語是由Osher和Rudin於1990年提出的。他們提出了一類基於偏微分方程的連續濾波器。halcon中shock_filter就是按裏面的公式實現的
如何解決提到的問題
如何增強邊緣
- 將擴散的邊緣,變爲階梯式強的不連續邊緣
如何保證區段內產生常數的分割(是分段常數)
- 灰度腐蝕和灰度膨脹操作
數學推導求解
上面最後兩行相當於腐蝕和膨脹操作,這點我暫未明白,期待後續在補補。
halcon函數
shock_filter(Image : SharpenedImage : Theta, Iterations, Mode, Sigma : )
// Theta:即Δt
// Iterations:迭代次數
// Mode:可選canny或laplacian, 二維微分算子
// Sigma:平滑參數,爲了使邊緣提的更魯棒,Sigma是高斯平滑的標準差
工業應用實例
博主在工業質檢項目中,用作計算線狀缺陷的寬度的預處理,原因是,缺陷較小,相機分辨率又不夠,以及其他成像特點,總之缺陷邊界容易模糊,給後續提邊緣,設閾值帶來了很多困惑,就能用到這種保邊增強的濾波器,衝擊濾波器;
上圖第一張是原圖,邊界模糊不清晰,並且線裏面不是完全均勻的,最開始直接提取時,區域總是提得少了,導致線寬計算過小,而漏檢。下面圖時經過沖擊濾波,迭代10次,Δt取0.5濾後得圖,邊界清晰,裏外像素分解明顯,適合下一步計算
限制點
效率可能是制約點
參考資料
- Coherence-Enhancing Shock Filters (Joachim Weickert)