圖像卷積和濾波運算(高斯濾波模闆)
高斯函數在圖像增強中起到什麼作用,麻煩具體點,就比如傅立葉變化在圖像增強中可以有去除噪聲的作用
主要是平滑圖像~~~
高斯函數具有五個重要的性質,這些性質使得它在早期圖像進行中特别有用.這些性質表明,高斯平滑濾波器無論在空間域還是在頻率域都是十分有效的低通濾波器,且在實際圖像進行中得到了工程人員的有效使用.高斯函數具有五個十分重要的性質,它們是:
(1)二維高斯函數具有旋轉對稱性,即濾波器在各個方向上的平滑程度是相同的.一般來說,一幅圖像的邊緣方向是事先不知道的,是以,在濾波前是無法确定一個方向上比另一方向上需要更多的平滑.旋轉對稱性意味着高斯平滑濾波器在後續邊緣檢測中不會偏向任一方向.
(2)高斯函數是單值函數.這表明,高斯濾波器用像素鄰域的權重均值來代替該點的像素值,而每一鄰域像素點權值是随該點與中心點的距離單調增減的.這一性質是很重要的,因為邊緣是一種圖像局部特征,如果平滑運算對離算子中心很遠的像素點仍然有很大作用,則平滑運算會使圖像失真.
(3)高斯函數的付立葉變換頻譜是單瓣的.正如下面所示,這一性質是高斯函數付立葉變換等于高斯函數本身這一事實的直接推論.圖像常被不希望的高頻信号所污染(噪聲和細紋理).而所希望的圖像特征(如邊緣),既含有低頻分量,又含有高頻分量.高斯函數付立葉變換的單瓣意味着平滑圖像不會被不需要的高頻信号所污染,同時保留了大部分所需信号.
(4)高斯濾波器寬度(決定着平滑程度)是由參數σ表征的,而且σ和平滑程度的關系是非常簡單的.σ越大,高斯濾波器的頻帶就越寬,平滑程度就越好.通過調節平滑程度參數σ,可在圖像特征過分模糊(過平滑)與平滑圖像中由于噪聲和細紋理所引起的過多的不希望突變量(欠平滑)之間取得折衷.
(5)由于高斯函數的可分離性,大高斯濾波器可以得以有效地實作.二維高斯函數卷積可以分兩步來進行,首先将圖像與一維高斯函數進行卷積,然後将卷積結果與方向垂直的相同一維高斯函數卷積.是以,二維高斯濾波的計算量随濾波模闆寬度成線性增長而不是成平方增長.
什麼叫濾波:用白話講就是,一個電信号中有若幹種成分,把其中一部分交流信号過濾掉就叫濾波。
卷積和濾波的差別:在數字信号處理的理論中,卷給可以說是一種數學運算,而濾波是一種信号處理的方法。卷積就像權重乘法一樣,你能說濾波和權重乘法是一樣的嗎,顯然不行;但是濾波最終是有乘法來實作的。
自适應濾波就是濾波所用的模闆系數會根據圖像不同位置自動調整。
中值濾波(median filter)簡單的說就是:一個窗(window)中心的象素值就是這個窗包含的象素中處于中間位置的象素值。
均值濾波(mean filter)就是一個窗中心的象素值就是這個窗包含的象素的平均值。
空間頻率主要是指圖像的平滑或粗糙程度。一般可認為,高空間頻率區域稱“粗糙”,即圖像的亮度值在小範圍内變化很大,而“平滑”區,圖像的亮度值變化相對較小,如平滑的水體表面等。低通濾波主要用于加強圖像中的低頻成分,減弱高頻成分,而高通濾波則正好相反,加強高頻細節,減弱低頻細節,簡單地講:高通濾波處理過的圖像更加“粗糙”。高通濾波顧名思義就是讓頻率高的通過,使圖像具有銳化效果;低通濾波則恰好相反了,它是使低頻通過,使圖像具有平滑的效果。
?模闆的定義 –所謂模闆就是一個系數矩陣 –模闆大小:經常是奇數,如: 3x3 5x5 7x7 –模闆系數: 矩陣的元素 w1 w2 w3 w4 w5 w6 w7 w8 w9
空域過濾及過濾器的定義:使用空域模闆進行的圖像處理,被稱為空域過濾。
w1 w2 w3 w4 w5 w6 w7 w8 w9
模闆本身被稱為空域過濾器
空域過濾器的分類
按效果分:鈍化過濾器,銳化過濾器
按數學形态分類
1,線性過濾器:使用乘積和的計算,例如:R = w1z1 + w2z2 + … + wnzn
高通:邊緣增強、邊緣提取
低通:鈍化圖像、去除噪音
帶通:删除特定頻率、增強中很少用
2,非線性過濾器:結果值直接取決于像素鄰域的值
最大值:尋找最亮點,亮化圖檔
最小值:尋找最暗點,暗化圖檔
中值:鈍化圖像、去除噪音
鈍化過濾器的主要用途
1,對大圖像處理前,删去無用的細小細節
2,連接配接中斷的線段和曲線
3,降低噪音
4,鈍化處理,恢複過分銳化的圖像
5,圖像創藝(陰影、軟邊、朦胧效果)
缺點:
如果圖像處理的目的是去除噪音,那麼,低通濾波在去除噪音的同時也鈍化了邊和尖銳的細節,但是中值濾波算法的特點:在去除噪音的同時,可以比較好地保留邊的銳度和圖像的細節銳化過濾器的主要用途
1,印刷中的細微層次強調。彌補掃描、挂網對圖像的鈍化
2,超聲探測成象,分辨率低,邊緣模糊,通過銳化來改善
3,圖像識别中,分割前的邊緣提取
4,銳化處理恢複過度鈍化、暴光不足的圖像
5,圖像創藝(隻剩下邊界的特殊圖像)
6,尖端武器的目辨別别、定位
過濾器效果的分析
1,常數或變化平緩的區域,結果為0或很小,圖像很暗,亮度被降低了
2,在暗的背景上邊緣被增強了
3,圖像的整體對比度降低了
4,計算時會出現負值,歸0處理為常見
基本高通空域濾波的缺點和問題
高通濾波在增強了邊的同時,丢失了圖像的層次和亮度
對圖像的小波變換在Matlab中實作的實質是不是用一塊模闆在圖像上作卷積。
遇到這樣的問題,Atrous小波變換中是用一個模闆在圖像上進行卷積可以得到小波平面,以及低頻分量。
那麼其他的小波變換呢?
Matlab上有許多現成的小波變換函數以及小波函數,但是我對其中的原理不了解。 如Mallat小波,db小波,對圖像進行分解時,是不是也是由一個模闆在圖像上進行卷積呢,要不如何處理呢?
沒錯,小波變換實際就是用模闆和信号進行卷積,隻不過在做小波變換的時候一般至少需要兩個模闆,一個是充當低通分解濾波器的模闆,一個是充當高通分解濾波器的模闆(對于MALLAT 和ZHONG的二進小波變換還需要另外兩個濾波器),在Atrous小波變換中,還需要在每級小波變換後對模闆進行插0操作。在對圖像進行小波變換的時候要分别對行和列進行操作(當然了你要是變成矩陣運算的話就不需要分别對行和列進行操作了)
高斯濾波是一種線性平滑濾波,适用于消除高斯噪聲,廣泛應用于圖像處理的減噪過程。關于高斯濾波的數學原理說明可以從文章底部的參考資料中獲得。
通俗的講,高斯濾波就是對整幅圖像進行權重平均的過程,每一個像素點的值,都由其本身和鄰域内的其他像素值經過權重平均後得到。
高斯濾波的具體操作是:用一個模闆(或稱卷積、掩模)掃描圖像中的每一個像素,用模闆确定的鄰域内像素的權重平均灰階值去替代模闆中心像素點的值。
一般的模闆為3×3或5×5大小,其權值分布如下圖:
若使用3×3模闆,則計算公式如下:
g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y-1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16;
其中,f(x,y)為圖像中(x,y)點的灰階值,g(x,y)為該點經過高斯濾波後的值。
高斯濾波可以在頻域和空間域實作,在頻域的處理方法是将圖像通過傅立葉變換後轉換到頻域,變換後的圖像與高斯濾波器相乘然後利用傅立葉反變換轉換回空間域得到濾波後的圖像,我是利用lpfilter函數生成高斯濾波器的,這在我昨天貼出的代碼裡沒有給出,是我疏忽了。 空間濾波的方法是生成高斯卷積模闆,通過模闆與圖像進行卷積的過程實作對圖像的濾波過程,這在matlab中是利用imfilter實作的。 我的問題是希望将頻率濾波方法轉換成空間濾波方法得到同樣的效果。現在問題已經解決了,是因為我忽略了高斯函數在傅立葉變換前後盡管形式相同,但标準差發生了變化,即原來的高斯函數越寬(标準差越大),變換後的高斯函數就越窄(标準差越小),是以sigma不應使用相同的值來生成高斯濾波器。
1 圖像濾波的基本概念
圖像常常被強度随機信号(也稱為噪聲)所污染.一些常見的噪聲有椒鹽(Salt & Pepper)噪聲、脈沖噪聲、高斯噪聲等.椒鹽噪聲含有随機出現的黑白強度值.而脈沖噪聲則隻含有随機的白強度值(正脈沖噪聲)或黑強度值(負脈沖噪聲).與前兩者不同,高斯噪聲含有強度服從高斯或正态分布的噪聲.研究濾波就是為了消除噪聲幹擾。
圖像濾波總體上講包括空域濾波和頻域濾波。頻率濾波需要先進行傅立葉變換至頻域處理然後再反變換回空間域還原圖像,空域濾波是直接對圖像的資料做空間變換達到濾波的目的。它是一種鄰域運算,即輸出圖像中任何像素的值都是通過采用一定的算法,根據輸入圖像中對用像素周圍一定鄰域内像素的值得來的。如果輸出像素是輸入像素鄰域像素的線性組合則稱為線性濾波(例如最常見的均值濾波和高斯濾波),否則為非線性濾波(中值濾波、邊緣保持濾波等)。
線性平滑濾波器去除高斯噪聲的效果很好,且在大多數情況下,對其它類型的噪聲也有很好的效果。線性濾波器使用連續窗函數内像素權重和來實作濾波。特别典型的是,同一模式的權重因子可以作用在每一個視窗内,也就意味着線性濾波器是空間不變的,這樣就可以使用卷積模闆來實作濾波。如果圖像的不同部分使用不同的濾波權重因子,且仍然可以用濾波器完成權重運算,那麼線性濾波器就是空間可變的。任何不是像素權重運算的濾波器都屬于非線性濾波器.非線性濾波器也可以是空間不變的,也就是說,在圖像的任何位置上可以進行相同的運算而不考慮圖像位置或空間的變化。
2 圖像濾波的計算過程分析
濾波通常是用卷積或者相關來描述,而線性濾波一般是通過卷積來描述的。他們非常類似,但是還是會有不同。下面我們來根據相關和卷積計算過程來體會一下他們的具體差別:
卷積的計算步驟:
(1) 卷積核繞自己的核心元素順時針旋轉180度
(2) 移動卷積核的中心元素,使它位于輸入圖像待處理像素的正上方
(3) 在旋轉後的卷積核中,将輸入圖像的像素值作為權重相乘
(4) 第三步各結果的和做為該輸入像素對應的輸出像素
相關的計算步驟:
(1)移動相關核的中心元素,使它位于輸入圖像待處理像素的正上方
(2)将輸入圖像的像素值作為權重,乘以相關核
(3)将上面各步得到的結果相加做為輸出
可以看出他們的主要差別在于計算卷積的時候,卷積核要先做旋轉。而計算相關過程中不需要旋轉相關核。
例如: magic(3) =[8 1 6;3 5 7;4 9 2],旋轉180度後就成了[2 9 4;7 5 3;6 1 8]
三 高斯平滑濾波器的設計
高斯函數的最佳逼近由二項式展開的系數決定,換句話說,用楊輝三角形(也稱Pascal三角形)的第n行作為高斯濾波器的一個具有n個點的一維逼近,例如,五點逼近為:
1 4 6 4 1
它們對應于Pascal三角形的第5行.這一模闆被用來在水準方向上平滑圖像.在高斯函數可分離性性質中曾指出,二維高斯濾波器能用兩個一維高斯濾波器逐次卷積來實作,一個沿水準方向,一個沿垂直方向.實際中,這種運算可以通過使用單個一維高斯模闆,對兩次卷積之間的圖像和最後卷積的結果圖像進行轉置來完成.
這一技術在模闆尺寸N約為10時的濾波效果極好.對較大的濾波器,二項式展開系數對大多數計算機來說都太多.但是,任意大的高斯濾波器都能通過重複使用小高斯濾波器來實作.高斯濾波器的二項式逼近的σ可用高斯函數拟合二項式系數的最小方差來計算.
設計高斯濾波器的另一途徑是直接從離散高斯分布中計算模闆權值。為了計算友善,一般希望濾波器權值是整數。在模闆的一個角點處取一個值,并選擇一個K使該角點處值為1。通過這個系數可以使濾波器整數化,由于整數化後的模闆權值之和不等于1,為了保證圖像的均勻灰階區域不受影響,必須對濾波模闆進行權值規範化。
高斯濾波器的采樣值或者高斯濾波器的二項式展開系數可以形成離散高斯濾波器.當用離散高斯濾波器進行卷積時,其結果是一個更大的高斯離散濾波器.若一幅圖像用N*N離散高斯濾波器進行平滑,接着再用M*M離散高斯濾波器平滑的話,那麼平滑結果就和用(N+M-1)*(N+M-1)離散高斯濾波器平滑的結果一樣.換言之,在楊輝三角形中用第N行和第M行卷積形成了第N+M-1行.
四 使用高斯濾波器進行圖像的平滑
如果适應卷積運算對圖像進行濾波,在matlab中可以通過2個不同的函數來實作conv2和imfliter。他們的調用方式如下:
Img_n = conv2(Img,g,'same'); 和
Img_n = imfilter(Img,g,'conv');
這兩種函數處理的結果是完全一樣的。
imfiler函數在預設的情況下,對圖像的濾波計算用的是相關
Img_n = imfilter(Img,g);%使用相關運算濾波
下面是一個簡單的例子展示了使用相同的高斯濾波核函數,相關運算和卷積運算對圖像平滑的效果可以直接後邊附的程式檢視。
由結果可以看出相關運算和卷積運算的在用于圖像平滑濾波時效果差别不大。當模闆大小N>50的時候。邊界的系數已經非常小,對運算起到的作用和微乎其微,是以平滑的結果差别已經非常細微,肉眼幾乎難以察覺。
example.m
clear all
I = imread('lena.bmp');
Img = double(I);
alf=3;
n=10;%定義模闆大小
n1=floor((n+1)/2);%計算中心
for i=1:n
for j=1:n
b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf))/(4*pi*alf);
end
end
Img_n = uint8(conv2(Img,b,'same'));
K=uint8(imfilter(Img,b));
Img_n2=uint8(imfilter(Img,b,'conv'));
J=(Img_n2)-Img_n;
flag=mean(J(:))
subplot(131),imshow(I);title('原圖')
subplot(132),imshow(Img_n);title('卷積運算圖')
subplot(133),imshow(K);title('相關運算圖')
figure(2),surf(b);
http://sunnysnow2004.blog.163.com/blog/static/5282482420085184017571/
高斯核函數在圖像濾波中的應用
高斯(核)函數簡介
1函數的基本概念
所謂徑向基函數 (Radial Basis Function 簡稱 RBF), 就是某種沿徑向對稱的标量函數。 通常定義為空間中任一點x到某一中心xc之間歐氏距離的單調函數 , 可記作 k(||x-xc||), 其作用往往是局部的 , 即當x遠離xc時函數取值很小。最常用的徑向基函數是高斯核函數 ,形式為 k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 其中xc為核函數中心,σ為函數的寬度參數 , 控制了函數的徑向作用範圍。
高斯函數具有五個重要的性質,這些性質使得它在早期圖像進行中特别有用.這些性質表明,高斯平滑濾波器無論在空間域還是在頻率域都是十分有效的低通濾波器,且在實際圖像進行中得到了工程人員的有效使用.高斯函數具有五個十分重要的性質,它們是:
(1)二維高斯函數具有旋轉對稱性,即濾波器在各個方向上的平滑程度是相同的.一般來說,一幅圖像的邊緣方向是事先不知道的,是以,在濾波前是無法确定一個方向上比另一方向上需要更多的平滑.旋轉對稱性意味着高斯平滑濾波器在後續邊緣檢測中不會偏向任一方向.
(2)高斯函數是單值函數.這表明,高斯濾波器用像素鄰域的權重均值來代替該點的像素值,而每一鄰域像素點權值是随該點與中心點的距離單調增減的.這一性質是很重要的,因為邊緣是一種圖像局部特征,如果平滑運算對離算子中心很遠的像素點仍然有很大作用,則平滑運算會使圖像失真.
(3)高斯函數的付立葉變換頻譜是單瓣的.正如下面所示,這一性質是高斯函數付立葉變換等于高斯函數本身這一事實的直接推論.圖像常被不希望的高頻信号所污染(噪聲和細紋理).而所希望的圖像特征(如邊緣),既含有低頻分量,又含有高頻分量.高斯函數付立葉變換的單瓣意味着平滑圖像不會被不需要的高頻信号所污染,同時保留了大部分所需信号.
(4)高斯濾波器寬度(決定着平滑程度)是由參數σ表征的,而且σ和平滑程度的關系是非常簡單的.σ越大,高斯濾波器的頻帶就越寬,平滑程度就越好.通過調節平滑程度參數σ,可在圖像特征過分模糊(過平滑)與平滑圖像中由于噪聲和細紋理所引起的過多的不希望突變量(欠平滑)之間取得折衷.
(5)由于高斯函數的可分離性,大高斯濾波器可以得以有效地實作.二維高斯函數卷積可以分兩步來進行,首先将圖像與一維高斯函數進行卷積,然後将卷積結果與方向垂直的相同一維高斯函數卷積.是以,二維高斯濾波的計算量随濾波模闆寬度成線性增長而不是成平方增長.
2函數的表達式和圖形
在這裡編輯公式很麻煩,是以這裡就略去了。可以參看相關的書籍,僅給出matlab繪圖的代碼
alf=3;
n=7;%定義模闆大小
n1=floor((n+1)/2);%确定中心
for i=1:n
a(i)= exp(-((i-n1).^2)/(2*alf^2));
for j=1:n
b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf))/(4*pi*alf);
end
end
subplot(121),plot(a),title('一維高斯函數' )
subplot(122),surf(b),title('二維高斯函數' )
二 圖像濾波
1 圖像濾波的基本概念
圖像常常被強度随機信号(也稱為噪聲)所污染.一些常見的噪聲有椒鹽(Salt & Pepper)噪聲、脈沖噪聲、高斯噪聲等.椒鹽噪聲含有随機出現的黑白強度值.而脈沖噪聲則隻含有随機的白強度值(正脈沖噪聲)或黑強度值(負脈沖噪聲).與前兩者不同,高斯噪聲含有強度服從高斯或正态分布的噪聲.研究濾波就是為了消除噪聲幹擾。
圖像濾波總體上講包括空域濾波和頻域濾波。頻率濾波需要先進行傅立葉變換至頻域處理然後再反變換回空間域還原圖像,空域濾波是直接對圖像的資料做空間變換達到濾波的目的。它是一種鄰域運算,即輸出圖像中任何像素的值都是通過采用一定的算法,根據輸入圖像中對用像素周圍一定鄰域内像素的值得來的。如果輸出像素是輸入像素鄰域像素的線性組合則稱為線性濾波(例如最常見的均值濾波和高斯濾波),否則為非線性濾波(中值濾波、邊緣保持濾波等)。
線性平滑濾波器去除高斯噪聲的效果很好,且在大多數情況下,對其它類型的噪聲也有很好的效果。線性濾波器使用連續窗函數内像素權重和來實作濾波。特别典型的是,同一模式的權重因子可以作用在每一個視窗内,也就意味着線性濾波器是空間不變的,這樣就可以使用卷積模闆來實作濾波。如果圖像的不同部分使用不同的濾波權重因子,且仍然可以用濾波器完成權重運算,那麼線性濾波器就是空間可變的。任何不是像素權重運算的濾波器都屬于非線性濾波器.非線性濾波器也可以是空間不變的,也就是說,在圖像的任何位置上可以進行相同的運算而不考慮圖像位置或空間的變化。
2 圖像濾波的計算過程分析
濾波通常是用卷積或者相關來描述,而線性濾波一般是通過卷積來描述的。他們非常類似,但是還是會有不同。下面我們來根據相關和卷積計算過程來體會一下他們的具體差別:
卷積的計算步驟:
(1) 卷積核繞自己的核心元素順時針旋轉180度
(2) 移動卷積核的中心元素,使它位于輸入圖像待處理像素的正上方
(3) 在旋轉後的卷積核中,将輸入圖像的像素值作為權重相乘
(4) 第三步各結果的和做為該輸入像素對應的輸出像素
相關的計算步驟:
(1)移動相關核的中心元素,使它位于輸入圖像待處理像素的正上方
(2)将輸入圖像的像素值作為權重,乘以相關核
(3)将上面各步得到的結果相加做為輸出
可以看出他們的主要差別在于計算卷積的時候,卷積核要先做旋轉。而計算相關過程中不需要旋轉相關核。
例如: magic(3) =[8 1 6;3 5 7;4 9 2],旋轉180度後就成了[2 9 4;7 5 3;6 1 8]