MATLAB图像处理之图像的均值滤波和中值滤波(附代码)

news/2024/11/29 20:38:19/

图像的平滑、锐化都是利用掩模操作来完成的。通过掩模操作实现一种邻域运算,待处理像素点的结果由邻域的图像像素以及相应的与邻域有相同维数的子图像得到。这些子图像被称为滤波器、掩模、核、模板或窗口;
掩模运算的数学含义是卷积(或互相关)运算;
掩模子图像中的值是系数值,而不是灰度值;
卷积示例图:
示例
一般来说,在MN的图像f(x,y)上,用mn大小的滤波器掩模进行线性滤波由下式给出:
公式
模板为1*5的中值滤波和均值滤波的对比:
在这里插入图片描述

均值滤波

简单来说就是对某个区域内的像素值取平均值代替原像素值
常用的3*3的滤波器掩模为:
在这里插入图片描述
3*3
一幅M×N的图像经过m×n的加权均值滤波器滤波的过程可由下式给出:

在这里插入图片描述
一般选取n*n的模板,便于运算,下面给出示例代码:

img = imread('');[M , N] = size(img);%图片尺寸
img_result = zeros(M, N);%预生成,提高速度muban_size = 3;%模板尺寸
expand_size = floor(muban_size / 2);%扩展尺寸
muban = 1 / (muban_size * muban_size) .* ones(muban_size, muban_size);expand_img = double(wextend('2D','zpd', img, expand_size));%扩展0,转double为了矩阵运算for i=1:Mfor j=1:Nave = sum( sum( expand_img(i:i+muban_size-1,j:j+muban_size-1) .* muban)); %取出扩展元素与模板相乘,并求矩阵元素之和img_result(i,j) = ave;end
endimg_result = uint8(img_result);%转int8,图像
subplot(1 ,2, 1);
title('原图像')
imshow(img)
subplot(1 ,2, 2);
imshow(img_result)
da = ['模板大小为' num2str(muban_size) ',变化后的图像'];
title(da)

结果示例:
示例
可见均值滤波对于噪声有一定的抑制作用,但是会出现部分的涂抹感。

中值滤波

中值滤波和均值滤波不同的地方是,中值滤波是对图像的像素值进行排序,取中间的像素值赋给新的图像。
主要功能:使拥有不同灰度的点看起来更接近于它的邻近值。
主要用途:去除“椒盐”噪声

示例代码:

img = imread('');[M , N] = size(img);%图片尺寸
img_result = zeros(M, N);%预生成,提高速度muban_size = 3;%模板尺寸
expand_size = floor(muban_size / 2);%扩展尺寸
muban = ones(muban_size, muban_size);expand_img = double(wextend('2D','zpd', img, expand_size));%扩展0,转double为了矩阵运算for i=1:Mfor j=1:Nmat = expand_img(i:i+muban_size-1,j:j+muban_size-1) .* muban; %取出x1中从(i,j)开始的n行n列元素与模板相乘mat = mat(:);%转数组mat = sort(mat);%排序if mod(muban_size, 2)==1img_result(i,j) = mat(floor(muban_size*muban_size/2)+1);%取中间elseimg_result(i,j) = (mat(muban_size*muban_size/2) + mat(muban_size*muban_size/2+1))/2;endend
endimg_result = uint8(img_result);%转int8,图像
subplot(1 ,2, 1);
title('原图像')
imshow(img)
subplot(1 ,2, 2);
imshow(img_result)
da = ['模板大小为' num2str(muban_size) ',变化后的图像'];
title(da)

结果示例:
示例
效果好像特别好。

一些其他的中值滤波器:

模板
另:
中值滤波的窗口形状和尺寸对滤波效果影响较大,不同的图像内容和不同的应用要求,往往采用不同的窗口形状和尺寸。常用的二维中值滤波窗口有线状、方形、圆形、十字形以及圆环形等。
窗口尺寸一般先用3X3,再取5X 5逐渐增大,直到滤波效果满意为止。就经验来讲,对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜。对于包含有尖顶物体的图像,用十字形窗口,而窗口大小则以不超过图像中最小有效物体的尺寸为宜。如果图像中点、线、尖角细节较多,则不宜采用中值滤波

最后,点个赞?


http://www.ppmy.cn/news/811588.html

相关文章

MATLAB-中值滤波原理、实现及应用

写了篇实现medfilt2函数功能的文章,有兴趣的朋友可以看看:medfilt2函数的实现源代码 目录 中值滤波 原理 中值滤波窗口 重要特性 实现方法 图像处理程序 原图与加噪图像(椒盐噪声) 3*3方形窗口 5*5方形窗口 横线窗口(5像素点) 竖线窗口(5像素…

均值滤波、中值滤波【MATLAB】【图像处理】

1. 均值滤波:即线性滤波,有: a.邻域平均, b. 加权平均两种。 a. 邻域平均:用一个像素邻域平均值作为滤波结果,此时滤波器模板的所系数都取1,为保证输出图仍在原来的灰度值范围,在算得R后要将其除以系数总…

Matlab中的滤波器

在matlab中我们需要生成滤波器时,可以使用matlab中自带的工具。 在matlab命令窗口中输入filterDesigner,出现下列窗口。 在这里根据需要设计自己所需要的滤波器即可。 设计完滤波器之后如果我们想要以函数的方式使用我们的滤波器,那么我们可…

中值滤波matlab

摘 要 中值滤波技术是一种在去除噪声的同时能较好保护图像边缘细节的非线性技术,在图像增强和恢复等领域中得到了广泛的应用。文章阐述了中值滤波的原理和特点,并使用软件工具MATLAB实现了图像的中值滤波。结果表明,利用中值滤波法消除图像中…

[图像]中值滤波(Matlab实现)

原创文章,欢迎转载。转载请注明:转载自 祥的博客 原文链接:http://blog.csdn.net/humanking7/article/details/46826009 原理简述 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。它也是一种邻域运算,类…

matlab中值滤波实现

中值滤波是一种典型的非线性滤波,是基于排序统计理论的一种能够有效抑制噪声的非线性信号处理技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,让周围的像素值接近真实的值从而消除孤立的噪声点。该方法在去除脉冲噪声、椒盐…

中值滤波原理及matlab实现代码

一、基本原理 均值滤波虽然可以降低噪声,但是也会导致图像模糊。而中值滤波在一定条件下可以克服线性滤波带来的图像细节模糊的问题,它对处理椒盐噪声非常有效。   中值滤波通常采用一个含有奇数个点的滑动窗口,将窗口中各点的灰度值按照从小到大的顺序排列,用这个排列的…

图像处理中调用matlab自带均值滤波、高斯滤波和中值滤波函数的案例以及自编均值滤波的案例。

[TOC](利用matlab自带均值滤波器的代码,分别对一幅图像实现3*3,5*5,7*7,9*9的均值滤波,并对实验结果进行分析。) [TOC](分别给干净图像添加高斯和椒盐噪声,然后进行均值滤波、高斯滤波和中值滤波&#xff…