图像滤波算法总结[通俗易懂]

图像滤波算法总结[通俗易懂]该篇主要是对图像滤波算法一个整理,主要参考的大神的博客:https://blog.csdn.net/qq_15606489/article/details/527554441:图像滤波既可以在实域进行,也可以在频域进行。图像滤波可以更改或者增强图像。通过滤波,可以强调一些特征或者去除图像中一些不需要的部分。滤波是一个邻域操作算子,利用给定像素周围的像素的值决定此像素的最终的输出值。图像…

大家好,又见面了,我是你们的朋友全栈君。

该篇主要是对图像滤波算法一个整理,主要参考的大神的博客:
https://blog.csdn.net/qq_15606489/article/details/52755444
1:图像滤波既可以在实域进行,也可以在频域进行。图像滤波可以更改或者增强图像。通过滤波,可以强调一些特征或者去除图像中一些不需要的部分。滤波是一个邻域操作算子,利用给定像素周围的像素的值决定此像素的最终的输出值。
图像滤波可以通过公式:
O(i,j)=m,nI(i+m,j+n)K(m,n) O ( i , j ) = ∑ m , n I ( i + m , j + n ) ∗ K ( m , n )
其中K为滤波器,在很多文献中也称之为核(kernel)。常见的应用包括去噪、图像增强、检测边缘、检测角点、模板匹配等。

2:均值滤波
用其像素点周围像素的平均值代替元像素值,在滤除噪声的同时也会滤掉图像的边缘信息。在OpenCV中,可以使用boxFilter和blur函数进行均值滤波。均值滤波的核为:
这里写图片描述

3:中值滤波
中值滤波用测试像素周围邻域像素集中的中值代替原像素。中值滤波去除椒盐噪声和斑块噪声时,效果非常明显。在OpenCV中,可以使用函数medianBlur进行操作。

4:高斯滤波
这里参考一位大神的博客写的很细很好明白:https://blog.csdn.net/nima1994/article/details/79776802
总结一下:

  • 像均值滤波,是简单的取平均值,模板系数都是1。而图像上的像素实际上是坐标离散但是值却连续的,因为越靠近的点关系越密切,越远离的点关系越疏远。因此,加权平均更合理,距离越近的点权重越大,距离越远的点权重越小。
  • 既然是依据距离来加权平均,那么很容易想到高斯函数 f(x)=1σ2πe(xμ)22σ2 f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 ,如图所示:
    这里写图片描述
    从高斯函数来看,离原点距离越近,得到的权重越高,越远离原点,得到的权重越小。
    上边是一维的高斯函数,当中心点为原地时, x x 的均值
    μ=0


    μ


    =


    0

    ,此时 f(x)=1σ2πex22σ2 f ( x ) = 1 σ 2 π e − x 2 2 σ 2
    由于图像是二维矩阵,则采用二维高斯函数 f(x,y)=12πσ2e(x2+y2)2σ2 f ( x , y ) = 1 2 π σ 2 e − ( x 2 + y 2 ) 2 σ 2 有了这个函数就可以计算滤波模板中每个点的权重了。
    权重矩阵:
    假定中心点是(0,0),那么距离它最近的8个点的坐标如下:
    这里写图片描述
    更远的点以此类推。
    将这模板中的坐标x,y代入到二维高斯函数中,假定 μ=0 μ = 0 σ σ 为1.5,则模糊半径为1的权重矩阵如下:
    这里写图片描述
    这9个点的权重总和等于0.4787147,如果只计算这9个点的加权平均,还必须让它们的权重之和等于1,因此上面9个值还要分别除以0.4787147,得到最终的权重矩阵。
    这里写图片描述
    计算高斯滤波的结果
    假设现在3*3高斯滤波器覆盖的图像的像素灰度值为:
    这里写图片描述
    每个点与上边计算得到的9个权重值相乘:
    这里写图片描述
    得到:
    这里写图片描述
    将这9个值加起来,就是中心点的高斯模糊的值。

对所有点重复这个过程,就得到了高斯模糊后的图像。如果原图是彩色图片,可以对RGB三个通道分别做高斯模糊。

边界处理
如果一个点处于边界,周边没有足够的点,怎么办?

一个变通方法,就是把已有的点拷贝到另一面的对应位置,模拟出完整的矩阵。

5:双边滤波
参考了大神的博客:http://www.360doc.com/content/17/0306/14/28838452_634420847.shtml
高斯滤波只考虑了周边点与中心点的空间距离来计算得到权重。首先,对于图像滤波来说,一个通常的intuition是:(自然)图像在空间中变化缓慢,因此相邻的像素点会更相近。但是这个假设在图像的边缘处变得不成立。如果在边缘处也用这种思路来进行滤波的话,即认为相邻相近,则得到的结果必然会模糊掉边缘,这是不合理的,因此考虑再利用像素点的值的大小进行补充,因为边缘两侧的点的像素值差别很大,因此会使得其加权的时候权重具有很大的差别。可以理解成先根据像素值对要用来进行滤波的邻域做一个分割或分类,再给该点所属的类别相对较高的权重,然后进行邻域加权求和,得到最终结果。
双边滤波与高斯滤波相比,对于图像的边缘信息能够更好的保留,其原理为一个与空间距离相关的高斯核函数与一个灰度距离相关的高斯函数相乘。
空间距离: e(xixc)2+(yiyc)22σ2 e − ( x i − x c ) 2 + ( y i − y c ) 2 2 σ 2 ,其中 (xc,yc) ( x c , y c ) 是中心点坐标,比如为(0,0), (xi,yi) ( x i , y i ) 为当前点的坐标, σ σ 为空间域标准差。
灰度距离: e(gray(xi,yi)gray(xc,yc))22σ2 e − ( g r a y ( x i , y i ) − g r a y ( x c , y c ) ) 2 2 σ 2 ,其中 gray(xi,yi) g r a y ( x i , y i ) 是当前像素点的灰度值, gray(xc,yc) g r a y ( x c , y c ) 是模板中覆盖图片区域的中心点像素的灰度值,也就是(0,0)处的灰度值, σ σ 为值域标准差。
对于高斯滤波,仅用空间距离的权值系数核与图像卷积后确定中心点的灰度值。即认为离中心点越近,其权值系数越大。
双边滤波中加入了对灰度信息的权重,即在领域内,灰度值越接近中心点灰度值的点的权值更大,灰度值相差大的点权重越小。其权重大小则由值域高斯函数确定。
两者权重系数相乘,得到最终的卷积模板,由于双边滤波需要每个中心点领域的灰度信息来确定其系数,所以速度比一般的滤波慢得多,而且计算量增长速度为核的大小的平方。
这里写图片描述
参数的选择:空间域 σ σ 的选取,和值域 σ σ 的选取。
结论: σ σ 越大,边缘越模糊; σ σ 越小,边缘越清晰。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132377.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • pycharm2018设置中文界面_pycharm界面

    pycharm2018设置中文界面_pycharm界面pycharm中文版界面设置:(推荐学习:python视频教程)jJ1少儿编程网-Scratch_Python_教程_免费儿童编程学习平台1、找到pycharm的文件安装位置jJ1少儿编程网-Scratch_Python_教程_免费儿童编程学习平台jJ1少儿编程网-Scratch_Python_教程_免费儿童编程学习平台2、找到语言文件应安装的文件夹jJ1少儿编程网-Scratch_Python_…

  • 移动端开发遇到的一些兼容性问题及其整理「建议收藏」

    移动端开发遇到的一些兼容性问题及其整理「建议收藏」IOS手机测试时会发现加了margin-bottom的属性无效。解决:替换为padding-bottom或者放个空盒子有高度宽度占位即可。IOS手机的输入框出现未知的内阴影。解决:input:{-webkit-appearance:none;}控制手机上方的标题:document.title;…

  • 微信公众号网页开发-Vue项目坑点分析

    微信公众号网页开发-Vue项目坑点分析项目背景该系统为商品推广系统,微信交互涉及网页授权和网页分享,年前使用django框架做了基础版,节后项目升级,功能更加丰富,使用vue框架做前后端分离开发,前后端分离开发提升了开发效率,也埋藏了很多坑点。。。坑点分析及解决开发前需要进入公众号后台配置”JS接口安全域名”及“授权回调页面域名”,如果服务端要获取token,还需要配置”IP白名单”,详细信息可以查阅官网。微信公众号官方文档:微信公众平台开发概述|微信开放文档微信开发者平台文档https://developers.weixi

  • 数字证书 CA_数字证书申请

    数字证书 CA_数字证书申请文章目录1.证书1.1证书的应用场景1.2证书标准规范X.5091.2.1证书规范1.2.2证书格式1.2.3CA证书1.3公钥基础设施(PKI)1.3.1什么是公钥基础设施1.3.2PKI的组成要素用户认证机构(CA)仓库1.3.3各种各样的PKI2.Fabric-ca2.1简介2.2基本组件2.3安装2.4初始化&快速启动2.5服务端配置文件解析2.6…

    2022年10月16日
  • Socker编程之TCP

    Socker编程之TCP一:TCP介绍TCP协议,传输控制协议(英语:TransmissionControlProtocol,缩写为TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。TCP通信需要经过创建连接、数据传送、终止连接三个步骤。TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,”打电话””二:TCP特…

    2022年10月29日
  • 内存映射文件「建议收藏」

    内存映射文件「建议收藏」在做科研,实现一些大数据的算法的时候,经常要调用一些文件的I/O函数,在数据量很大的时候,除了设计的算法和数据结构的耗时以外,其实主要的耗时还是文件的I/O。因为一般常规的方法就是先读出磁盘文件的内容到内存中,然后修改,最后写回到磁盘上。读磁盘文件是要经过一次系统调用,先将文件的内容从磁盘拷贝到内核空间的一个缓冲区,然后再将这些数据拷贝到用户空间,实际上是两次数据拷贝。写回同样也需要经过两次数据拷

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号