文章目录

  • 1 图像噪声
  • 1.1 椒盐噪声
  • 1.2 高斯噪声
  • 2 图像去噪/滤波/平滑
  • 2.1 高斯滤波
  • 2.2 均值滤波
  • 2.3 中值滤波


1 图像噪声

  噪声的产生: 图像中间某些像素发生突变,造成与周围像素之间不和谐
  去噪: 用和谐的点替换掉不和谐的点。对灰度值的变化做均一化。
  去噪的方法:
  (1)基于卷积的方法:高斯滤波、均值滤波…
  (2)基于形态学的运算:开、闭运算…

1.1 椒盐噪声

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

医学影像去噪 深度学习 医学图像去噪方法_图像处理

1.2 高斯噪声

高斯噪声:是指噪声的(灰度值)密度函数服从高斯分布。

医学影像去噪 深度学习 医学图像去噪方法_计算机视觉_02


医学影像去噪 深度学习 医学图像去噪方法_医学影像去噪 深度学习_03

2 图像去噪/滤波/平滑

  
  
  
  

2.1 高斯滤波

  高斯核:

医学影像去噪 深度学习 医学图像去噪方法_均值滤波_04


  越接近中心,取值越大,越远离中心,取值越小。计算高斯平滑结果时,只需要将中心点作为原点,其他点按照其在正态分布曲线上的位置,分配权重,就可以得到一个加权平均值。

  高斯滤波的作用:

  (1)高斯滤波对图像进行了平滑或模糊的操作,模糊的强度是由高斯的标准方差σ决定的,标准方差越大,对图像的平滑越大,方差越小,对图像的模糊程度越小。

  (2)高斯滤波是一个平均操作,对高斯核覆盖的像素点的灰度值的平均,给中间的点给予更多的权重的平均。 使得中间的点具有更多的权重,周围点具有较低的权重。能够很好的保留原来图像的属性。

  API: cv2.GaussianBlur(src,ksize,sigmax,sigmaY=None, borderType=None)

  参数:

    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)

医学影像去噪 深度学习 医学图像去噪方法_均值滤波_05

2.2 均值滤波

  均值滤波核:

医学影像去噪 深度学习 医学图像去噪方法_均值滤波_06


  均值滤波核覆盖的每个像素点或得到了相同权重。采用均值滤波模板,对图像中的噪声进行去除——卷积框覆盖区域所有像素的平均值来代替中心元素。这种平均操作不能很好保持图像本来的属性,将图像变得异常模糊。

  API: cv2.blur(src,ksize,anchor=None, borderType=None)

  参数:

    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)

医学影像去噪 深度学习 医学图像去噪方法_均值滤波_07

2.3 中值滤波

  中值滤波核: 对核覆盖的像素灰度值做排序,取中值作为最终结果。中值滤波是一种典型的非线性滤波技术,基本思想是 用像素点邻域灰度值的中值来替代该像素点的灰度值。

医学影像去噪 深度学习 医学图像去噪方法_图像处理_08


emsp; 特点: 对椒盐噪声尤其有用,因为他不依赖邻域内那些典型值差别很大的值

  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)

医学影像去噪 深度学习 医学图像去噪方法_人工智能_09


  中值滤波的效果不如高斯滤波核均值滤波,但是运算速度快。