戳这里观看视频

空域平滑

加性噪声:可加性噪声,一般易于消除

乘性噪声:非线性引入的噪声,往往与信号密切相关

量化噪声:模拟信号转化到数字信号时取整变化产生的误差

注意template左上角的1后面有个黑点,代表运算的结果后赋给这个对应点。

一般噪声的像素与周围的像素都明显不同。


instance:

(1)cv.filter2D函数说明

使用自定义内核对图像进行卷积。该功能将任意线性滤波器应用于图像。支持就地操作。当光圈部分位于图像外部时,该功能会根据指定的边框模式插入异常像素值。

dst=cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
参数 描述
src 原图像
dst 目标图像,与原图像尺寸和通道数相同
ddepth 目标图像的所需深度
kernel 卷积核(或相当于相关核),单通道浮点矩阵;如果要将不同的内核应用于不同的通道,请使用拆分将图像拆分为单独的颜色平面,然后单独处理它们。
anchor 内核的锚点,指示内核中过滤点的相对位置;锚应位于内核中;默认值(-1,-1)表示锚位于内核中心。
detal 在将它们存储在dst中之前,将可选值添加到已过滤的像素中。类似于偏置。
borderType 像素外推法,参见BorderTypes

Note:当ddepth=-1时,表示输出图像与原图像有相同的深度。

(2)cv.blur()函数说明

blur()函数可以用标准化的盒式过滤器来平滑图像。

blur的作用是对输入的图像src进行均值滤波后用dst输出。

(3)cv.GaussianBlur函数说明

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。

参数:dst=GaussianBlur(src,ksize,sigmaX [,dst [,sigmaY [,borderType]]])
src:输入图像;图像可以具有任意数量的通道,这些通道可以独立处理,但深度应为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。
dst:输出图像的大小和类型与src相同。
ksize:高斯内核大小。 ksize.width和ksize.height可以不同,但​​它们都必须为正数和奇数,也可以为零,然后根据sigma计算得出。
sigmaX :X方向上的高斯核标准偏差。
sigmaY: Y方向上的高斯核标准差;如果sigmaY为零,则将其设置为等于sigmaX;如果两个sigmas为零,则分别从ksize.width和ksize.height计算得出;为了完全控制结果,而不管将来可能对所有这些语义进行的修改,建议指定所有ksize,sigmaX和sigmaY。

(4)cv.medianBlur函数说明

medianBlur() 执行中值滤波操作,中值滤波将图像的每个像素用邻域 (以当前像素为中心的正方形区域)像素的中值代替 。

dst=cv.medianBlur(src,ksize,dst=None)

ksize滤波模板的尺寸大小,必须是大于1的奇数,如3、5、7……

该函数使用具有ksize*ksize孔径大小的中值滤波器来平滑图像。

(5)cv.bilateralFilter函数说明

参数:

d:像素的邻域直径。

sigmaColor:颜色空间的标准方差.

sigmaSpace:坐标空间的标准方差(像素单位)

program

# -*- coding:utf-8
# opencv read image is BGR channel,and matplot read is RGBimport cv2 as cv
import numpy as np
img = cv.imread("/home/image/Pictures/lena_salt.jpg",0)
(H,W) =img.shapedef display(title,imagenum,files):cv.namedWindow(title, 0)cv.resizeWindow(title,imagenum*W,H)cv.imshow(title, np.hstack(files))def filtter2d(img):#类似卷积fil1 = np.array([[ -1,-1, 0],[ -1, 0, 1],[ 0, 1, 1]])res = cv.filter2D(img,-1,fil1)#CV自带的图像平滑方法files =[img,res]display('3X3 filter2d',files.__len__(),files)cv.waitKey(0)fil2 = np.ones((5,5),np.float32)/25dst = cv.filter2D(img,-1,fil2)files =[img,dst]display('5X5 filter2d',files.__len__(),files)cv.waitKey(0)def  blur(img):#均值滤波template1 =(3,5)blurs = cv.blur(img,template1)files = [img, blurs]display('3X5 blur',files.__len__(),files)cv.waitKey(0)def gaussiuan(img):#高斯滤波imgg = np.zeros(img.shape,np.uint8)imgg[:] = img[:]for i in range(1000):temp_x = np.random.randint(0, img.shape[0])temp_y = np.random.randint(0, img.shape[1])imgg[temp_x][temp_y] = 255blur = cv.GaussianBlur(imgg,ksize=(5,5),sigmaX=0)files = [img, imgg,blur ]display('Gaussi blur', files.__len__(), files)cv.waitKey(0)def middenblur(img):#中值滤波imgg = np.zeros(img.shape,np.uint8)imgg[:] = img[:]for i in range(3000):temp_x = np.random.randint(0, img.shape[0])temp_y = np.random.randint(0, img.shape[1])imgg[temp_x][temp_y] = 255blur = cv.medianBlur(imgg,7)files = [img, imgg,blur ]display('middian blur', files.__len__(), files)cv.waitKey(0)def bilateralFilter(img):imgg = np.zeros(img.shape,np.uint8)imgg[:] = img[:]for i in range(5000):temp_x = np.random.randint(0, img.shape[0])temp_y = np.random.randint(0, img.shape[1])imgg[temp_x][temp_y] = 255blur = cv.bilateralFilter(imgg,9,75,75,)files = [img, imgg,blur ]display('bilateralFilter blur', files.__len__(), files)cv.waitKey(0)if __name__ == '__main__':filtter2d(img)blur(img)gaussiuan(img)middenblur(img)bilateralFilter(img)

原图:

自己运行体会。


期中考试部分解析:

如何去除乘性噪声和泊松噪声?

去除泊松分布:

泊松噪声用haar小波效果不错

# 泊松分布
import pywt#小波分析库
import cv2 as cv
import matplotlib.pyplot as pltimg = cv.imread('03Poisson.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY).astype('float32')
coeffs = pywt.dwt2(gray, 'haar')
CA, (CH, CV, CD) = coeffs
plt.subplot(121)
plt.imshow(CA, 'gray')
plt.title('result')
plt.subplot(122)
plt.imshow(gray, 'gray')
plt.title('original')
plt.show()

图片:

运行结果(效果感人,很赞):

去除乘性噪声:

乘性噪声先转化为加性噪声在用中值滤波效果可以。

乘性噪声:t=s*n.s为原始信号,n为噪声。对t取log酒转化为加性噪声:logt = logs + logn

import numpy as np
import cv2 as cv
from matplotlib import pyplot as pltimg = cv.imread('04mutil.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
gray=np.float32(gray)
log = np.log(gray)#乘性噪声变加性噪声
# blur = cv.GaussianBlur(log, (5, 5), 0)
# blur = cv.blur(log, (3, 3))
blur = cv.medianBlur(log,5)
# blur = cv.bilateralFilter(log,9,75,75)
reverse = np.exp(blur)#取了log再变回去
reverse = np.uint8(reverse)
plt.subplot(221)
plt.imshow(log, 'gray')
plt.title('log')
plt.xticks([]),plt.yticks([])
plt.subplot(222)
plt.imshow(blur, 'gray')
plt.title('blur')
plt.xticks([]),plt.yticks([])
plt.subplot(223)
plt.imshow(reverse, 'gray')
plt.title('result')
plt.xticks([]),plt.yticks([])
plt.subplot(224)
plt.imshow(gray, 'gray')
plt.title('original')
plt.xticks([]),plt.yticks([])
plt.show()

图片:

运行结果:

感叹一句学长tql,我太弱鸡了www

Airspace smoothing相关推荐

  1. Spline interpolation and Savitzki-Golay smoothing

    转自:http://octave.1599824.n4.nabble.com/Spline-interpolation-and-Savitzki-Golay-smoothing-td1675136.h ...

  2. flaash-ACC_LSMOOTH2: Cannot continue with smoothing calculation

    2009年6月21日 15:22:22 采用flaash对MOD02HKM数据进行大气校正,在运行中总是出现ACC_LSMOOTH2: Cannot continue with smoothing c ...

  3. 【Paper】An Experiment Comparing Double Exponential Smoothing and Kalman Filter-Based Predict

    算法 Paper DES (Double Exponential Smoothing) 算法 Kalman-Filter Algorithm KF EKF Exponentially Weighted ...

  4. label smoothing(标签平滑)

    label smoothing是一种在分类问题中,防止过拟合的方法. label smoothing(标签平滑) 交叉熵损失函数在多分类任务中存在的问题 label smoothing(标签平滑) 参 ...

  5. OpenCV平滑图像Smoothing Images

    OpenCV平滑图像Smoothing Images 平滑图像Smoothing Images 目标 理论 归一化框式过滤器 高斯滤波器 中值过滤器 双边过滤器 解释 归一化块过滤器: 高斯滤波器: ...

  6. 【正则化】Label Smoothing详解

    1. 概述 Label Smoothing(标签平滑),像 L1.L2 和 Dropout 一样,是一种正则化方法,通常用于分类问题,目的是防止模型在训练时过于自信地预测标签,改善泛化能力差的问题(也 ...

  7. OpenCV-python学习笔记(四)——smoothing and blurring平滑和模糊

    文章目录 smoothing and blurring平滑和模糊 1 averaging均值滤波 2 gaussian高斯滤波 3 median中值滤波 4 bilateral双边滤波 smoothi ...

  8. 数字图像处理:线性和非线性滤波的平滑空间滤波器(Smoothing Spatial Filters)

    引言 本系列文章记录老猿自学冈萨雷斯<数字图像处理>的感悟和总结,不过估计更新会比较慢,白天要工作,都是晚上抽空学习,学习完一章再回头总结,想学的朋友可以自己下载英文原版(目前到第四版)和 ...

  9. python 曲线平滑_曲线平滑(smoothing)

    曲线平滑 Savitzky-Golay滤波器 It uses least squares to regress a small window of your data onto a polynomia ...

最新文章

  1. bzoj1624:[Usaco2008 Open] Clear And Present Danger 寻宝之路
  2. Dictionary转为Model实例
  3. 网页上有错误(类不能支持 Automation 操作)解决方法
  4. [html] HTML为什么要语义化?语义化有什么好处?
  5. § Transitive Intransitive Verb
  6. m1芯片MacBook安装本地编译版matplotlib库
  7. VGG Pool5 Feature Map特征提取
  8. java持久层用文件_Java持久层框架MyBatis简单实例
  9. [OpenS-CAD]屏幕坐标转换分析
  10. 僵尸启示录开始 Scheming Through Ep1 Mac游戏介绍
  11. 向日葵远程分辨率过低解决办法
  12. 使用阿里云云服务器遇到大流量攻击怎么防御
  13. pom文件报红Failure to find cn.xx:xxx:pom:3.x.x in https://maven.aliyun.com/repository/public/ was cached
  14. 齐齐哈尔鹤城计算机学校,齐齐哈尔阳光学校
  15. 优盘格式化为FAT64
  16. 电子签核系统的设计(一) - Requirements / Design
  17. Windows操作系统各版本的历史 Windows系统历史版本简介
  18. MIL/SIL/PIL/HIL/VIL
  19. 隐私保护的数据挖掘综述
  20. 碗状碎块三维模型的下载(.PLY格式)3D model file with Bowl-shaped Broken Piece (.ply format)

热门文章

  1. 英语词性-句子成分-构词法
  2. Vue导入上传Excel
  3. python jupyter notebook怎么调字体大小_配置Jupyter的代码主题 字体以及字体大小 代码自动补全...
  4. 用C/汇编代码实现imx6ull点灯
  5. MySQL 常用时间记录
  6. 计算机网络笔记——概述、物理层、链路层(方老师408课程)
  7. C#   格式化XML方法
  8. React最佳实践系列 —— Dva快速入门
  9. 关于VMware: vmw_ioctl_command error Invalid argument.解决办法
  10. L1-054 福到了 (15 分)