Python OpenCV 滤波器 使用(八)
来源:互联网 发布:ug钻孔编程后处理 编辑:程序博客网 时间:2024/06/06 09:11
一:低通滤波器
低通滤波器的目标是降低图像的变化率,比如将第一个像素替换为该像素周围像素的均值。这样就可以平滑并替代那些强度变化明显的区域。
OpenCV 使用blur 函数做到:
dst = cv2.blur(image,(5,5)); # dst -- 处理后的图像# image -- 待平滑处理的图像#(5,5) -- 低通滤波器的大小
简单使用示例:
#!/usr/bin/env python # encoding: utf-8 import cv2 import numpy as np img = cv2.imread("2.jpg", 0) result = cv2.blur(img, (5,5)) cv2.imshow("Origin", img) cv2.imshow("Blur", result) cv2.waitKey(0) cv2.destroyAllWindows()图像效果:
相同滤波效果函数:boxFilter
result1 = cv2.boxFilter(img, -1, (5, 5))
二:高斯滤波
与低通滤波器不同,低通滤波器中每个像素的权重是相同的,即滤波器是线性的。而高斯滤波器中像素的权重与其距中心像素的距离成比例。
在一些需要对一个像素的周围的像素给予更多的重视,可以通过分配权重来重新计算这些周围点值。这可通过高斯函数(钟形函数,即喇叭形数)
的权重方案来解决。
cv::GaussianBlur
result = cv2.GaussianBlur(img,(5,5),1.5)
三:中值滤波器
中值滤波器是非线性滤波器,它对消除椒盐现象特别有用,
result = cv2.medianBlur(image,5)image -- 原图像
5 -- 孔径尺寸,一个大于1的奇数。5 中值滤波器会使用 5 x 5 的范围来计算。即对像素的中心值及其 5 x 5 邻域组成了一个数值集,对其进行处理计算
,当前像素被其中值替换掉。
如果在某个像素周围有白色或黑色的像素,这些白色或黑色的像素不会选择作为中值(最大或最小值不用),而是被替换为邻域值,示例如下:
#!/usr/bin/env python # encoding: utf-8 import cv2 import numpy as np def salt(img, n): for k in range(n): i = int(np.random.random() * img.shape[1]); j = int(np.random.random() * img.shape[0]); if img.ndim == 2: img[j,i] = 255 elif img.ndim == 3: img[j,i,0]= 255 img[j,i,1]= 255 img[j,i,2]= 255 return img img = cv2.imread("2.jpg", 0) result = salt(img, 500) median = cv2.medianBlur(result, 5) cv2.imshow("Salt", result) cv2.imshow("Median", median) cv2.waitKey(0)效果图:
中值滤波不会处理最大和最小值,所以就不会受到噪声的影响。相反如果直接采用 blur(低通滤波器)进行均值滤波,
则不会区分这些噪声点,滤波后的图像会受到噪声的影响。
中值滤波器的在处理边缘也有优势。但中值滤波器会清除某些区域的纹理(如背景中的树)
参考和转载:
http://blog.csdn.net/sunny2038/article/details/9155893
0 0
- Python OpenCV 滤波器 使用(八)
- Python OpenCV 线性滤波器 简介(七)
- opencv滤波器的使用
- Python下opencv使用笔记(八)(图像金字塔)
- Opencv学习笔记(一)滤波器原理及其使用
- 使用OpenCV进行图片模糊处理(归一化滤波器)
- 使用OpenCV进行图片模糊处理(高斯滤波器)
- OpenCV滤波器
- opencv滤波器
- Opencv中卡尔曼滤波器的使用
- OpenCV 卡尔曼滤波器的使用
- OpenCV 卡尔曼滤波器的使用
- OpenCV 各种滤波器的简单使用
- OpenCV python 学习笔记(八)
- Python-OpenCV 处理图像(八):图像二值化处理
- OpenCV目标跟踪(五)-kalman滤波器
- 【opencv练习07 - 滤波器(锐化)】
- OpenCV笔记(八)
- execl find和search函数的区别
- inline函数
- Javascript面向对象编程(三):非构造函数的继承
- Javascript面向对象编程(二):构造函数的继承
- <mfc深入浅出>学习笔记一
- Python OpenCV 滤波器 使用(八)
- 链表(Java描述)
- Python生成黑客字典程序(一)
- 如何删除bde
- Javascript继承机制的设计思想
- linux ntpdate同步网络时间
- 纵横交错地考查C++功底
- 枚举类型和注解
- Android : assets与res/raw资源目录的区别