|
導讀Adobe Photoshop,簡稱“PS”,是由Adobe Systems開發和發行的圖像處理軟件。Photoshop主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具,可以有效地進行圖片... Adobe Photoshop,簡稱“PS”,是由Adobe Systems開發和發行的圖像處理軟件。Photoshop主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具,可以有效地進行圖片編輯工作。ps有很多功能,在圖像、圖形、文字、視頻、出版等各方面都有涉及。 最近有感于部分網友對高斯模糊濾鏡的研究,現總結如下。高斯模糊是數字圖像模板處理法的一種。其模板是根據二維正態分布(高斯分布)函數計算出來的。 正態分布最早由A.棣莫弗在求二項分布的漸近公式中得到。C.F.高斯在研究測量誤差時從另一個角度導出了它。P.S.拉普拉斯和高斯研究了它的性質。故名高斯模糊。 一維正態分布的函數定義: 型隨機變量的分布,第一參數μ是遵從正態分布的隨機變量的均值,第二個參數σ2是此隨機變量的方差,所以正態分布記作N(μ,σ2 )。 遵從正態分布的隨機變量的概率規律為取 μ鄰近的值的概率大 ,而取離μ越遠的值的概率越小;σ越小,分布越集中在μ附近,σ越大,分布越分散。正態分布的密度函數的特點是:關于μ對稱,在μ處達到最大值,在正(負)無窮遠處取值為0,在μ±σ處有拐點。它的形狀是中間高兩邊低 ,圖像是一條位于x軸上方的鐘形曲線。當μ=0,σ2 =1時,稱為標準正態分布,記為N(0,1)。 兩個常數的意義:μ-期望,σ^2 方差。 下面我們解決第一個疑問:高斯模糊濾鏡中的半徑是什么?答案是高斯半徑就是公式中的σ。 高斯曲線的圖形和半徑的含義如下圖(來自Adobe SDK中技術支持專家的文檔)所示:
可見高斯半徑(σ)對曲線形狀的影響,σ越小,曲線越高越尖,σ越大,曲線越低越平緩。對二維圖像來說,是一個鐘形曲面,高斯半徑越小,曲面越高越尖越陡峭;高斯半徑越大,曲面越低越平緩。因此高斯半徑越小,則模糊越小,高斯半徑越大,則模糊程度越大。我們將看到ps對高斯半徑的范圍定義是【0.1~250】。當半徑為0.1時,高斯模板在計算后只有中間像素為1,其他像素均=0(實際上只是趨近0),即圖像不會有變化。 第二個疑問,高斯模板大小和高斯半徑的關系?這是一個一直困擾我們的誤解。因為我們的思維進入了物理實現的誤區。在物理實現中,高斯模板有界,從而使我們忽略了這個問題的真正答案:高斯模板在邏輯上是無邊界的。也就是說高斯模板本質上是邏輯上無窮拓展曲面的一個近似。因此,模板大小我們應該認為它是無窮大的。只不過在計算的時候,因為在遠處趨近0,因此在某個閾值之下我們不再考慮這些值,這個閾值就是模板邊界。 下面,二維高斯曲面的公式(x,y代表像素的模板坐標,模板中心位置為原點):
根據這個公式,我們可以計算出不同半徑下的高斯模板,實際上模板是無窮大的,只是在中心較遠處,他們會趨近0.例如,我們計算出r=0.7時的一個歸一化后的高斯模板: 高斯模板(guass radius=0.700000)
在網絡上眾所周知流傳的高斯3*3模板實際上是對高斯曲面的一個整數除法形式的近似: 1 2 1 2 4 2 /16 1 2 1 實際驗證,我們發現這個3*3模板實際上是對高斯半徑約為0.849時的一個近似,當r=0.849時,其3*3歸一模板為(在MATLAB中,輸入h=fspecial('gaussian', 3, 0.849);即可得到這個模板): (guass radius=0.849000) 然后我們可以用Matlab中的imfilter來對圖像進行高斯模糊的處理: img = imread('c:\demo.bmp'); 效果如下: 我們可以在Matlab中用如下語句繪制高斯曲面: 繪制高斯曲面的Matlab代碼 效果如下圖: 在數字信號處理中,高斯模糊算法是一種濾波器,它的時域和頻域曲線如下所示: 從頻域曲線看出,高斯模糊本質上一種低通濾波器。體現在圖像處理上,圖像的邊緣等灰度變化劇烈的地方對應高頻信息,將被濾除。 最后,我們給出計算高斯模糊模板的C語言代碼,請注意,由于高斯模板是對稱的,實際上我們只需要計算出大約1/4模板即可。但這里的代碼我們沒有做這樣的優化。我們輸出的模板是(2*N+1)*(2N+1),高斯半徑用r表示。 計算高斯模板 同時,作為比較,我們給出在Matlab中生成高斯模板的代碼(fspecial的代碼局部,其中p3是第三個參數即高斯半徑): case 'gaussian' % Gaussian filter
siz = (p2-1)/2; %注:p2即模板邊長,默認值為33
std = p3; %注:p3即高斯半徑,默認為為0.5
[x,y] = meshgrid(-siz(2):siz(2),-siz(1):siz(1));
arg = -(x.*x + y.*y)/(2*std*std);
h = exp(arg);
h(h<eps*max(h(:))) = 0;
sumh = sum(h(:)); %注:模板歸一化
if sumh ~= 0,
h = h/sumh;
end;更多對Photoshop高斯模糊濾鏡的算法總結相關文章請關注PHP中文網! Photoshop默認保存的文件格式,可以保留所有有圖層、色版、通道、蒙版、路徑、未柵格化文字以及圖層樣式等。 |
溫馨提示:喜歡本站的話,請收藏一下本站!