图像模糊与平滑

使用低通滤波器可以达到图像模糊的目的。这对与去除噪音很有帮助。其
实就是去除图像中的高频成分(比如:噪音,边界)。所以边界也会被模糊一
点。(当然,也有一些模糊技术不会模糊掉边界)。OpenCV 提供了四种模糊技
术。

1.平均

这是由一个归一化卷积框完成的。他只是用卷积框覆盖区域所有像素的平
均值来代替中心元素。可以使用函数 cv2.blur() 和 cv2.boxFilter() 来完
这个任务。

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('opencv_logo.png')
blur = cv2.blur(img,(5,5))
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

2.高斯模糊

现在把卷积核换成高斯核(简单来说,方框不变,将原来每个方框的值是
相等的,现在里面的值是符合高斯分布的,方框中心的值最大,其余方框根据
距离中心元素的距离递减,构成一个高斯小山包。原来的求平均数现在变成求
加权平均数,全就是方框里的值)。实现的函数是 cv2.GaussianBlur()。我
们需要指定高斯核的宽和高(必须是奇数)。以及高斯函数沿 X,Y 方向的标准
差。如果我们只指定了 X 方向的的标准差,Y 方向也会取相同值。如果两个标
准差都是 0,那么函数会根据核函数的大小自己计算。高斯滤波可以有效的从
图像中去除高斯噪音。

#0 是指根据窗口大小( 5,5 )来计算高斯函数标准差
blur = cv2.GaussianBlur(img,(5,5),0)

3.中值模糊

顾名思义就是用与卷积框对应像素的中值来替代中心像素的值。这个滤波
器经常用来去除椒盐噪声。前面的滤波器都是用计算得到的一个新值来取代中
心像素的值,而中值滤波是用中心像素周围(也可以使他本身)的值来取代他。
他能有效的去除噪声。卷积核的大小也应该是一个奇数。
在这个例子中,我们给原始图像加上 50% 的噪声然后再使用中值模糊。

median = cv2.medianBlur(img,5)

4.双边滤波

函数 cv2.bilateralFilter() 能在保持边界清晰的情况下有效的去除噪
音。但是这种操作与其他滤波器相比会比较慢。我们已经知道高斯滤波器是求
中心点邻近区域像素的高斯加权平均值。这种高斯滤波器只考虑像素之间的空
间关系,而不会考虑像素值之间的关系(像素的相似度)。所以这种方法不会考
虑一个像素是否位于边界。因此边界也会别模糊掉,而这不是我们想要的。

双边滤波在同时使用空间高斯权重和灰度值相似性高斯权重。空间高斯函
数确保只有邻近区域的像素对中心点有影响,灰度值相似性高斯函数确保只有
与中心像素灰度值相近的才会被用来做模糊运算。所以这种方法会确保边界不
会被模糊掉,因为边界处的灰度值变化比较大。

#cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace)
#d – Diameter of each pixel neighborhood that is used during filtering.
# If it is non-positive, it is computed from sigmaSpace
#9 邻域直径,两个 75 分别是空间高斯函数标准差,灰度值相似性高斯函数标准差
blur = cv2.bilateralFilter(img,9,75,75)

5. 边缘增强

    kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)  # 定义一个核dst = cv2.filter2D(img2.copy(), -1, kernel=kernel)

图像处理之图像模糊与平滑等操作相关推荐

  1. OpenCV中的5种平滑滤波操作

    平滑滤波是一种简单又常见的图像处理操作.平滑图像的目的有很多,但通常都是为了减少噪声和伪影. 在OpenCV中共有5种平滑滤波操作,分别是以下几种: 实验测试代码如下: #include<ios ...

  2. python图像腐蚀处理_Python图像处理之膨胀与腐蚀的操作

    引言 膨胀与腐蚀是图像处理中两种最基本的形态学操作,膨胀将目标点融合到背景中,向外部扩展,腐蚀与膨胀意义相反,消除连通的边界,使边界向内收缩.在本文中我们将了解使用内核的图像膨胀与腐蚀的基本原理. 让 ...

  3. 图像处理边缘增强matlab,数字图像处理实验 matlab 图像增强 边缘检测 图像操作.doc...

    数字图像处理实验 matlab 图像增强 边缘检测 图像操作 实验1 点运算和直方图处理 实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理. ...

  4. 数字图像处理:空间相关与卷积操作

    目录 1.数字图像处理中相关和卷积的区别 2.线性滤波 3.卷积的操作 3.1.卷积介绍 3.2.边界补充方法 3.3.常用卷积核及其意义 3.4.卷积的计算 3.4.1.空域计算-直接2D卷积 3. ...

  5. opencv数字图像处理(图像模糊)

    图像基础 图像几何变换 图像模糊 图像边缘 图像阈值分割 形态学处理 图像模糊 1)一维卷积:定义比较简单的运算 2)二维卷积:标准版&实用版(对应相乘) 卷积之后图片变小,其余部分进行填充 ...

  6. python图像锐化_Python图像处理介绍--图像模糊与锐化

    欢迎关注 "小白玩转Python",发现更多 "有趣" 引言 在之前的文章中,我们讨论了边缘检测内核.在本文我们将讨论如何在图像上应用模糊与锐化内核,将这些内核 ...

  7. opencv获取mat的指针_数字图像处理之opencv中Mat数据操作

    数字图像处理其实就是处理二维矩阵数据.利用opencv来学习处理算法是一种比较好的方式.学习opencv,主要就是调用其中的图像处理函数来实现各种操作.如果要得到想要的处理结果,还需要对图像处理算法有 ...

  8. 1.图像显示图像腐蚀图像模糊canny边缘检测视频操作调用摄像头

    今天是开始学习OpenCV的第一天,简单记录下,运气不错,环境配置一遍过,很舒服.主要使用简单快速上手下 显示图片 /*1.显示图片*/Mat srcimg = imread("1.png& ...

  9. python 图片锐化_Python图像处理介绍--图像模糊与锐化

    欢迎关注 "小白玩转Python",发现更多 "有趣" 引言 在之前的文章中,我们讨论了边缘检测内核.在本文我们将讨论如何在图像上应用模糊与锐化内核,将这些内核 ...

最新文章

  1. utf8 连接 mysql_mysql配置为支持utf8的连接方式只要改client就可以了吗
  2. OpenCV——KNN分类算法 摘
  3. Openstack组件部署 — Overview和前期环境准备
  4. 大话中文文本分类之TextRNN
  5. 【视频】详解HDFS的HA高可用原理
  6. 【Android Studio】查看源码时提示“throw new RuntimeException(Stub!)”
  7. [JavaWeb-HTML]HTML标签_文件标签
  8. 64位 regsrv win10_Win10 64位安装个人版SQL2000图文教程
  9. centos7 如何安装部署k8s_如何在centos7上安装FreeIPA的客户端
  10. HttpURLConnection中connection.getInputStream()报异常FileNotFoundException
  11. 蓝桥杯 ADV-143算法提高 扶老奶奶过街
  12. php 进销存 源代码_PHP 进销存源码
  13. NTFS, FAT32和exFAT文件系统有什么区别
  14. IDEA 修改文件编码
  15. 腾讯云OSS使用指南
  16. pyodbc 连接oracle
  17. python邮件处理(1)-IMAP收取邮件
  18. Bias和Variance
  19. 用js代码简单的介绍自己
  20. windows下Intel核显应用ffmpeg的qsv插件编解码

热门文章

  1. flex布局,居中和换行
  2. oracle dump 文件解析,实用解析dmp文件内容
  3. python列表元素循环左移_python字符串循环左移
  4. 菜鸟带你看源码——看不懂你打我ArrayList源码分析(基于java 8)
  5. 【机器学习】LASSO算法弹性网络
  6. AutoCAD 定义 AutoLISP 函数
  7. 驱动程序开发:SPI设备驱动
  8. 【科创人独家】科界CTO林镇南:言必真,行必果,没有尽力而为,只有全力以赴
  9. 数电课程设计分享之流水灯
  10. 鸿蒙系统支持手表,终于等到了!WATCH旗舰系列搭载鸿蒙系统,你会支持吗?