虽然 matlab 里面有这些函数,但是要求自己编写,计算机视觉上有这
个实验,是别人编写的。别人到网上找了半天才零散的找到一些碎片,
整理以后发上来的!
MatLab 自编的均值滤波、中值滤波、高斯滤波 图像处理函数。
%自编的均值滤波函数。x 是需要滤波的图像,n 是模板大小(即 n×n)
function d=avefilt(x,n)
a(1:n,1:n)=1; %a 即 n×n 模板,元素全是 1
p=size(x); %输入图像是 p×q 的,且 p>n,q>n
x1=double(x);
x2=x1;
%A(a:b,c: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 中从(i,j)开始的 n 行 n 列元素
与模板相乘
s=sum(sum(c)); %求 c 矩阵(即模板)中各元素之和
x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将模板各元素的均值赋给模板中
心位置的元素
end
end
%未被赋值的元素取原值
d=uint8(x2);
%自编的中值滤波函数。x 是需要滤波的图像,n 是模板大小(即 n×n)
function d=midfilt(x,n)
p=size(x); %输入图像是 p×q 的,且 p>n,q>n
x1=double(x);
评论0