子函式**:
%symmetricnearmean.m
function [y]=symmetricnearmean(x,a,b)
y=x;
[m,n]=size(x);
n=(a-1)/2;
m=zeros( 1,2*n*(n+1) );
for i=3:m-2
for j=3:n-2
k=1;
for i1=1:n
for j1=-n:n
if j1 == 0
continue;
else
if abs( x(i,j)-x(i-i1,j-j1) ) < abs( x(i,j)-x(i+i1,j+j1) )
m(1,k)=x(i-i1,j-j1);
else
m(1,k)=x(i+i1,j+j1);
endend
k=k+1;
endend
%%結束時四個象限內的對稱點已經全部找出:一共2n*n對,只要把十字架形狀的對稱點再找出就行,共有2*n個
for i1= 0
for j1=1:n
if abs( x(i,j)-x(i-i1,j-j1) ) < abs( x(i,j)-x(i+i1,j+j1) )
m(1,k)=x(i-i1,j-j1);
else
m(1,k)=x(i+i1,j+j1);
endk=k+1;
endend
%%結束時十字架形狀的對稱縱軸對稱點都找出,共有2*n個,現在只要把橫軸對稱點找出就行,一共有2*n個
for j1= 0
for i1=1:n
if abs( x(i,j)-x(i-i1,j-j1) ) < abs( x(i,j)-x(i+i1,j+j1) )
m(1,k)=x(i-i1,j-j1);
else
m(1,k)=x(i+i1,j+j1);
endk=k+1;
endend
%%此時,2n*n+2*n對 對稱點對應的2n*n+2*n個資料都在矩陣m中,求其均值就行
y(i,j)=mean(m);
endend
主函式:
%%確定乙個(2n+1)*(2n+1)的模板,該演算法找出與核心畫素灰度值接近的2n*(n+1)個畫素,再求這2n*(n+1)個畫素的均值代替原來中心點的灰度值
%%第一種演算法在保持邊緣和細節較第二種演算法要好很多,當然第一種演算法在去噪方面不如第二種
l=symmetricnearmean(j,5,5);%灰度最小方差的均值濾波器
m=commonfilt2(j,5,5);%自己編寫的均或中值濾波方法
subplot(1,2,1),imshow( uint8(l) ),title('對稱近鄰均值濾波');
subplot(1,2,2),imshow( uint8(m)),title('自己編寫的5*5均值濾波');
%2 計算三種演算法的峰值訊雜比
b=8; %編碼乙個畫素用多少二進位制位
max=2^b-1; %影象有多少灰度級
i=double(i);
l=double(l);
m=double(m);
% psnr1 = 19.7389
mes1=sum(sum((i-l).^2))/(e*f);
psnr1=20*log10(max/sqrt(mes1));
% psnr2 = 22.7301
mes2=sum(sum((i-m).^2))/(e*f);
psnr2=20*log10(max/sqrt(mes2));
中值濾波VS 均值濾波
如果不是演算法中用到了median filter,恐怕我還不沒有意識到這兩個有聯絡又有區別的概念。中值濾波是median filter,均值濾波是mean filter,二者的用途也很接近,就是把訊號抹平,消除雜訊。不過區別還是有的,後面再說。如果把他們兩個放在一起,看到名字就大概能猜出二者的不同,...
中值濾波與均值濾波
中值濾波法 是一種非線性平滑技術,它將每一畫素點的灰度值設定為該點某鄰域視窗內的所有畫素點灰度值的中值.中值濾波是基於排序統計理論的一種能有效抑制雜訊的非線性訊號處理技術,中值濾波的基本原理是把數字影象或數字序列中一點的值用該點的乙個鄰域中各點值的中值代替,讓周圍的畫素值接近的真實值,從而消除孤立的...
均值濾波器3 3模板 均值濾波器
介紹 均值濾波器屬於低通濾波器 輸出為模板內領域畫素的簡單平均值 主要用於影象的模糊和降噪,去除尖銳部分,比濾波器模板尺寸小的畫素區域將會過濾掉 與此同時,邊緣也會被平滑 模糊。算術均值濾波器 可以去除均勻雜訊和高斯雜訊,但會對影象造成一定程度的模糊。盒狀濾波器box filter 濾波器的模板的所...