首页/文章/ 详情

使用matlab去除图片噪声

3年前浏览4360

image.png

        大家有没有发现自己将图片上传到网上一段时间后会发现图片出现噪点,有点不够很清晰。这是一件很烦的事情,本期过冷水就给大家讲讲如何去除掉讨厌的噪点。

3.jpg

     大家需要了解一下一个简单的非线性空间滤波的工具箱。这个函数就是g=ordfilt2(f,order,domain)。matlab图像(亮度变换与线性滤波)记住,这个工具箱只能处理二维的图片。当然,可以用其他办法搞定三维的彩色图片。

        其中g就是它的输出图像,它的原理非常简单,它可以生成统计排序滤波器,它的响应是基于对图像邻域包含的像素进行排序。然后用排序结果确定的值来代替邻域的中心像素的值。

        其中order代表使用排序元素的第order个元素代替f中的每一个元素。而该邻域由domain中的非零元素指定。

比较有名的滤波叫做中值滤波。它对应的是第50个百分位。也就是像素点总和的一半。

语法如下:

g=ordfilt2(f,median(1:m*n),ones(m,n))

还有最小滤波器,对应第0个百分位。

语法如下:

g=ordfilt2(f,1,ones(m,n))

还有对应100个百分位的滤波器。也就是像素点总和。

g=ordfilt2(f,m*n,ones(m,n))。

另外中值滤波还有一个专用的工具箱g=medfilts(f)。

        首先给大家讲讲简单的灰白图像的去噪问题。

5.jpg

代码如下

clear
clc
f=imread('4.jpg'); %读原图像
f=rgb2gray(f);
f1=imnoise(f,'salt & pepper',0.09); %加椒盐噪声
g=medfilt2(f1); %进行中值滤波
subplot(1,3,1),imshow(f),title('原图像')
subplot(1,3,2),imshow(f1),title('被椒盐噪声污染的图像')
subplot(1,3,3),imshow(g),title('中值滤波图像')

可以看出人为污染和去噪效果很好的。黑白图片并不能满足大家的学习需求,还是彩色照片的需求高一点,那么如何处理彩色图片,需要注意的是才是图片是三维矩阵 有三个颜色通道,只需要分别处理这三个颜色通道。然后组合在一起,彩色图片就自然解决掉了。

代码如下:

clear
clc
f=imread('2.jpg');
imshow(f)
f1=imnoise(f(:,:,1),'salt & pepper',0.09); %加椒盐噪声
f2=imnoise(f(:,:,2),'salt & pepper',0.09); %加椒盐噪声
f3=imnoise(f(:,:,3),'salt & pepper',0.09); %加椒盐噪声
f_noise(:,:,1)=f1;
f_noise(:,:,2)=f2;
f_noise(:,:,3)=f3;
imshow(f_noise)
g1=medfilt2(f1);%中值滤波
g2=medfilt2(f2);%中值滤波
g3=medfilt2(f3);%中值滤波
g_1(:,:,1)=g1;
g_1(:,:,2)=g2;
g_1(:,:,3)=g3;
subplot(1,3,1),imshow(f),title('原图像');
subplot(1,3,2),imshow(f_noise),title('添加椒盐噪声的图像');
subplot(1,3,3),imshow(g_1),title('处理以后的图像');

        运行这段代码就可以得到我们的封面图片了。过冷水和大家分享的去噪小技巧,快快get起来。

原创文章,作者过冷水,未经授权,禁止私自转载,转载请联系作者,如果您希望加入Matlab仿真秀官方交流群和资料下载可加群:927550334

精品回顾>>>>>>

matlab绘制农夫过河动态图

用matlab实现复杂累计求和的展开(程序分享)

Matlab 做重要性抽样 含代码

MATLAB/ADAMS求解动力学

Simulink电力电子技术建模和仿真

微信图片_20210415161543.jpg

附件

50积分图像去噪.rar
理论科普代码&命令其他软件
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-04-20
最近编辑:3年前
过冷水
博士 | 讲师 讨论号:927550334
获赞 359粉丝 184文章 107课程 11
点赞
收藏
作者推荐

¥5 5.0
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈