文章目录

  • 1.中值滤波
    • (1)函数
    • (2)代码
  • 2.双边滤波
    • (1)函数讲解
    • (2)关于d,sigmaColor和sigmaSpace的值选择
    • (3)代码实现

1.中值滤波

优点:对椒盐噪声处理比较好
中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值.中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点。

(1)函数

medianBlur(src, ksize, dst=None):
src:输入的原始图像
Ksize:卷积核的大小(一个整数即可)
Dst:输出图像
注:当ksize大小为3或者5的时候,图像的位深应该是CV_8U, CV_16U, 或者 CV_32F。

(2)代码

import os
import cv2
import numpy as npdef MediumFilter(img_path='images/lenna_PapperNoise.png'):img_src=cv2.imread(img_path)img=cv2.resize(src=img_src,dsize=(450,450))img=cv2.medianBlur(img,ksize=3)cv2.imshow('img',img)cv2.imshow('img_src',img_src)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')MediumFilter()


可以看到对于椒盐噪声的处理确实比较不错。

关于怎么生成椒盐噪声,方盒滤波,均值滤波:https://mydreamambitious.blog.csdn.net/article/details/125173270
关于高斯滤波:https://blog.csdn.net/Keep_Trying_Go/article/details/125203273


2.双边滤波

优点:可以保留边缘,在保留边缘的同时对边缘内的区域进行平滑处理
(进行美化)。

(1)函数讲解

bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None):
参数讲解:
Src:输入的原始图像
D:过滤期间使用的每个像素邻域的直径。如果为非正,则从sigmaSpace计算
sigmaColor:颜色空间过滤器的sigma值,该参数的值越大,意味着像素邻域内的更多颜色将混合在一起,从而产生更大的半等色区域
sigmaSpace:,如果该值较⼤,则意味着颜⾊相近的较远的像素将相互影响,从⽽使更⼤的区域中⾜够相似的颜⾊获取相同的颜⾊。当d>0时,d指定了邻域⼤⼩,那么不考虑sigmaSpace值,否则d正⽐于sigmaSpace.
Dst:输出图像
borderType:⽤于推断图像外部像素的某种边界模式,有默认值BORDER_DEFAULT.

(2)关于d,sigmaColor和sigmaSpace的值选择

(1)一般为了简化,sigmaColor和sigmaSpace可以设置相同的值(下面都用sigma表示两者),如果sigma的值小于10的话,不会产生太大的影响;如果大于150的话,将产生非常强的影响(使图片卡通画)。
(2)如果选择的d大于5的话,那么执行将会非常慢,所以建议对于实时应用使用d=5;如果对于强噪声的,可以将d=9。

(3)代码实现

import os
import cv2
import numpy as npdef BilateralFilter_11(img_path='images/lenna.png'):img_src=cv2.imread(img_path)img=cv2.resize(src=img_src,dsize=(450,450))img=cv2.bilateralFilter(img,5,11,11)cv2.imshow('img',img)cv2.imshow('img_src',img_src)cv2.waitKey(0)cv2.destroyAllWindows()def detectBilateralFilter():cap=cv2.VideoCapture(0)while cap.isOpened():OK,frame=cap.read()img_src = cv2.imread(frame)img = cv2.resize(src=img_src, dsize=(450, 450))img = cv2.bilateralFilter(img, 5, 11, 11)cv2.imshow('img', img)if cv2.waitKey(1)&0XFF==27:breakcap.release()cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')# BilateralFilter_11()# detectBilateralFilter()BilateralFilter_155()


当sigmaColor和sigmaSpace的值大于150时:

def BilateralFilter_155(img_path='images/lenna.png'):img_src=cv2.imread(img_path)img=cv2.resize(src=img_src,dsize=(450,450))img=cv2.bilateralFilter(img,5,155,155)cv2.imshow('img',img)cv2.imshow('img_src',img_src)cv2.waitKey(0)cv2.destroyAllWindows()

中值滤波器和双边滤波器(python实现)相关推荐

  1. 双边滤波器cv2.bilateralFilter

    双边滤波器cv2.bilateralFilter 双边滤波是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效地保护图像内的边缘信息,双边滤波在计算某一个像素点的新值时,不仅考虑距离信息(距离 ...

  2. Python机器视觉--OpenCV进阶(核心)--常用低通滤波器(方盒滤波器,均值滤波器,高斯滤波器,中值滤波器,双边滤波器)

    1.常用低通滤波器介绍 1.1低通滤波器与高通滤波器的区别: 1.低通滤波主要用于噪点的消除或者是用于图像的降噪 2.高通滤波器主要于图像边缘的寻找 1.2 方盒滤波 boxFilter(src, d ...

  3. python:实现Bilateral Filter双边滤波器算法(附完整源码)

    python:实现Bilateral Filter双边滤波器算法 import math import sys import cv2 import numpy as np def vec_gaussi ...

  4. OpenCV图像处理学习九,双边滤波器 (Bilateral Filter)和中位数滤波器 (Median Filter)

    均值模糊无法克服边缘像素信息丢失缺陷,原因是均值滤波是基于平均权重,赋予图像内的像素与图像边缘像素一样的比值权重,图像处理是会使得边缘部分图像部分像素信息丢失: 高斯模糊部分克服了该缺陷,但是无法完全 ...

  5. Bilateral Filter双边滤波器

    双边滤波器是一种边缘保护的非线性滤波器. 1.像高斯滤波器一样,它的权值取决于到中心像素的空间距离 原理:附近的像素(在空间中)应该比远处的像素有更大的影响 高斯滤波器:距离中心像素i (x, y)的 ...

  6. 并行加速实战 双边滤波器

    之前分析了 二维中值滤波器的并行加速 由于二维中值滤波器是控制密集型的滤波器(排序操作),所以SSE加速不太明显 这次选用了计算密集型的双边滤波器 针对双边滤波器在5*5的滤波核下的运算速度做优化和分 ...

  7. 双边滤波器在灰度和彩色图像处理中的应用

    原文链接:http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html 版权归原 ...

  8. 【双边滤波】基于小波变换的多尺度自适应THZ增强双边滤波器的MATLAB仿真

    1.软件版本 MATLAB2021a 2.本算法理论知识 提出了一种"基于小波变换的多尺度自适应双边滤波器"算法. 其对应的算法流程如下所示: 下面,我们从理论上限介绍一下这里所采 ...

  9. 双边滤波器的原理及实现

    双边滤波器是什么? 双边滤波(Bilateral filter)是一种可以保边去噪的滤波器.之所以可以达到此去噪效果,是因为滤波器是由两个函数构成.一个函数是由几何空间距离决定滤波器系数.另一个由像素 ...

  10. bilateral filter双边滤波器的通俗理解

    bilateral filter双边滤波器的通俗理解 图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等.但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显.相比较而言,bila ...

最新文章

  1. SVN地址正确,能在网页打开,但是检出失败解决方法
  2. mysql里面integer默认宽度_MySQL中关于数据类型指定宽度之后的情况
  3. PHP连接MySQL报错:Fatal error: Call to undefined function mysql_connect()之解决方法
  4. 打造工业级推荐系统(三):推荐系统的工程实现与架构优化
  5. 信息学奥赛一本通(2023:【例4.8】数据统计)
  6. 超好看的动态流量卡官网源码多功能集成式源码
  7. java jdbc连接oracle数据库连接 不抛出异常,JDBC连接Oracle发生异常的原因
  8. SQL Server 2019 新特性之 SQL Server大数据群集 介绍(一)
  9. php magento 开发,magento 2模块开发实例helloworld模块 hello world 程序 c语言hello world代码 c语言hello worl...
  10. jsp分页的常用写法
  11. J2EE(集合框架)
  12. 在mac homebrew_您可以通过Homebrew在Mac上获得的最佳命令行工具
  13. 卡尔曼滤波算法详细推导
  14. 虞老师在PRCV2021的Talk-Neural Human Reconstruction:From Rendering to Modeling
  15. 【托业】【新托业TOEIC新题型真题】学习笔记4-题库一-P7
  16. 电脑安全模式没有修复计算机,电脑没有安全模式怎么办
  17. 怦然心动(Flipped)-7
  18. 如何用软件测试交易系统的胜率,通达信官网程序交易测试
  19. Android Studio 实现播放本地/网络视频
  20. android关于消防栓的正确使用

热门文章

  1. 微信小程序支付宝小程序合并二维码
  2. 分别使用U+、B+、UD制作WinPE启动盘
  3. 自定义字体需要css的,CSS 自定义字体
  4. 微信小程序 js 正则校验车牌号 车牌号校验
  5. java面试项目介绍,详细说明
  6. Chrome浏览器去广告插件 —— (Adblock Plus)
  7. stata15中文乱码_stata 14、15 中文乱码 转码后 显示奇怪中文
  8. Cadence如何画PCB封装库
  9. 阿里云如何启动mysql数据库_阿里云服务器启动mysql
  10. 我的NVIDIA开发者之旅——Caffe教程(3)使用sklearn和caffe进行简单逻辑回归实践