【OpenCV-系列2】06 图像平滑/去噪

  学习目标:
  了解图像中的噪声类型
  了解均值滤波、高斯滤波、中值滤波等内容
  能够使用滤波器进行图像处理
在这里插入图片描述

1 图像噪声

  由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理,常见的噪声有高斯噪声、椒盐噪声等。

1.1 椒盐噪声

  椒盐噪声:也称为脉冲噪声,是图像处理中常见的一种噪声,它是一种随机出现的白点或黑点。
在这里插入图片描述

1.2 高斯噪声

  高斯噪声:是指噪声的(灰度值)密度函数服从高斯分布。
在这里插入图片描述
在这里插入图片描述

2 图像平滑

  图像平滑从信号处理的角度看,就是去除其中的高频信息,保留低频信息。因此可以对图像实施低通滤波,低通滤波可以去除图像中的噪声,对图像进行平滑。

2.1 均值滤波

  定义: 采用均值滤波模板,对图像中的噪声进行去除——卷积框覆盖区域所有像素的平均值来代替中心元素。
  特点: 均值滤波的算法优点是算法简单,计算速度快,缺点是去噪的时候会去掉很多细节细腻,将图像变得模糊。
  API: cv2.blur(src,ksize,anchor,borderType)
  参数:
    src:输入图像
    ksize:卷积核大小
    anchor:默认值(-1,-1)表示核中心
    borderType:边界类型

import cv2
import matplotlib.pyplot as plt
import numpy as np
#1. 读取图像
img1=cv2.imread('blur_sp.png')#椒盐噪声的图像
img2=cv2.imread('blur_gs.png')#高斯噪声的图像

#2.均值滤波
img_blur1=cv2.blur(img1,(5,5))
#3.显示图像
cv2.imshow('origin',img1)
cv2.imshow('blur_jiaoyan',img_blur1)
cv2.waitKey(0)

在这里插入图片描述

2.2 高斯滤波

  二维高斯: 概率分布,在xy方向都是高斯分布
在这里插入图片描述
  G(x,y)的分布式一个凸起的帽子的形状
在这里插入图片描述
  正态分布是一种钟型曲线,越接近中心,取值越大,越远离中心,取值越小。计算高斯平滑结果时,只需要将中心点作为原点,其他点按照其在正态分布曲线上的位置,分配权重,就可以得到一个加权平均值。 (高斯平滑/滤波,在去除高斯噪声方面非常有效)
  高斯平滑/滤波的流程:
  (1)确定权重矩阵
  需要设定方差,确定高斯滤波的权重矩阵。因为该矩阵权重的总和为x,因此权重矩阵还要除以x,得到最终的权重矩阵。
  (2)计算高斯模糊
  利用权重矩阵计算高斯模糊(权重矩阵和图像元素值进行相乘,并求和,求和的结果为高斯模糊的结果)
  API: cv2.GaussianBlur(src,sigmax,sigmay,borderType)
  参数:
    src:输入图像
    ksize:高斯卷积核大小,注意卷积核的宽度和高度都应该为奇数,且可以不同
    sigmax:水平方向的标准差
    sigmay:垂直方向的标准差,默认为0,表示与sigmax相同
    borderType:填充边界类型

import cv2
import matplotlib.pyplot as plt
import numpy as np
#1. 读取图像
img1=cv2.imread('blur_sp.png')#椒盐噪声的图像
img2=cv2.imread('blur_gs.png')#高斯噪声的图像

#2.高斯滤波
img_blur1=cv2.GaussianBlur(img2,(3,3),sigmaX=1)
#3.显示图像
cv2.imshow('origin',img2)
cv2.imshow('blur_jiaoyan',img_blur1)
cv2.waitKey(0)

在这里插入图片描述

2.3 中值滤波

  定义: 中值滤波是一种典型的非线性滤波技术,基本思想是 用像素点邻域灰度值的中值来替代该像素点的灰度值。
  特点: 对椒盐噪声尤其有用,因为他不依赖邻域内那些典型值差别很大的值
  API: cv2.medianBlur(src,ksize)
    src:输入图像
    ksize:卷积核大小

import cv2
import matplotlib.pyplot as plt
import numpy as np
#1. 读取图像
img1=cv2.imread('blur_sp.png')#椒盐噪声的图像
img2=cv2.imread('blur_gs.png')#高斯噪声的图像

#2.均值滤波

img_blur1=cv2.medianBlur(img1,3)
#3.显示图像
cv2.imshow('origin',img1)
cv2.imshow('blur_jiaoyan',img_blur1)
cv2.waitKey(0)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值