課程學習 雙邊濾波

2021-09-18 07:08:51 字數 1283 閱讀 5893

matlab:c語言邏輯實現雙邊濾波。

r=10; %模板半徑

imgn=zeros(m+2*r+1,n+2*r+1);

imgn(r+1:m+r,r+1:n+r)=img(1:m,1:n);

imgn(1:r,r+1:n+r)=img(1:r,1:n); %擴充套件上邊界

imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r); %擴充套件右邊界

imgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1); %擴充套件下邊界

imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r); %擴充套件左邊界

sigma_d=2;

sigma_r=0.1;

[x,y] = meshgrid(-r:r,-r:r);

w1=exp(-(x.^2+y.^2)/(2*sigma_d^2)); %以距離作為自變數高斯濾波器

h=waitbar(0,'wait...');

for i=r+1:m+r

for j=r+1:n+r

w2=exp(-(imgn(i-r:i+r,j-r:j+r)-imgn(i,j)).^2/(2*sigma_r^2)); %以周圍和當前畫素灰度差值作為自變數的高斯濾波器

w=w1.*w2;

s=imgn(i-r:i+r,j-r:j+r).*w;

imgn(i,j)=sum(sum(s))/sum(sum(w));

endwaitbar(i/m);

endclose(h)

figure;

imshow(mat2gray(imgn(r+1:m+r,r+1:n+r)));

結果:

少年不被樓層誤,餘生不羈盡自由。

加油,加油!

雙邊濾波(Bilateral filter)

強大的雙邊濾波器可平滑平坦區域,同時保持邊緣銳化。因此,它可作為乙個自動的 化或圖畫濾波器,其缺點是效率低 即該濾波器執行的時間要按秒,甚至分鐘而不是毫秒來計算 那麼如何 化一副影象時,還可接受其執行時間。最重要的技巧就是在低解析度下使用雙邊濾波,這會得到與高解析度下相似的效果,但執行速度更快。可將...

雙邊濾波(Bilateral filter)

雙邊濾波器 bilateral filter 是一種可以保邊去噪的濾波器。可以濾除影象資料中的雜訊,且還會保留住影象的邊緣 紋理等 因雜訊是高頻訊號,邊緣 紋理也是高頻資訊,高斯濾波會在濾除雜訊的同時使得邊緣模糊 那這麼優秀的乙個濾波器,他到底是個什麼呢,其實,它和我們普通的高斯濾波器一樣,也是使用...

雙邊濾波bilateralFilter

雙邊濾波是一種非線性的濾波方法,是結合影象的空間鄰近度和畫素值相似度的一種折衷處理,同時考慮空間與資訊和灰度相似性,達到保邊去噪的目的,具有簡單 非迭代 區域性處理的特點。之所以能夠達到保邊去噪的濾波效果是因為濾波器由兩個函式構成 乙個函式是由幾何空間距離決定濾波器係數,另乙個是由畫素差值決定濾波器...