前言:

图像滤波是图像处理和计算机视觉中最常用、最基本的操作。主要是去除图像中的噪声,因为图像平滑处理过程中往往会使得图像变的模糊,因此又叫模糊处理。

基本原理

  • 图像平滑的基本原理是,将噪声所在像素点的像素值处理为其周围临近像素点的值的近似值。
  • 图像平滑处理的方法有很多,比如均值滤波,方框滤波,高斯滤波,中值滤波,双边滤波。

(这里就不讲公式推导了)

1均值滤波

在进行均值滤波的时候要考虑需要对周围多少个像素去平均值,即确定核 的大小,通常情况下都是以当前像素点为中心,读行数和列数相等的一块区域内的所有像素点求平均。将计算得到的结果作为该点的像素。

原始图像像素

当前像素点为226的位置,我们对其周围5x5区域内像素点求平均计算方法为:

新值=(197 25 106 156 159 149 40 107 5 71 163 198 226 223 156 222 37 68 233 157 75 193 250 2 42)/25

计算得到的新值即为226像素点位置的新的像素。

其中均值滤波的核如下所示:

1.1函数语法

在OpenCV中,实现均值滤波的函数是cv2.blur(),语法格式如下:

dst=cv2.blur(src,ksize,anchor,borderType)
  • dst是返回值,表示进行均值滤波后得到的结果
  • src是需要处理的图像,即原始图像,图像的深度有CV_8U,CV_16U,CV16S,CV32F,CV_64F.
  • ksize是核 的大小,
  • anchor是锚点,一般情况该值直接默认即可
  • borderType是边界样式,该值决定以何种方式处理边界,一般情况下不需要考虑该值的取值,直接默认即可。

因此函数cv2.blur()的一般形式为:

dst=cv2.blur(src,ksize)

接下来看一段程序:

import cv2 as cv
img=cv.imread(r'F:\AI\photo\test\lena.jpg')
blurImg=cv.blur(img,(5,5))
print('imgshape',img.shape)
print('blurImg',blurImg.shape)
cv.imshow('img',img)
cv.imshow('blurImg',blurImg)
cv.waitKey()
cv.destroyAllWindows()

 原始图像:

均值滤波后的图像 

2.高斯滤波

均值滤波中,其邻域内每个像素的权重都是一样的,在高斯滤波中,中心点的权重值加大,远离中心点的权重值减少,在此基础上计算邻域内各个像素值不同权重的和。

高斯滤波卷积核示例

2.1函数语法

dst=cv2.GaussianBlur(src,ksize,sigmaX,sigmaY,borderType)

式中:

  • dst为高斯滤波后得到的结果
  • src是需要处理的图像,
  • ksize是滤波卷积核。需要注意的是滤波核 的值必须是奇数
  • sigmaX是卷积在水平方向的标准差,或者X方向求导
  • sigmaY是卷积在垂直方向的标准差,或者说Y方向上
  • bordenType是边界类型

因此高斯滤波的一般形式为:

dst=cv2.GaussianBlur(src,ksize,0,0)

程序演示:

import cv2 as cv
img=cv.imread(r'F:\AI\photo\test\lena.jpg')
GS_blurImg=cv.GaussianBlur(img,(5,5),1,1)
print('imgshape',img.shape)
print('blurImg',GS_blurImg.shape)
cv.imshow('img',img)
cv.imshow('GS_blurImg',GS_blurImg)
cv.waitKey()
cv.destroyAllWindows()

相比原始图像,高斯滤波处理后的图像模糊了一些,但是相对于均值滤波来说,要好一些,这是因为高斯滤波卷积核在中心点的权重更高。

3.中值滤波

中值滤波就是将当前像素点及其邻域内的像素点排序后取中间值作为当前值的像素点。

中值滤波的处理过程为:将226像素点周期的8个像素点一起排序即5,37,40,68,107,198,223,223,226,所以226像素点的新 的像素值为107.

3.1函数语法

dscv2.medianBlur(src,ksize)

其中需要注意的是ksize核的大小必须是比1大的奇数,比如3,5,7等

import cv2 as cv
img=cv.imread(r'F:\AI\photo\test\lena.jpg')
medianblurImg=cv.medianBlur(img,5)
cv.imshow('img',img)
cv.imshow('medianblurImg',medianblurImg)
cv.waitKey()
cv.destroyAllWindows()

在中值滤波处理中,噪声成分很难被选中,所以可以在几乎不影响原有图像的情况下去除所有的噪声,但是由于需要进行排序等操作,中值滤波需要的运算较大。中值滤波对椒盐噪声去除效果较明显,下次补充,还有双边滤波以及方框滤波后面补充。 

到此这篇关于python图像平滑处理原理的文章就介绍到这了,更多相关python 图像平滑处理内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

python图像平滑处理原理的更多相关文章

  1. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

  2. Swift基本使用-函数和闭包(三)

    声明函数和其他脚本语言有相似的地方,比较明显的地方是声明函数的关键字swift也出现了Python中的组元,可以通过一个组元返回多个值。传递可变参数,函数以数组的形式获取参数swift中函数可以嵌套,被嵌套的函数可以访问外部函数的变量。可以通过函数的潜逃来重构过长或者太复杂的函数。

  3. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  4. Swift、Go、Julia与R能否挑战 Python 的王者地位

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 红薯因 Swift 重写开源中国失败,貌似欲改用 Python

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. 你没看错:Swift可以直接调用Python函数库

    上周Perfect又推出了新一轮服务器端Swift增强函数库:Perfect-Python。对,你没看错,在服务器端Swift其实可以轻松从其他语种的函数库中直接拿来调用,不需要修改任何内容。以如下python脚本为例:Perfect-Python可以用下列方法封装并调用以上函数,您所需要注意的仅仅是其函数名称以及参数。

  7. Swift中的列表解析

    在Swift中完成这个的最简单的方法是什么?我在寻找类似的东西:从Swift2.x开始,有一些与你的Python样式列表解析相当的东西。(在这个意义上,它更像是Python的xrange。如果你想保持集合懒惰一路通过,只是这样说:与Python中的列表解析语法不同,Swift中的这些操作遵循与其他操作相同的语法。

  8. swift抛出终端的python错误

    每当我尝试启动与python相关的swift时,我都会收到错误.我该如何解决?

  9. 在Android上用Java嵌入Python

    解决方法看看this,它适用于J2SE,你可以尝试在Android上运行.

  10. 在android studio中使用python代码构建android应用程序

    我有一些python代码和它的机器人,我正在寻找一种方法来使用android项目中的那些python代码.有没有办法做到这一点!?解决方法有两种主要工具可供使用,它们彼此不同:>QPython>Kivy使用Kivy,大致相同的代码也可以部署到IOS.

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部