Matlab 均值滤波与中值滤波

article/2025/11/7 11:18:04

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

所谓的滤波就是一个系数矩阵(也称为模板,滤波器,滤波模板,核,掩模或者窗口),然后用这个模板对应图像矩阵(填充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://chatgpt.dhexx.cn/article/WQW6kp6V.shtml

相关文章

matlab均值滤波,中值滤波

滤波核33的均值滤波。 Fimread(D:\Desktop\66.png); Frgb2gray(F); fdouble(F); [row,col]size(f); f1zeros(row,col);for i2:row-1for j2:col-1fx[f(i-1,j-1),f(i-1,j),f(i-1,j1),f(i,j-1),f(i,j),f(i,j1),f(i1,j-1),f(i1,j),f(i1,j1)];f1(i,j)sum(fx,all)/9/256; end end fi…

matlab均值滤波实现

一、噪声添加 椒盐噪声: I_noisedouble(imnoise(I,salt & pepper,0.02));%后面0.02为参数高斯噪声: I_noisedouble(imnoise(I,gaussian,0.02));二、均值滤波原理 主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。…

MATLAB均值滤波

% 中值滤波 clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 [filename ,pathname]… uigetfile({‘.bmp’;.jpg’;},‘选择图片’); % 选择图片路径 str [pathname filename]; % 合成路径文件名 im imr…

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

均值滤波 代码: timread(a1.jpg); [m,n,z]size(t); t1imnoise(t,gaussian,0,0.02); imshow(t1),title(加入高斯噪声后) t2t; for i1:m-2 for j1:n-2 t2(i1,j1,:)round(t2(i,j,:)/9t2(i,j1,:)/9t2(i,j2,:)/9t2(i1,j,:)/9t2(i1,j1,:)/9t2(i1,j2,:)/9t2(i2,j,:)/9t2(i2…

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

一、基本原理 噪声点像素的灰度与其邻域内像素的灰度显著不同,根据噪声点的这一特性,可以使用邻域均值滤波来降低噪声。   利用一个大小为mn的模板对一幅大小为MN的图像进行均值滤波可以表示为如下公式,其中m=2a+1,n=2b+1:   在实际应用中,可以根据不同需要选择不同…

matlab 均值滤波实现

均值滤波是指用当前像素点周围 N个像素值的均值来代替当前像素值,本质对领域内的矩阵求均值。它通常用于去除图像中高斯噪声。原理示意下图所示: matlab代码实现: clc; clear all; close all;RGB_data imread(G:\picture_deal\matlab_code\mangguo.bmp);%图像读入…

均值滤波(matlab)

**均值滤波:**在图像上对目标像素给一个模板,该模板包括了其周围的临近像素,再用模板中的全体像素的平均值来代替原来像素值。 缺点:均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的…

保护版权,用 Python 为图片添加盲水印

如果你想保护自己的原创图片,那最好的方式就是为图片添加盲水印,盲水印就是图片有水印但人眼看不出来,需要通过程序才能提取水印,相当于隐形“盖章”,可以用在数据泄露溯源、版权保护等场景。今天分享如何用 Python 为…

opencv实现盲水印

主要用于图片版权追溯,用户指纹识别等场景,保证用户版权以及作为防盗反爬关键性法律证据。 opencv环境 windows 解压opencv-3.4.2.tar.gz,项目运行是在VM options中加入库环境-Djava.library.pathD:\opencv3.4.2\opencv\build\java\x64;D:…

盲水印添加,获取接口

添加水印,水印生成,获取水印 一、接口介绍 通过上传原始图片和水印图,生成带有隐性水印图的图片。既保持图片的美观性,又能保证图片的版权防护与追踪。这样便于在不破坏原有图片的情况下,实现版权保护。 二、功能体验 三、特色优…

java 添加盲水印_图片加数字盲水印

本文通过一个的实验,简要介绍频域手段添加数字盲水印的方法,并进一步验证其抗攻击性。在上述实验的基础上,总结躲避数字盲水印的方法。(多图预警) 本文分为五个部分,第一部分综述;第二部分频域数字盲水印制作原理介绍&…

使用 Python 给图片添加水印,其中一种还是隐形的盲水印呢!

文章目录 使用 Pillow 库为图片添加半透明水印使用 blind_watermark 库为图片添加盲水印安装嵌入水印提取水印 如何给图片添加水印呢?在 Python 的世界里,有多种方法可以为图片添加水印。 其中一种方法,可以使用大名鼎鼎 Pillow 库&#xff…

python 3.6 盲水印脚本安装说明

python 3.6 盲水印脚本安装说明 安装盲水印踩了不少坑,所以记录一下。 本机环境: windows10 python3.6 脚本安装地址: BlindWaterMark 下载解压即可 安装脚本的依赖库 opencv-python 4.2.0.34 matplotlib 2.1.1 安装命令: …

信息隐藏-图像盲水印实现

相关知识 目前水印大抵可分为两种,可见和不可见,可见水印大多用来标记或声明版权,或防盗用冒用,但在影院、绘画等场景下,可见性水印会极大影响用户体验,所以产生了盲水印的概念。 盲水印即看不见的水印&am…

Python给图片添加盲水印

文章目录 简介安装初试遇到的坑参考文献 简介 盲水印就是图片有水印但人眼看不出来,需要通过程序才能提取水印,相当于隐形“盖章”,可以用在数据泄露溯源、版权保护等场景。 该库出自阿里巴巴安全团队,强大之处: 解…

Opencv实现盲水印技术(三)——傅里叶变换算法及盲水印实现

前言 之前的文章中,介绍了如何构建Java工程和Java Web工程,本文将简单介绍对傅里叶变换的理解,以及使用opencv实现盲水印。关于傅里叶变换,有篇博文介绍的很详细,链接地址为:看了此文你还不了解傅里叶变换&…

双图+盲水印

1.双图 打开压缩包,发现有两张图片 first1和second.png,使用Stegsolve打开first1.png进行一次异或处理 然后分析选择结合second.png得到 用stegslove对二维码进行运算得到三张二维码 扫描结果是DES 6XaMMbM7 和一长串字符,很显然是des加密&a…

Python 数字图片盲水印

blind-watermark 基于傅里叶变换的数字盲水印 文档: https://BlindWatermark.github.io/blind_watermark/#/zh/Source code: https://github.com/guofei9987/blind_watermark install pip install blind-watermarkFor the current developer version: git clon…

watermark前端js盲水印添加方法

1,引入js <script src"/Public/js/watermark-dom/watermark.js" language"JavaScript"></script> 2,实例化对象 <script language"JavaScript"> //参数详情请参考watermark.js 文件里的说明 window.onload function(){wate…

给你的web页面添加盲水印,附带检盲水印方案

应用场景 在一些敏感系统有的时候我们为了防止别人截图或追溯图片源头是谁发的。我们需要在页面上埋下我们的隐形水印。 开始做 埋水印 github上有很多水印的js插件&#xff0c;download下来一个改一改&#xff0c;源码见最后附录。 改动内容&#xff1a;增加了判断dom被人…