圖像處理中濾波和卷積是經常使用到的操做。不少人認爲卷積就是濾波,二者並沒有區別,其實否則。二者在原理上類似,可是在實現的細節上存在一些區別。這篇博文主要敘述這二者之間的區別。ide
一、濾波(或者叫相關)
簡單來講,濾波操做就是圖像對應像素與掩膜(mask)的乘積之和。圖片
好比有一張圖片和一個掩膜,以下圖:圖像處理
那麼像素(i,j)的濾波後結果能夠根據如下公式計算:
其中G(i,j)是圖片中(i,j)位置像素通過濾波後的像素值。原理
當掩膜中心m5位置移動到圖像(i,j)像素位置時,圖像(i,j)位置像素稱爲錨點。im
濾波步驟:img
- 對原始圖像的邊緣進行某種方式的填充(通常爲0填充)。
- 將掩膜劃過整幅圖像,計算圖像中每一個像素點的濾波結果。
依照這個步驟,假設咱們有一個二維矩陣I,掩膜M,則濾波的結果以下:
濾波後的圖像大小不變。
二、卷積
卷積的原理與濾波相似。可是卷積卻有着細小的差異。
卷積操做也是卷積核與圖像對應位置的乘積和。可是卷積操做在作乘積以前,須要先將卷積核翻轉180度,以後再作乘積。
卷積步驟:
- 180度翻轉卷積核。
- 不作邊界填充,直接對圖像進行相應位置乘積和。
從以上步驟能夠看出,若是卷積核不是中心對稱的,那麼卷積和濾波操做將會獲得徹底不同的結果。另外,
卷積操做會改變圖像大小!
因爲卷積操做會致使圖像變小(損失圖像邊緣),因此爲了保證卷積後圖像大小與原圖一致,常常的一種作法是人爲的在卷積操做以前對圖像邊緣進行填充。
最後,關於卷積後圖像尺寸的計算:假設原始圖像爲M*M,卷積核大小爲N*N,邊緣填充像素個數爲pad,步長爲stride。則卷積後圖像的尺寸變爲:m =(M-N+2*pad)/sride+1。