咱們常指的濾波是指空間濾波和頻率濾波。html
Images
在圖像處理裏面,管圖像復原,去噪,能夠說爲圖像復原,圖像濾波,他是咱們拿到圖像的第一步操做,受到噪聲污染的圖像叫作退化,去噪就是復原。常見的噪聲有加性噪聲(與信號有關,通常把加性的隨機性當作是系統的背景聲),乘性噪聲(傳輸過程當中的信道不理想,他與信號的關係是相乘的,只有信號存在乘性噪聲才存在,通常把乘性的隨機性當作是系統的變性),常聽到的噪聲有白噪聲,高斯噪聲,泊松噪聲,乘性噪聲,椒鹽噪聲。
白噪聲就是在整個頻率內分佈的噪聲git
2D filtering
對圖像作復原就涉及到怎麼樣濾波(去燥)的問題!!算法
對於一維數據作濾波,咱們首先想到的是作滑動平均。學習
滑動平均去燥。滑動的平均窗口中除以9是爲了作歸一化。 cdn
Image filtering
從圖像的左上角開始滑動,切記保持原圖像不變,不要用計算後的值替換原圖像對應位置的值。
Smoothing with box filter Cross-correlation
計算完以後拿到一個比原圖像略小的輸出圖。輸出圖不是那麼的平滑,含有噪聲,由於在頻域裏面咱們用的矩形框濾波在高頻位置是有跳躍的,某些高頻噪聲是能夠經過的,並非一個真正的低頻濾波器。 htm
boxFilter in OpenCV
boxFilter在OpenCV中的兩種實現方式。排序
boxFilter是不用歸一化的,blur是歸一化的 圖片
Convolution in 2D
卷積和滑動平均並不同,能夠從給出的公式中看到用了減號,可是對於一個對稱的boxFilter是沒有影響的。ci
因爲公式中用的是減號,在運算時,從boxFilter的右下角拿值。get
在這個公式中的f它是把原圖像進行了翻轉,可是在實際實現當中咱們不對原圖像翻轉,由於原圖像更大,翻轉的是boxFilter
Filtering vs. Convolution
對於2維的filter咱們稱爲相關(correlation)
卷積運算對於filter是對稱的來講,卷積與相關計算結果是同樣的,只有對那些非對稱的filter,卷積與相關的計算結果是不同的,可是他們的意義是大同小異的。
matlab的實現先對h=filter2(g,f)和h=conv2(g,f)中的g先翻轉180度。
Important filter:Gaussian
這是一種真正的低頻濾波器,高頻是徹底阻斷的,在一維時2πa是有根號的,而二維沒有
Smoothing with Gaussian filter
Practical matters
線性濾波器知足的一些性質,交換律,結合律,還有微分運算。
線性10不變性質系統,兩個濾波器依次對圖像作運算等於先對兩個濾波器作運算再對圖像作運算。這種性質對後面的加速運算效果會很明顯。
注意:上面提到的相關與卷積運算都是一種線性的操做。
Median filter(中值濾波器)
這是個非線性濾波器。
示例:
將羅列出來的數值進行排序,取中間值。
Bilateral filter(雙邊濾波器)是種保邊的濾波器,不但能濾除噪聲還能保證邊緣的陡峭性,效果很好就是會很慢,能夠在線下使用。
還有自適應濾波器等等
Median filter
Summary
docs.opencv.org/2.4/doc/tut…
對圖像加強,去噪,加強對比度方面用的很是多。
數字散斑相關方法
學習這些首先眼界要寬,不只僅侷限於當前最火最熱的話題好比深度學習,使得全部的問題都想着用深度學習來解決,沒有他不行,不是這樣的!!眼界不能這麼狹隘,不少基本方法也可能會解決工業方面的大問題。
登山法,最快降低法,預測算法,根據先後兩個形變位置的關係,縮小搜索的個數,減少計算量。
Edge detection
計算機幾何視覺中的應用
Why do we care about edges?
What Causes an Edge?(邊緣是怎麼產生的)
Image Features -- Edges
灰度的變化過程當中會有一個邊緣的產生,數據不會突變,通常是漸變的過程。
Edge detection(1D)
一維數據,求導取最大值
Digital Approximation of 1st derivatives
求先後兩點的像素差取平均值。
就是用1*3的卷積模版在圖像上進行滑動,獲得的輸出值就df(x)/dx
Edge Detection(2D)
左側圖像強調是豎直方向的邊緣,增大了由黑到白的變化,採用的filter是1/2[-1,0,1],用的水平模版。右側圖像上看到不少水平方向的邊緣,說明咱們拿到的是水平邊緣,用的是豎直模版來濾的波。最右邊的圖表示的是梯度的大小,幅值。
Effects of noise
真實的圖片數據是有噪聲的,直接拿f(x)來作微分的話,獲得的梯度 噪聲是很是大的,沒法找到邊緣的位置。因此在拿到原圖像以後先去噪,再求微分。
Noise cleaning and Edge Detection
先通過一個線性濾波器,例如高斯濾波器。
在豎直方向進行一個去噪,再檢測出豎直方向的邊緣。
示例:
Sobel Edge Detector
對於圖像中心位置給出的權重更大,遠離圖像中心位置給出的權重更小,這樣的一種濾波器也是很經常使用的。
Other Filters
這是檢測一個垂直邊緣。
這是檢測一個水平邊緣。
Robinson Compass Masks
對濾波器進行不一樣的翻轉會獲得不一樣的邊緣。
箭頭表示的是灰度的變化方向,並非邊緣方向。
經過不一樣的mask進行卷積運算,咱們就能夠抽取到圖片中不一樣的某些邊緣信息,再將他們組合起來做爲圖像的某種結果的表達。抽取出來的Robinson信息是能夠做爲圖像的檢索,識別等等操做。
Other edge detectors - second-order derivative filters(1D)
Noise cleaning and Edge Detection
此處能夠看出來對filter對二階導再與原圖像相乘 和 filter*f在求二階導的結果是同樣的,這樣能夠節省不少計算開銷。在二階導爲零的位置獲得邊緣的位置。
Edge Detection(2D)
一階導的幅值大於某個閾值或者二階導數等於0,爲圖像的邊緣。
圖像的拉普拉斯(Laplacian)就是圖像的二階導數。
Notes about the Laplacian
LOG filter濾波器會常常用到。
Image derivatives
圖片上的豎直邊緣能夠對應到右邊數學上的一階導數
右邊是一個梯度幅值的圖像
圖像梯度
梯度的方向
Edge Detection
獲得一些可做爲邊緣的參考點。
how to detect one pixel thin edges ?
咱們獲得的會是一個比較粗的一個邊緣,而咱們但願拿到的是一個像素點。因此涉及到咱們怎樣拿到一個由單一點組成的邊緣。
Non-Maximum Supression
非極大值抑制,在梯度的方向上找到每個位置元素的變化,從而找到局部的最大值,將這樣一個點來做爲咱們的邊緣。
An edge is not a line
不少時候咱們拿到的邊緣並非條直線,若是咱們要檢查的邊緣須要結果是條直線,怎麼作?