• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-01-11
  • 语言: Matlab
  • 标签: MATLAB代码  

资源简介

MATLAB编写的常用滤波器算法,实现图像平滑

资源截图

代码片段和文件信息

%自编的均值滤波函数。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);

%自编的中值滤波函数。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矩阵变为一个行矩阵    
        end
 

评论

共有 条评论