OpenCV python 学习笔记(九)
2017-03-26 10:28
429 查看
# -- coding:utf-8 -- """ 图像的平滑: 学习使用不同的低通滤波器对图像进行模糊 使用自定义的滤波器对图像进行卷积(2D 卷积) 2D 卷积: 我们可以对2D图像实施低通滤波(LPF)或者高通滤波(HPF)等。 LPF 帮助我们去除噪音,模糊图像。 HPF 帮助我们找到图像的边缘 OpenCV 提供的函数 cv.filter2D()可以让我们对一幅图像进行卷积操作 例如 我们对一幅图像使用平均滤波器。下面是一个 5x5 的平均滤波器核: K =1/25*D (D是5*5的矩阵,且每一个元素都是1) 操作如下: 将核放在图像的一个像素A上,求与核对应的图像上25(5x5)个像素的和, 在取平均数,用这个平均数替代像素 A 的值。 重复以上操作直到将图像的每一个像素值都更新一边 双边滤波: 函数 cv2.bilateralFilter()能在保持边界清晰的情况下有效的去除噪音。 但是这种操作与其他滤波器相比会比较慢。 高斯滤波器是求中心点邻近区域像素的高斯加权平均值。 这种高斯滤波器只考虑像素之间的空间关系,而不会考虑像素值之间的关系(像素的相似度)。 所以这种方法不会考虑一个像素是否位于边界。因此边界也会别模糊掉,而这正不是我们想要。 双边滤波在同时使用空间高斯权重和灰度值相似性高斯权重。 空间高斯函数确保只有邻近区域的像素对中心点有影响, 灰度值相似性高斯函数确保只有与中心像素灰度值相近的才会被用来做模糊运算。 所以这种方法会确保边界不会被模糊掉,因为边界处的灰度值变化比较大。 """ import cv2 import numpy as np def showImg(img_list): count = 0 for i in img_list: cv2.imshow("res"+str(count), i) count += 1 if cv2.waitKey(0) & 0xFF == 27: cv2.destroyAllWindows() def getImg(img_path): # 我的是列图片太大了,写了这个函数将图片变小 a_img = cv2.imread(img_path) return cv2.resize(a_img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_CUBIC) # 2D卷积范例 img_path = "02.jpg" img_2D = getImg(img_path) img_show_list = [img_2D] # k就是刚刚说的矩阵D,若是矩阵大了,图片就显得很亮,小了,就显得很暗,可以试试 k_size = 5 k = np.ones((k_size, k_size), np.float32)/25 dst = cv2.filter2D(img_2D, -1, k) img_show_list.append(dst) # 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 分别是空间高斯函数标准差,灰度值相似性高斯函数标准差 img_blur = cv2.bilateralFilter(getImg(img_path), 9, 75, 75) img_show_list.append(img_blur) showImg(img_show_list)
相关文章推荐
- opencv_python学习笔记一
- Opencv for Python 学习笔记 2.1 摄像头
- opencv-python 学习笔记1:简单的图片处理
- Python3+OpenCV学习笔记(五):鸟类检测模型的训练
- Python OpenCV学习笔记之:图像阈值操作
- OpenCV之Python学习笔记
- python OpenCV学习笔记(九):图片的几何变形
- Python OpenCV学习笔记之:使用Grabcut算法进行图像背景和前景分割
- opencv_python学习笔记九
- OpenCV python 学习笔记(八)
- Python OpenCV学习笔记之:图像数学形态操作
- 【基于C++和Python的Opencv3学习笔记之基本图形的绘制】
- Python OpenCV学习笔记之:判断OpenCV是否已经打开优化功能
- Python OpenCV学习笔记之:图像读取,显示及保存
- python opencv入门(学习笔记no.3)-从摄像头读取视频并显示
- Python模块学习笔记— —OpenCV(01)模块的配置
- opencv_python学习笔记三
- 【基于C++和Python的Opencv3学习笔记之滑动条的使用】
- python OpenCV学习笔记直方图反向投影的实现
- opencv_python学习笔记二