vim+python+OpenCV学习六 : 滤波初级

#coding=utf-8

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

import cv2

img=cv2.imread('test5.jpg')
'''
其中dst是blur处理后返回的图像,参数一是输入的待处理图像,
参数2是低通滤波器的大小。其后含有几个可选参数,
用来设置滤波器的细节,

下面这个滤波器也可以达到同样的效果
result1 = cv2.boxFilter(img, -1, (5, 5))  
'''
result1=cv2.blur(img,(5,5))   #这个是低通滤波器
result2=cv2.blur(img,(15,15))   #这个是低通滤波器

cv2.imshow('Origin',img)
cv2.imshow('Blur5*5',result1)
cv2.imshow('Blur15*15',result2)

cv2.waitKey(0)
cv2.destroyAllWindows()


#coding=utf-8

#高斯滤波的效果比低通滤波的效果好很多,辨识度要高

'''
高斯模糊:
在某些情况下,需要对一个像素的周围的像素给予更多的重视。
因此,可通过分配权重来重新计算这些周围点的值。
这可通过高斯函数(钟形函数,即喇叭形数)的权重方案来解决。

低通滤波与高斯滤波的不同之处在于:低通滤波中,滤波器中每个像素的权重是相同的,
即滤波器是线性的。而高斯滤波器中像素的权重与其距中心像素的距离成比例。

'''

import cv2

img=cv2.imread('test5.jpg')

gaussianResult1 = cv2.GaussianBlur(img,(5,5),1.5)      #这个是高斯滤波器
gaussianResult2 = cv2.GaussianBlur(img,(15,15),1.5)     

cv2.imshow('Origin',img)
cv2.imshow('GaussianBlur(img,(5,5),1.5)',gaussianResult1)
cv2.imshow('GaussianBlur(img,(15,15),1.5) ',gaussianResult2)

cv2.waitKey(0)
cv2.destroyAllWindows()



#coding=utf-8
import numpy as np 

'''
中值滤波:
前面介绍的是线性过滤器,这里介绍非线性过滤器——中值滤波器。
由于中值滤波器对消除椒盐现象特别有用。所以我们使用
椒盐函数先对图像进行处理,将处理结果作为示例图片。

函数返回处理结果,第一个参数是待处理图像,第二个参数是孔径的尺寸,
一个大于1的奇数。
比如这里是5,中值滤波器就会使用5×5的范围来计算。即对像素的中心值及其5×5邻域组成
了一个数值集,对其进行处理计算,当前像素被其中值替换掉。

'''

import cv2

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('test5.jpg')
result = salt(img, 500) 
median = cv2.medianBlur(result, 3)  #这个是中值滤波

cv2.imshow('Salt',result)

cv2.imshow('MedianBlur ',median)

cv2.waitKey(0)
cv2.destroyAllWindows()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值