空间域滤波及matlab实现

空间域滤波的理解:
就是基于邻域(在图像坐标)下,利用模板,对图像中像素执行运算,用得到新的像素值代替原来像素值的处理方法。
过程:模板中心和图像点(x,y)重合,模板在图像中依次移动,根据模板具体内容运算出处理后图的像素值。
区分:相关滤波和卷积滤波,卷积滤波的模板是相关滤波模板的中心镜像。
matlab实现:
clear
I=imread(‘coins.png’);
I=imnoise(I,’gaussian’);
[m,n]=size(I);
J=zeros(m+2,n+2);%临时存贮
K=zeros(m+2,n+2);%输出图像
J(2:m+1,2:n+1)=I(1:m,1:n);
%加墙
J(2:m+1,1)=I(1:m,1);%LEFT
J(2:m+1,n+2)=I(1:m,n);%RIGHT
J(1,1:n+2)=J(2,1:n+2);%UP
J(m+2,1:n+2)=J(m+1,1:n+2);%DOWN
%高斯滤波模板
h=[1 2 1;2 4 2 ;1 2 1 ];
coef=1/16;
[MBH,MBL]=size(h);
%滤波运算
for i=2:m+1
for j=2:n+1
%(i,j)为模板中心
result=0;
for k=1:MBH
for l=1:MBL
result=result+h(k,l)*J(i+k-2,j+l-2);%新像素值
end
end
result=uint8(result*coef);
K(i,j)=result;
end
end
J=K(2:m+1,2:n+1);
subplot(131)
imshow(J,[0,255]);
subplot(132)
imshow(I)
subplot(133)
imshow(imfilter(I,fspecial(‘gaussian’,3,0.8)))

这里写图片描述
注意:可以看到,自己的程序与matlab自带函数处理效果有些许差别,原因在于高斯滤波器模板数值不同。
因此,通过自己设计高斯滤波器设计,与matlab相比较:

%高斯滤波器:利用高斯函数离散化
m=input('模板尺寸');        %高斯模板尺寸
thgma=input('方差');
k=(m-1)/2;
for i=1:m
    for j=1:m
M(i,j)=(1/(2*pi*thgma*thgma))*exp(-((i-k-1)^2+(j-k-1)^2)/(2*thgma*thgma));%模板元素
    end
end

这里写图片描述

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值