# -*- coding: utf-8 -*- #code:myhaspl@myhaspl.com #归一化块滤波 import cv2 import numpy as np fn="test3.jpg" myimg=cv2.imread(fn) img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY) #加上高斯噪声,能够參考曾经博文中的内容 ...... ...... #滤波去噪 lbimg=cv2.blur(newimg,(3,3)) cv2.imshow(‘src‘,newimg) cv2.imshow(‘dst‘,lbimg) cv2.waitKey() cv2.destroyAllWindows()
右图是加上噪声,左图是去除噪声后,尽管进行了图像模糊,但仍能比較清晰
依据原理,使用第3个脉冲响应函数(也有人称它为核函数),例如以下:
用python实现这个算法
#code:myhaspl@myhaspl.com #归一化块滤波 ... ... #用第3个脉冲响应函数 a=1/16.0 kernel=a*np.array([[1,2,1],[2,4,2],[1,2,1]]) for y in xrange(1,myh-1): for x in xrange(1,myw-1): lbimg[y,x]=np.sum(kernel*tmpimg[y-1:y+2,x-1:x+2]) print ".",
效果例如以下图
Blurs an image using the normalized box filter.
Parameters: |
|
---|
注意,blur函数使用了第1个脉冲响应函数,例如以下:
The function smoothes an image using the kernel:
# -*- coding: utf-8 -*- #code:myhaspl@myhaspl.com #归一化块滤波 import cv2 import numpy as np fn="test3.jpg" myimg=cv2.imread(fn) img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY) #加上椒盐噪声 #灰阶范围 w=img.shape[1] h=img.shape[0] newimg=np.array(img) #噪声点数量 noisecount=100000 for k in xrange(0,noisecount): xi=int(np.random.uniform(0,newimg.shape[1])) xj=int(np.random.uniform(0,newimg.shape[0])) newimg[xj,xi]=255 #滤波去噪 lbimg=cv2.blur(newimg,(5,5)) cv2.imshow(‘src‘,newimg) cv2.imshow(‘dst‘,lbimg) cv2.waitKey() cv2.destroyAllWindows()
数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波),布布扣,bubuko.com
数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波)
原文:http://www.cnblogs.com/mfrbuaa/p/3891598.html