图像处理之图像模糊与平滑等操作
图像模糊与平滑
使用低通滤波器可以达到图像模糊的目的。这对与去除噪音很有帮助。其
实就是去除图像中的高频成分(比如:噪音,边界)。所以边界也会被模糊一
点。(当然,也有一些模糊技术不会模糊掉边界)。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)
图像处理之图像模糊与平滑等操作相关推荐
- OpenCV中的5种平滑滤波操作
平滑滤波是一种简单又常见的图像处理操作.平滑图像的目的有很多,但通常都是为了减少噪声和伪影. 在OpenCV中共有5种平滑滤波操作,分别是以下几种: 实验测试代码如下: #include<ios ...
- python图像腐蚀处理_Python图像处理之膨胀与腐蚀的操作
引言 膨胀与腐蚀是图像处理中两种最基本的形态学操作,膨胀将目标点融合到背景中,向外部扩展,腐蚀与膨胀意义相反,消除连通的边界,使边界向内收缩.在本文中我们将了解使用内核的图像膨胀与腐蚀的基本原理. 让 ...
- 图像处理边缘增强matlab,数字图像处理实验 matlab 图像增强 边缘检测 图像操作.doc...
数字图像处理实验 matlab 图像增强 边缘检测 图像操作 实验1 点运算和直方图处理 实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理. ...
- 数字图像处理:空间相关与卷积操作
目录 1.数字图像处理中相关和卷积的区别 2.线性滤波 3.卷积的操作 3.1.卷积介绍 3.2.边界补充方法 3.3.常用卷积核及其意义 3.4.卷积的计算 3.4.1.空域计算-直接2D卷积 3. ...
- opencv数字图像处理(图像模糊)
图像基础 图像几何变换 图像模糊 图像边缘 图像阈值分割 形态学处理 图像模糊 1)一维卷积:定义比较简单的运算 2)二维卷积:标准版&实用版(对应相乘) 卷积之后图片变小,其余部分进行填充 ...
- python图像锐化_Python图像处理介绍--图像模糊与锐化
欢迎关注 "小白玩转Python",发现更多 "有趣" 引言 在之前的文章中,我们讨论了边缘检测内核.在本文我们将讨论如何在图像上应用模糊与锐化内核,将这些内核 ...
- opencv获取mat的指针_数字图像处理之opencv中Mat数据操作
数字图像处理其实就是处理二维矩阵数据.利用opencv来学习处理算法是一种比较好的方式.学习opencv,主要就是调用其中的图像处理函数来实现各种操作.如果要得到想要的处理结果,还需要对图像处理算法有 ...
- 1.图像显示图像腐蚀图像模糊canny边缘检测视频操作调用摄像头
今天是开始学习OpenCV的第一天,简单记录下,运气不错,环境配置一遍过,很舒服.主要使用简单快速上手下 显示图片 /*1.显示图片*/Mat srcimg = imread("1.png& ...
- python 图片锐化_Python图像处理介绍--图像模糊与锐化
欢迎关注 "小白玩转Python",发现更多 "有趣" 引言 在之前的文章中,我们讨论了边缘检测内核.在本文我们将讨论如何在图像上应用模糊与锐化内核,将这些内核 ...
最新文章
- utf8 连接 mysql_mysql配置为支持utf8的连接方式只要改client就可以了吗
- OpenCV——KNN分类算法 摘
- Openstack组件部署 — Overview和前期环境准备
- 大话中文文本分类之TextRNN
- 【视频】详解HDFS的HA高可用原理
- 【Android Studio】查看源码时提示“throw new RuntimeException(Stub!)”
- [JavaWeb-HTML]HTML标签_文件标签
- 64位 regsrv win10_Win10 64位安装个人版SQL2000图文教程
- centos7 如何安装部署k8s_如何在centos7上安装FreeIPA的客户端
- HttpURLConnection中connection.getInputStream()报异常FileNotFoundException
- 蓝桥杯 ADV-143算法提高 扶老奶奶过街
- php 进销存 源代码_PHP 进销存源码
- NTFS, FAT32和exFAT文件系统有什么区别
- IDEA 修改文件编码
- 腾讯云OSS使用指南
- pyodbc 连接oracle
- python邮件处理(1)-IMAP收取邮件
- Bias和Variance
- 用js代码简单的介绍自己
- windows下Intel核显应用ffmpeg的qsv插件编解码