首页 > 编程语言 > 详细

数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波)

时间:2014-08-05 10:45:19      阅读:496      评论:0      收藏:0      [点我收藏+]
# -*- 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()


bubuko.com,布布扣

右图是加上噪声,左图是去除噪声后,尽管进行了图像模糊,但仍能比較清晰

bubuko.com,布布扣

依据原理,使用第3个脉冲响应函数(也有人称它为核函数),例如以下:

bubuko.com,布布扣



本博客全部内容是原创,假设转载请注明来源

http://blog.csdn.net/myhaspl/


用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 ".",



效果例如以下图


bubuko.com,布布扣


opencv提供的blur函数使用说明例如以下 :

Blurs an image using the normalized box filter.

C++: void blur(InputArray src, OutputArray dst, Size ksize, Pointanchor=Point(-1,-1), int borderType=BORDER_DEFAULT )
Python: cv2.blur(src, ksize[, dst[, anchor[, borderType]]]) → dst
Parameters:
  • src – input image; it can have any number of channels, which are processed independently, but the depth should be CV_8UCV_16U,CV_16SCV_32F or CV_64F.
  • dst – output image of the same size and type as src.
  • ksize – blurring kernel size.
  • anchor – anchor point; default value Point(-1,-1) means that the anchor is at the kernel center.
  • borderType – border mode used to extrapolate pixels outside of the image.

注意,blur函数使用了第1个脉冲响应函数,例如以下:

The function smoothes an image using the kernel:

bubuko.com,布布扣

对椒盐噪声的归一化块滤波滤波,须要将作用域扩大,但会更模糊,但效果更好
# -*- 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() 



bubuko.com,布布扣

本博客全部内容是原创,假设转载请注明来源

http://blog.csdn.net/myhaspl/



数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波),布布扣,bubuko.com

数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波)

原文:http://www.cnblogs.com/mfrbuaa/p/3891598.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!