計算機視覺中的濾波


博客:博客園 | CSDN | blog

寫在前面

http://setosa.io/ev/image-kernels/

在計算機視覺中,濾波filtering)是指

Image filtering: compute function of local neighborhood at each position.

—— from CAP5415–Fall 2014-Lecture 2 (08/21/2014)–Filtering

In the broadest sense of the term "filtering", the value of the filtered image at a given location is a function of the values of the input image in a small neighborhood of the same location.

—— from Bilateral Filtering for Gray and Color Images

濾波本質上是一種特殊的函數,其作用在圖像的每個位置,通過定義的計算方式得到輸出,輸出的值用於替換圖像當前位置(濾波器中心)的值。

令濾波函數為\(g(x;\ w)\) ,其中\(x\)為圖像的局部鄰域,\(w\)為濾波器的權重,濾波器可以分成如下3類,

  • 線性濾波器Linear filter):線性濾波的輸出為輸入的線性組合,即\(g = w \cdot x\),線性濾波器最為常見;
  • 非線性濾波器Non-Linear Filter):不滿足上條性質的為非線性濾波,典型的非線性濾波如最大值/最小值/中值濾波、膨脹/腐蝕等;
  • 自適應濾波器Adaptive filter):線性濾波中的\(w\)在滑動過程中固定不變(與圖像內容獨立無關),自適應濾波的\(w\)在滑動過程中會隨着窗口內像素的性質和結構發生變化。直覺上,自適應濾波器在某些復雜情況下可能取得更好的效果,但相對線性濾波器,其計算代價更高也更難優化加速。

從濾波目的或者解決的問題上,也可分成3類:

filtering

  • 圖像處理:並不想從圖像中提取信息,只想將圖像轉換成期望的樣子;
  • 特征提取:想從圖像中提取到某些信息,比如梯度、二階導、紋理等;
  • 模式檢測:想知道圖像局部長什么樣子,像哪種模式,比如模板匹配、稀疏表示等;

這兩種分類方式並不是割裂的,而是互相交叉的,用於圖像處理的濾波器也有線性、非線性、自適應之分。

Padding

濾波操作不可避免的一個問題是邊界如何處理,當濾波器的中心壓在圖像邊界處時,濾波器會有一部分落在圖像外,但圖像外並沒有像素,該如何處理?通常需要對圖像進行填充(padding),填充需要解決2個問題,填充的元素取什么值以及填充多少個元素

對於延拓元素的取值,通常有4種方式,

  • 常數填充(0填充):填充的元素取相同的常數值
  • 周期填充(circular):認為圖像的上下左右被與自身相同的圖像包圍着
  • 復制填充(replicate):復制圖像邊界的元素
  • 對稱填充(symmetric):填充的元素與圖像關於邊界對稱

4種填充方式依次如下圖所示,

https://www.cs.toronto.edu/~urtasun/courses/CV/lecture02.pdf

對於填充多少個元素,通常有3種方式,令濾波器的大小為$g\times g $ ,圖像大小為\(f \times f\)

  • full:邊界分別填充\(g-1\)個元素,濾波結果為\((f+g-1)\times (f+g-1)\),比原圖大
  • same:邊界分別填充\((g-1)/2\)個元素,濾波結果為\(f\times f\)與原圖大小相同
  • valid:邊界不填充,濾波結果為\((f-g+1)\times (f-g+1)\),比原圖小

1DncG9.png

濾波雜談

  • 基本假設:局部相關性(遠處無關)、局部相似(edge處不滿足)、噪聲隨機

  • 靜止圖像的去噪,若能獲得圖像序列,可以在時域上濾波(均值、中值等)單張圖像在空域上濾波

  • 椒鹽噪聲用中值濾波。椒鹽噪聲會隨機地將像素置為黑或白,在實踐中,會大幅改變像素值的噪聲一般采用中值濾波都是有效的。

  • 非椒鹽噪聲,均值為0的隨機噪聲(高斯噪聲),可通過moving average濾波。

  • 與圖像內容耦合的噪聲,可能需要依賴先驗知識,采用合適的自適應濾波器,更多內容可以查看參考鏈接。

  • 平滑相當於低通、銳化相當於高通、不同平滑半徑的差相當於帶通

  • 濾波的加速可以考慮:濾波器是否行列可分離、緩存不必要的重復計算、近似計算、SIMD等。

  • 差分算子對噪聲敏感,所以差分前通常要先平滑。

  • 考慮到噪聲,求梯度前通常要先(高斯)平滑再使用差分算子,sobel算子可以看成是DoG(Derivative of Gaussian)的近似,可以拆分成平滑和差分,如下所示,所以可以用sobel求梯度。

    \[\mathbf{G}_{x}=\left[\begin{array}{l}{1} \\ {2} \\ {1}\end{array}\right] *\left(\left[\begin{array}{lll}{+1} & {0} & {-1}\end{array}\right] * \mathbf{A}\right) \quad \text { and } \quad \mathbf{G}_{y}=\left[\begin{array}{c}{+1} \\ {0} \\ {-1}\end{array}\right] *\left(\left[\begin{array}{lll}{1} & {2} & {1}\end{array}\right] * \mathbf{A}\right) \]

  • 考慮到噪聲,求二階導前通常也要先(高斯)平滑再使用拉普拉斯算子,兩者合在一起即LoG(Laplacian of Gaussian),即對高斯求二階導再離散采樣,通常可以用DoG(Difference of Gaussian)即兩個不同size高斯核的差近似,詳見Laplacian/Laplacian of Gaussian,其中Laplacian算子為

    \[\nabla^{2} f=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} \]

兩種常用的2D離散近似形式如下:
https://homepages.inf.ed.ac.uk/rbf/HIPR2/log.htm

  • 模式檢測需要根據期望探測的模式來定義filter,因為不同場景需要檢測的模式不同,所以filter也多種多樣。反映模式的filter可以根據領域知識來人工定義、可以通過SOM(Self Organizing Map)無監督生成、也可以像CNN那樣通過數據驅動有監督學習得到。比如,模板匹配中的模板為filter,相似度函數為濾波的計算方法;稀疏表示中字典的每一列都是filter,像gabor小波字典,通過相關運算計算與每個filter的相似程度,從而知道每個圖像局部“長什么樣子”。

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM