matlab将一个数组中的元素转换为整型_MATLAB中的图像变换之线性空间滤波

点击蓝字

关注我们

cd8cb337a96179f7261fd2ee68035cc8.png

图像滤波是图像处理中重点的方式,它包括空间域滤波和频率域滤波,空间域滤波的应用通常体现在以下两个方面:

0c917e2f1260523aee5735f9cbc9a40b.png

下面是空间滤波处理后的图像与原图像的对比:

d8362d668c03c3d67e85b1a68dbc988d.png

凡是使用空间模板进行的图像处理,我们就定义为空间滤波,模板本身被称为空间滤波器。

图像的空域线性滤波和非线性滤波在空域对图像进行滤波处理无非两种情况:线性滤波和非线性滤波。滤波的意思就是对原图像的每个像素周围一定范围内的像素进行运算,运算的范围就称为掩膜或领域。而运算就分两种了,如果运算只是对各像素灰度值进行简单处理(如乘一个权值)最后求和,就称为线性滤波;而如果对像素灰度值的运算比较复杂,而不是最后求和的简单运算,则是非线性滤波;如求一个像素周围3x3范围内最大值、最小值、中值等操作都不是简单的加权,都属于非线性滤波。

一言以蔽之,区分线性滤波还是非线性滤波,主要依据是是否进行非线性运算,比如说,均值计算很明显是线性运算,所以均值滤波是线性滤波。

006be16a4d6bcace6d8539e6ccaafcf1.png 76973fdeaebb005802351898da6cc058.gif

下面我们进行系统的学习:

 一、

imfilter函数

imfilter函数是用来实现线性空间滤波的主体函数,它基本的语法是:

g = imfilter(f, w,' replicate');

其中,f是输入图象,w为滤波掩模,g为滤波结果replicate为imfilter函数的选项,具体选项类型见下表:

54e09e25fd8e7a4e6ed0dded26d42cf3.png

 二、

线性空间滤波实践

题目:使用函数imfilter实现拉普拉斯滤波器

我们用一副火星表面的图象进行操作:

cd8cb337a96179f7261fd2ee68035cc8.png

01

读取图像并转化为灰度图。

I=imread('hx.jpg');   %读入图像
figure
subplot(2,3,1);     %在窗口中排列图像
imshow(I)     %X显示图像
title('原始图像');      %赋标题
J=rgb2gray(I);     %转化为灰度图
subplot(2,3,2);
imshow(J);
title('原图像灰度图');

02

创建拉普拉斯滤波器并直接进行滤波输出

w=fspecial('laplacian',0)   %生成并显示拉普拉斯滤波器
w=[0 1 0;1 -4 1;0 1 0];   %规定其形状
K=imfilter(J,w,'replicate');    
subplot(2,3,3);
imshow(K)
title('直接滤波图象');

这里要注意的一点是,滤波后的图像的每个元素使用双精度浮点算术进行计算。然而,imfilter会将输出图像转抉为与输入图像相同的类。因此,若f是一个整数数组,则输出中超过整型范围的元素将被截断,且小数部分会四舍五入。若结果要求更高的精度,则需要在使用函数imfilter之前利用im2double或double转换为double类。

就比如我们这里,第三幅图显示了结果图像,其结果看似合理,但存在一个问题:所有的像素都是正的。由于滤波器中心系数为负,因此我们通常希望得到的是一个带有正值和负值的拉普拉斯图像。但此时,f是uint8类的,如前节所述,imfilter给出了与输入图像类相同的输出,所以负值被截掉了。在对图像滤波前,通过将其转换为浮点数可解决这一问题:

03

转换为浮点数并再次滤波

F=im2uint16(J);
W=imfilter(F,w,'replicate');
subplot(2,3,4);
imshow(W)
title('带有正值和负值的拉普拉斯图像')

04

最后,从原始图像中减去(因为中心系数为负值)拉普拉斯图像,以恢复失去的灰度层次

E=F-W;
subplot(2,3,5);
imshow(E)
title('处理后的最终图像');

0d6a06ed99a72c7c67d4fbbfbfe51c4d.png

可以看到,图5比图二要更加清晰。

今天的分享就到这里,关注我,每天更新matlab和数字图像处理的相关内容。

也可以加qq群953314432和各路大神一起学习。

往期 · 推荐

●Matlab数据统计与分析(三)——常见分布随机数的产生及统计作图

●MATLAB中的直方图处理及均衡化

●数学建模与MATLAB--线型规划(Linear Programing)

5b5e72de2adf460e449ef34ee2bd07a7.png

扫码关注我们

更多精彩等待你发现

出品:Asoul水云天课堂工作室

点“在看”给我一朵小黄花e8530757d0fc8180084d6f5a6280ab4c.gif

00a40b9e6b294fa37ae56eda4827b807.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值