Matlab 均值滤波与中值滤波

news/2024/11/29 22:43:29/

%%以下是本人在学习中的个人理解,如有错误请指出

所谓的滤波就是一个系数矩阵(也称为模板,滤波器,滤波模板,核,掩模或者窗口),然后用这个模板对应图像矩阵(填充0后的图像矩阵)进行乘积和运算。

均值滤波就是这个滤波器每个值都是一样大小,每个值是1/k(k为滤波器矩阵的大小),用于去噪
滤波器可通过 w=fspecial(‘type’,parameters)得到,其中type指定滤波器类型,parameters进一步定一规定的滤波器
用fspecial(‘average’)可以创建一个均值滤波器,默认33,每个值都是1/(33)=0.1111

>> h=fspecial('average')h =0.1111    0.1111    0.11110.1111    0.1111    0.11110.1111    0.1111    0.1111

然后创建个简单矩阵

>> x=[1,2,3;4,5,6;2,2,2]x =1     2     34     5     62     2     2

使用filter2(h,x)进行滤波,h为滤波器,x为要滤波的数据,将h放在x上移动进行模板滤波。

y=filter2(h,x)y =1.3333    2.3333    1.77781.7778    3.0000    2.22221.4444    2.3333    1.6667

下面分析过程
填充0后的图像矩阵x:

x =0     0     0     0     0     0     00     0     0     0     0     0     00     0     1     2     3     0     00     0     4     5     6     0     00     0     2     2     2     0     00     0     0     0     0     0     00     0     0     0     0     0     0

然后进行乘积和运算
x中
0 0 0
0 1 2
0 4 5
分别和h对应的各元素做乘积然后求和:即(1+2+4+5)*0.1111=1.3333
所得结果即为滤波后图像y的y(1,1)(对应着x(1,1)),以此类推。

(1+2+4+5)*0.1111=(1+2+4+5+6)/9=1.3333
其原理其实就等于用该点的像素值得领域矩阵的均值来代替这点的像素值
即对以该点为中心点的领域矩阵求和 / 领域矩阵大小
下面是均值滤波实现代码:

function [c]=junzhilvbo(j,k)
[m,n]=size(j);
b=zeros(m+2*k,n+2*k);%创建0矩阵
b(k+1:m+k,k+1:n+k)=double(j(:,:));
%    0 0 0(k行0,其他方向也是)
%b=  0 j 0
%    0 0 0
c=zeros(m,n);
for i=k+1:m+kfor j=k+1:n+kb(i,j)=sum(sum(b(i-k:i+k,j-k:j+k)))/((2*k+1).^2);%b(i,j)这个点为中心点的(2*k+1)^2的大小的矩阵的和*(1/(2*k+1))end                                                   %这里就是均值均值滤波
end
c(:,:)=b(k+1:m+k,k+1:n+k);
%figure,imshow(c,[]);

中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值,对去椒盐噪声十分有效。
工具箱提供的函数是
g=medfilt2(f,[m,n],padopt)
[m,n]定义一个大小为mn的领域(在该领域上计算中值),padopt指定三个可能的边界填充选项之一(zeros默认值,symmetric,indexed)
默认形式为
g=medfilt2(f)
使用一个3
3的领域并用0填充边界来计算中值
下面看例子

 f=imread('caise.jpg');f=rgb2gray(f);fn=imnoise(f,'salt & pepper',0.2);%用函数imnosie产生椒盐噪声,0.2代表图中白点黑点出现的概率为0.2figure,imshow(fn);gm=medfilt2(fn);%中值滤波figure,imshow(gm);

带有椒盐噪声图
中值滤波后的图

%%%文章为作者手打,记录和分享自己的学习,如有错误请指出,转载请注明出处


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

相关文章

MATLAB图像的中值滤波——手动滤波和medfilt2函数滤波

本文还是书接上回,https://blog.csdn.net/weixin_44502554/article/details/126283957?spm1001.2014.3001.5502 前期的思路是准备在FPGA当中实现图像的中值滤波,所以先搭建一下MATLAB的仿真平台,就是在MATLAB中先实现一下,具体的…

中值滤波(matlab自编程实现)

个人简介: 📦个人主页:赵四司机 🏆学习方向:JAVA后端开发 📣种一棵树最好的时间是十年前,其次是现在! ⏰往期文章:SpringBoot项目整合微信支付 💖喜欢的话麻烦…

中值滤波器的matlab实现

中值滤波器能够有效降低图像中的椒盐噪声,其中在matlab中可以使用两种方式实现,操作过程如下 首先载入没有噪声的待处理图像, aimread(zl1.tif); atofloat(a); %注意要用tofloat将uint8类转换成浮点数,因为在滤波运算中都是以浮点…

中值滤波(matlab)

中值滤波 中值滤波:是一种非线性数字滤波器技术, 用于降噪。 理解:去一个模板,可为3 * 3, 5 * 5,n * n…每次从图像中取出模板大小的矩阵,将所有元素排序,取中间值放入木板的中心位置,再还原到…

基于Matlab的图像处理②(图像增强技术,中值滤波,均值滤波)

目录 一.常用函数 1.导入图像 2.显示图像 3.显示图片色彩直方图 4.调整对比度 5.分块显示 6.导出图像 7.中值滤波 8.增加噪声 9.灰度函数 二.运行代码 三.效果 一.常用函数 1.导入图像 cimread(E:\photo\3.jpg);//(‘’)里面是图片的文件路…

MATLAB--数字图像处理 中值滤波

中值滤波 概念: 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪…

博士后申请哪些老板不要选?

博士后申请是许多研究人员迈向学术界的重要阶段。在选择导师时,需要慎重考虑各方面因素。虽然我不能提及具体老板的名字,但我可以给你一些在博士后申请过程中需要谨慎选择的类型。以下是知识人网小编整理的一些可能不适合选择的老板类型: 1. …

华为eSight网络监控平台安装

一、安装前准备 PC机配置项|要求 硬件配置|CPU:2.0GHZ以上 内存:2GB以上 |硬盘:剩余空间大于10GB操作系统Windows 7、Windows Server 2008或Windows Server 2012 |操作系统语言为中文或英文 网络|维护PC与eSight服务器能正常通信 维护PC与eS…