热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

开发笔记:matlab图像处理中值滤波原理

篇首语:本文由编程笔记#小编为大家整理,主要介绍了matlab图像处理-中值滤波原理相关的知识,希望对你有一定的参考价值。中值滤波原理

篇首语:本文由编程笔记#小编为大家整理,主要介绍了matlab图像处理-中值滤波原理相关的知识,希望对你有一定的参考价值。



中值滤波原理

??中值滤波本质上是一种统计排序滤波器。对于原图像中某点(i,j),中值滤波以该点为中心的邻域内的所有像素的统计排序中值作为(i,j)点的响应。

??中值不同于均值,是指排序队列中位于中间位置的元素的值,例如,采用3x3中值滤波器,某点(i,j)的8个邻域的一系列像素值为12,18,25,11、118,17、35,29,23,统计排序结果为11、12,17,18,23,25,29,35,118。排在中间位置(第5位)的23即作为(i,j)点中值滤波的响应g(i,j)。显然,中值滤波并非线性滤波器。

原理图解:选定图像中的某个像素,采用3*3的滤波窗口进行滤波,将周围的8个像素连同选定的像素进行排序,然后选择排好序的中心像素值代替原来的像素值。即将图中的23代替原来的118。

技术图片

图中可以知道,当像素点太大或者太小时都不同意被选中,所以中值滤波对像素值比较大或者比较小的噪声滤除的效果比较好,如:椒盐噪声,对比较均匀的噪声滤除的效果一般,如:高斯噪声。


中值滤波的优点:

??中值滤波对于某些类型的随机噪声具有非常理想的降噪能力,对于线性平滑滤波而言,在处理的像素邻域之内包含噪声点时,噪声的存在总会或多或少地影响该点的像素值的计算,(对于高斯平滑影响程度同噪声点到中心点的距离成正比),但在中值滤波中噪声点则常常是直接被忽略掉的;而且同线性平滑滤波器相比,中值滤波在降噪同时引起的模糊效应较低。


使用MATLAB展示中值滤波效果:

在matlab中中值滤波的函数是medfilt2函数,示例1,中值滤波对椒盐噪声和高斯噪声的滤波效果展示。

1、采用的原图是:
技术图片

2、滤除椒盐噪声和高斯噪声的对比代码如下:

%% 滤波效果展示
clear; clc; close all;
rawimg = imread(‘..picture1.jpg‘);
[~,~,index] = size(rawimg);
if index ~= 1
rawimg = rgb2gray(rawimg); % 转化为灰度图
end
% 显示原图
figure;imshow(rawimg);title(‘原图‘);
% 添加噪声
salt_img=imnoise(rawimg,‘salt & pepper‘,0.04); % 叠加密度为0.04的椒盐噪声
guas_img = imnoise(rawimg,‘gaussian‘,0.04);
figure;subplot(1,2,1);imshow(salt_img);title(‘添加椒盐噪声‘);
subplot(1,2,2);imshow(guas_img);title(‘添加高斯噪声‘);
% 进行滤波
salt_fit = medfilt2(salt_img,[3 3]); % 采用二维中值滤波函数对图像滤波,滤波窗口是3*3
guas_fit = medfilt2(guas_img,[3,3]); % 滤除高斯噪声
% 滤波效果:
figure;subplot(1,2,1);imshow(salt_fit);title(‘椒盐噪声滤波效果‘);
subplot(1,2,2);imshow(guas_fit);title(‘高斯噪声滤波效果‘);

添加噪声效果示例:

技术图片

使用中值滤波滤除的效果示例:

技术图片

分析:可以很明显的看到,中值滤波对椒盐噪声的滤除效果比高斯噪声要好,边缘部分的细节有部分的保留。

3、选择不同的窗口对椒盐噪声的滤除效果对比示例代码:

%% 滤波窗口选择展示
clear; clc; close all;
rawimg = imread(‘..picture1.jpg‘);
[~,~,index] = size(rawimg);
if index ~= 1
rawimg = rgb2gray(rawimg); % 转化为灰度图
end
% 添加噪声
salt_img=imnoise(rawimg,‘salt & pepper‘,0.04); % 叠加密度为0.04的椒盐噪声
figure;subplot(1,2,1);imshow(rawimg);title(‘原图‘);
subplot(1,2,2);imshow(salt_img);title(‘添加椒盐噪声‘);
% 进行滤波
min_fit = medfilt2(salt_img,[3 3]); % 采用二维中值滤波函数对图像滤波,滤波窗口是3*3
max_fit = medfilt2(salt_img,[9,9]); % 滤除高斯噪声
% 滤波效果:
figure;subplot(1,2,1);imshow(min_fit);title(‘3*3滤波窗口效果‘);
subplot(1,2,2);imshow(max_fit);title(‘9*9滤波窗口效果‘);

添加椒盐噪声的效果示例:

技术图片

分别选择[3,3]滤波窗口和[9,9]滤波窗口对噪声图像进行滤波效果对比示例:

技术图片

分析:可以很明显看到,当中值滤波的窗口选择越大的时候滤波的效果比较明显,但是窗口选择越大则对原图的边缘,细节部分滤除的部分就会越多,这个特性可以根据自己的需要进行调节。


推荐阅读
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • 深入理解线程池及其基本实现
    本文探讨了线程池的概念、优势及其在Java中的应用。通过实例分析不同类型的线程池,并指导如何构建一个简易的线程池。 ... [详细]
  • Jenkins API当前未直接提供获取任务构建队列长度的功能,因此需要通过解析HTML页面来间接实现这一需求。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 1、什么是过滤器管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入, ... [详细]
  • 深入探讨:Actor模型如何解决并发与分布式计算难题
    在现代软件开发中,高并发和分布式系统的设计面临着诸多挑战。本文基于Akka最新文档,详细探讨了Actor模型如何有效地解决这些挑战,并提供了对并发和分布式计算的新视角。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • JUC并发编程——线程的基本方法使用
    目录一、线程名称设置和获取二、线程的sleep()三、线程的interrupt四、join()五、yield()六、wait(),notify(),notifyAll( ... [详细]
  • 本文探讨了如何在Windows程序中实现高精度的定时控制,特别是针对需要精确控制发包频率的应用场景,如“小兵以太网测试仪”。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 网络安全实验:Telnet与SSH服务对比及抓包分析
    本实验旨在对比Telnet和SSH两种安全通信协议的服务差异,并通过搭建服务器和使用Wireshark抓包工具进行详细分析。 ... [详细]
  • 浏览器提示网站‘不安全’的原因及解决方法
    在日常上网过程中,我们经常会遇到浏览器提示网站‘不安全’的情况。面对这种情况,不同的人有不同的处理方式,但浏览器为什么会发出这样的警告?本文将详细解析其中的原因,并提供相应的解决方案。 ... [详细]
  • 大华股份2013届校园招聘软件算法类试题D卷
    一、填空题(共17题,每题3分,总共51分)1.设有inta5,*b,**c,执行语句c&b,b&a后,**c的值为________答:5 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
author-avatar
尚伦旺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有