資源簡介
MATLAB編寫的常用濾波器算法,實現(xiàn)圖像平滑
代碼片段和文件信息
%自編的均值濾波函數(shù)。x是需要濾波的圖像n是模板大小(即n×n)
function?d=avefilt(xn)???
a(1:n1:n)=1;???%a即n×n模板元素全是1
p=size(x);???%輸入圖像是p×q的且p>nq>n
x1=double(x);
x2=x1;
%A(a:bc:d)表示A矩陣的第a到b行第c到d列的所有元素
for?i=1:p(1)-n+1
????for?j=1:p(2)-n+1
????????c=x1(i:i+(n-1)j:j+(n-1)).*a;?%取出x1中從(ij)開始的n行n列元素與模板相乘
????????s=sum(sum(c));?????????????????%求c矩陣(即模板)中各元素之和
????????x2(i+(n-1)/2j+(n-1)/2)=s/(n*n);?%將模板各元素的均值賦給模板中心位置的元素
????end
end
%未被賦值的元素取原值
d=uint8(x2);
%自編的中值濾波函數(shù)。x是需要濾波的圖像n是模板大小(即n×n)
function?d=midfilt(xn)???
p=size(x);???%輸入圖像是p×q的且p>nq>n
x1=double(x);
x2=x1;
for?i=1:p(1)-n+1
????for?j=1:p(2)-n+1
????????c=x1(i:i+(n-1)j:j+(n-1));?%取出x1中從(ij)開始的n行n列元素即模板(n×n的)
????????e=c(1:);??????%是c矩陣的第一行
????????for?u=2:n
????????????e=[ec(u:)];?????%將c矩陣變?yōu)橐粋€行矩陣????
????????end
?
評論
共有 條評論