均值滤波的思想和多次测量求取平均值是一致的。

文章目录

  • 前言
  • 一、均值滤波是什么?
  • 二、cv.blur()函数
    • 1.函数原型
    • 2.均值滤波的优缺点
    • 3.均值滤波处理图像
  • 参考文献

前言

均值滤波是线性滤波中的一种。图像的线性滤波操作与图像的卷积操作过程类似,不同之处在于图像的滤波不需要将滤波模板旋转180°。卷积操作中的卷积模板在图像滤波中也被称为滤波模板、滤波器或者领域算子,滤波器表示中心像素与滤波范围内其他像素之间的线性关系,通过滤波范围内的像素值之间的线性组合可以求取中心像素滤波后的像素值。opencv中可以进行线性滤波的算法有均值滤波、方框滤波以及高斯滤波。


均值滤波——cv.blur()

一、均值滤波是什么?

均值滤波将滤波模板内的所有像素值看成卷积中的中心元素,将滤波模板内的所有像素值进行求和再求平均值,得到的这个均值再复制给所有的中心元素。所以均值滤波再滤波模板内的所有元素皆为用一个值——均值。

二、cv.blur()函数

1.函数原型

代码如下(示例):

dst = cv.blur(src,ksize[,dst[,anchor[,borderType]]])
#src:待均值滤波的输入图像
#ksize:卷积核的大小,决定滤波模板的大小范围
#dst:均值滤波后的输出图像
#anchor:内核的基准点(锚点)
#borderType:像素边界外推法的标志

该函数用于图像的均值滤波,并将处理好的图像返回。
第一个参数src可以是彩色图片也可以是灰度图,同时它也允许是多维数组对象,但是数据类型必须为uint8、uint16、float32和float64这五个类型的数据。
第二个参数ksize用于确定滤波模板的大小,输入滤波器模板的大小后,函数会自动生成符合要求的滤波模板。
第三个参数应保持与输入图像具有相同的数据类型、尺寸以及通道数。
第四个参数确定滤波模板的几何中心,也就还是基准点。
第五个参数可以自由选择

2.均值滤波的优缺点

均值滤波可以处理不含噪音的图像、含椒盐噪音的图像和含高斯噪音的图像,但是均值滤波由于缩小了像素值之间的差距,使得图像的细节信息变得更加模糊,而且滤波模板的尺寸越大,模糊效越明显。

3.均值滤波处理图像

代码如下(示例):

import cv2 as cv
import sys
import numpy as npdef my_blur(img):return cv.blur(img,(3,3)), cv.blur(img,(5,5))def salt_pepper_noise(image, prob):"""添加椒盐噪声:param image: 输入图像:param prob: 噪声比:return: 带有椒盐噪声的图像"""salt = np.zeros(image.shape, np.uint8)thres = 1 - probfor i in range(image.shape[0]):for j in range(image.shape[1]):rdn = np.random.rand()if rdn < prob:salt[i][j] = 0elif rdn > thres:salt[i][j] = 255else:salt[i][j] = image[i][j]return salt#定义函数,限定值
def clam(pv):if pv>255:return 255elif pv <0:return 0else:return pv#高斯噪音
def gaussian_noise(image):h,w,ch =image.shapefor row in range(h):for col in range(w):for c in range(ch):s = np.random.normal(0,20,3)b = image[row,col,0]g = image[row,col,1]r = image[row,col,2]image[row,col,0] = clam(b+s[0])image[row,col,1] = clam(g+s[1])image[row,col,2] = clam(r+s[2])return imageif __name__ == "__main__":img = cv.imread("opencv_test\8.jpg")if img is None:print("fail to read images")sys.exit()img_sp = salt_pepper_noise(img,0.01)img_gauss = gaussian_noise(img)#均值滤波img1,img2 = my_blur(img)imgsp1,imgsp2 = my_blur(img_sp)imgg1,imgg2 = my_blur(img_gauss)#无噪音图片cv.imshow('origin img',img)cv.imshow('3*3 blur',img1)cv.imshow('5*5 blur',img2)#椒盐噪音cv.imshow('origin img',img)cv.imshow('3*3 spblur',imgsp1)cv.imshow('5*5 spblur',imgsp2)#高斯噪音cv.imshow('origin gimg',img)cv.imshow('3*3 gblur',imgg1)cv.imshow('5*5 gblur',imgg2)cv.waitKey(0)cv.destroyAllWindows()

代码利用均值滤波处理无噪音图像、椒盐噪音图像、高斯噪音图像。


参考文献

冯振、陈亚萌 基于python的opencv4详解【M】

均值滤波opencv-python相关推荐

  1. python均值滤波_opencv+python实现均值滤波

    本文实例为大家分享了opencv+python实现均值滤波的具体代码,供大家参考,具体内容如下 原理 均值滤波其实就是对目标像素及周边像素取平均值后再填回目标像素来实现滤波目的的方法,当滤波核的大小是 ...

  2. python实现均值滤波_opencv+python实现均值滤波

    本文实例为大家分享了opencv+python实现均值滤波的具体代码,供大家参考,具体内容如下 原理 均值滤波其实就是对目标像素及周边像素取平均值后再填回目标像素来实现滤波目的的方法,当滤波核的大小是 ...

  3. [Python从零到壹] 五十五.图像增强及运算篇之图像平滑(均值滤波、方框滤波、高斯滤波)

    又是一年1024,首先,祝大家节日快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界 ...

  4. opencv均值滤波,方盒滤波,cv2.boxFilter,cv2blur

    均值滤波 opencv使用均值滤波是通过cv2.blur来实现的,原理十分简单,就是根据周围取平均值 下面对方法进行介绍 def blur(src, ksize, dst=None, anchor=N ...

  5. 《OpenCv视觉之眼》Python图像处理五 :Opencv图像去噪处理之均值滤波、方框滤波、中值滤波和高斯滤波

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  6. 【图像处理】——图像滤波(Python+opencv实现三种方法:均值滤波、中值滤波、高斯滤波等)

    目录 一.什么是滤波以及滤波的目的? 二.均值滤波(cv2.blur()) 1.原理 2.关键代码 3.封装代码 二.中值滤波(cv2.medianBlur()) 1.原理 2.关键代码 3.封装代码 ...

  7. Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

    作者 | 杨秀璋,责编 | 夕颜 题图  | 视觉中国 出品 | CSDN博客 本篇文章主要讲解Python调用OpenCV实现图像平滑,包括四个算法:均值滤波.方框滤波.高斯滤波和中值滤波.全文均是 ...

  8. OpenCV Python教程(3)(4)(5): 直方图的计算与显示 形态学处理 初级滤波内

    OpenCV Python教程(3.直方图的计算与显示) 本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途 ...

  9. [Python图像处理] 四十一.Python图像平滑万字详解(均值滤波、方框滤波、高斯滤波、中值滤波、双边滤波)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  10. [Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

最新文章

  1. C语言中结构体的位域(bit-fields)
  2. Spring 注解编程之 AnnotationMetadata
  3. mysql数据库实现主从复制
  4. Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】
  5. 1-3.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之三
  6. oracle之三闪回flashback
  7. Envious Exponents
  8. HTML MarkDown编辑器实现
  9. es做mysql二级索引_用Elasticsearch实现HBase二级索引
  10. CPU在计算机领域的含义,电脑中的CPU是什么意思
  11. 静态HTML+CSS 中国高等教育学生信息网(学信网)网站
  12. web网页设计期末课程大作业:基于HTML+CSS+JavaScript个人书画作品展示HTML模板(6页)
  13. 人工智能实验二——prolog语言求解渡河问题(传教士和野人渡河,农夫渡河问题)实现详解
  14. 今日头条如何运营,今日头条怎么运营好,今日头条运营技巧
  15. 唯一ID生成算法剖析
  16. 网络摄像机-ISP基础一
  17. linux用cat命令创建一个文件,用cat在命令行创建文件
  18. Protege新手入门(基础篇)
  19. J网页制作之avaScript 简介
  20. 关于canvas.toDataURL的那些坑

热门文章

  1. 上海清晖6月PMP认证考前培训,万名PMP见证!
  2. 家谱社交网站MyHeritage开放家庭图谱API
  3. js监听浏览器焦点事件
  4. 交易周期整整短1个月!深圳买房新概念盒区房表现抢眼
  5. 格林公式的原理理解(考研数学)
  6. 服务器芯片背后的故事:从理想到现实
  7. 基于SIMULINK的空间矢量脉宽调制SVPWM的建模与仿真(基于C语言的SIMULINK仿真模型 | 基于SVPWM模块的仿真)
  8. 台式计算机主要有哪些硬件组成,台式电脑主机的硬件组成部分简介
  9. HIECUBE电源模块的波纹及解决办法
  10. error: expected declaration specifiers or ‘...’ before numeric constant