1. # -*- coding: utf-8 -*-
  2. #code:myhaspl@myhaspl.com
  3. #归一化块滤波
  4. import cv2
  5. import numpy as np
  6. fn="test3.jpg"
  7. myimg=cv2.imread(fn)
  8. img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY)
  9.  
  10. #加上高斯噪声,能够參考曾经博文中的内容
  11. ......
  12. ......
  13. #滤波去噪
  14. lbimg=cv2.blur(newimg,(3,3))
  15. cv2.imshow('src',newimg)
  16. cv2.imshow('dst',lbimg)
  17. cv2.waitKey()
  18. cv2.destroyAllWindows()

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

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

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

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

用python实现这个算法

  1. #code:myhaspl@myhaspl.com
  2. #归一化块滤波
  3. ...
  4. ...
  5. #用第3个脉冲响应函数
  6. a=1/16.0
  7. kernel=a*np.array([[1,2,1],[2,4,2],[1,2,1]])
  8. for y in xrange(1,myh-1):
  9. for x in xrange(1,myw-1):
  10. lbimg[y,x]=np.sum(kernel*tmpimg[y-1:y+2,x-1:x+2])
  11. print ".",

效果例如以下图

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:

对椒盐噪声的归一化块滤波滤波,须要将作用域扩大,但会更模糊,但效果更好
  1. # -*- coding: utf-8 -*-
  2. #code:myhaspl@myhaspl.com
  3. #归一化块滤波
  4. import cv2
  5. import numpy as np
  6. fn="test3.jpg"
  7. myimg=cv2.imread(fn)
  8. img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY)
  9.  
  10. #加上椒盐噪声
  11. #灰阶范围
  12. w=img.shape[1]
  13. h=img.shape[0]
  14. newimg=np.array(img)
  15. #噪声点数量
  16. noisecount=100000
  17. for k in xrange(0,noisecount):
  18. xi=int(np.random.uniform(0,newimg.shape[1]))
  19. xj=int(np.random.uniform(0,newimg.shape[0]))
  20. newimg[xj,xi]=255
  21.  
  22. #滤波去噪
  23. lbimg=cv2.blur(newimg,(5,5))
  24. cv2.imshow('src',newimg)
  25. cv2.imshow('dst',lbimg)
  26. cv2.waitKey()
  27. cv2.destroyAllWindows()

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

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

数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波)的更多相关文章

  1. 数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)

    Blurs an image using the median filter. C++: void medianBlur(InputArray src, OutputArray dst, int ks ...

  2. 数学之路-python计算实战(21)-机器视觉-拉普拉斯线性滤波

    拉普拉斯线性滤波,.边缘检測  . When ksize == 1 , the Laplacian is computed by filtering the image with the follow ...

  3. 数学之路-python计算实战(20)-机器视觉-拉普拉斯算子卷积滤波

    拉普拉斯算子进行二维卷积计算,线性锐化滤波 # -*- coding: utf-8 -*- #线性锐化滤波-拉普拉斯算子进行二维卷积计算 #code:myhaspl@myhaspl.com impor ...

  4. 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)

    我们来看一个灰度图像,让表示灰度出现的次数,这样图像中灰度为 的像素的出现概率是  是图像中全部的灰度数, 是图像中全部的像素数,  实际上是图像的直方图,归一化到 . 把  作为相应于  的累计概率 ...

  5. 数学之路-python计算实战(19)-机器视觉-卷积滤波

    filter2D Convolves an image with the kernel. C++: void filter2D(InputArray src, OutputArray dst, int ...

  6. 数学之路-python计算实战(9)-机器视觉-图像插值仿射

    插值 Python: cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst interpolation – interpol ...

  7. 数学之路-python计算实战(13)-机器视觉-图像增强

    指数变换的基本表达式为:y=bc(x-a)-1 当中參数b.c控制曲线的变换形状,參数a控制曲线的位置. 指数变换的作用是扩展图像的高灰度级.压缩低灰度级.能够用于亮度过高的图像 本博客全部内容是原创 ...

  8. 数学之路-python计算实战(16)-机器视觉-滤波去噪(邻域平均法滤波)

    # -*- coding: utf-8 -*- #code:myhaspl@myhaspl.com #邻域平均法滤波,半径为2 import cv2 import numpy as np fn=&qu ...

  9. 数学之路-python计算实战(18)-机器视觉-滤波去噪(双边滤波与高斯滤波 )

    高斯滤波就是对整幅图像进行加权平均的过程.每个像素点的值,都由其本身和邻域内的其它像素值经过加权平均后得到.高斯滤波的详细操作是:用一个模板(或称卷积.掩模)扫描图像中的每个像素.用模板确定的邻域内像 ...

随机推荐

  1. js之form表单的获取

    js中获取form的方法: 1. 利用表单在文档中的索引或表单的name属性来引用表单 document.forms[i] //得到页面中的第i个表单 document.forms[formName] ...

  2. 转:触屏中的js事件

    一.触摸事件 ontouchstartontouchmoveontouchendontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因此他们 ...

  3. 通过Qt样式表定制程序外观(比较通俗易懂)

    1. 何为Qt样式表[喝小酒的网摘]http://blog.hehehehehe.cn/a/10270.htm2. 样式表语法基础3. 方箱模型4. 前景与背景5. 创建可缩放样式6. 控制大小7. ...

  4. 简单浮点数除法模拟-hdu-4493-Tutor

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4493 题目意思: 给小数点后两位的12个月的工资,求出平均工资,输出离小数点后第二位最近的两位小数, ...

  5. Java数据类型BooleanDemo

  6. 从零开始学C++之IO流类库(四):输出流格式化(以操纵子方式格式化 以ios类成员函数方式格式化)

    一.以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符.把它们作为插入操作符<<的输出对象即可.如setiosflags.setw.set ...

  7. sqlserver 三种恢复模式

    sql server数据库提供了三种恢复模式:完整,简单和大容量日志,这些模式决定了sql server如何使用事务日志,如何选择它要记录的操作,以及是否截断日志.截断事务日志是删除己执行事务并把该日 ...

  8. ThinkPHP - session 数据库存储驱动

    命名格式: Session + 驱动名称 + .class.php 所有的方法要有,但不一定要实现. <?php /** * @category Extend * @package Extend ...

  9. BestCoder Round #50 (div.1) 1003 The mook jong (HDU OJ 5366) 规律递推

    题目:Click here 题意:bestcoder 上面有中文题目 分析:令f[i]为最后一个木人桩摆放在i位置的方案,令s[i]为f[i]的前缀和.很容易就能想到f[i]=s[i-3]+1,s[i ...

  10. oracle常见问题

    1.无效的月份,一个可能是字符集的问题, alter session set nls_language=american alter session set nls_language='SIMPLIF ...