Python OpenCV 滤波器 使用(八)

一:低通滤波器

     低通滤波器的目标是降低图像的变化率,比如将第一个像素替换为该像素周围像素的均值。这样就可以平滑并替代那些强度变化明显的区域。

    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










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值