目录

  • 一、图像复原模型及噪声模型
    • 1、复原过程模型
    • 2、噪声模型
  • 二、空间滤波
    • 1、均值滤波器
    • 2、统计排序滤波器
    • 3、自适应滤波器
  • 三、用频率域滤波消除周期噪声(去噪复原)
    • 1、带阻滤波器
    • 2、 带通滤波器
    • 3、陷波滤波器
    • 4、最佳陷波滤波
  • 四、退化
    • 1、加性
    • 2、均匀性
    • 3、空间不变系统
    • 4、图像观察估计
    • 5、试验估计
    • 6、建模估计
  • 五、逆滤波
  • 六、维纳滤波
  • 七、几何均值滤波

一、图像复原模型及噪声模型

1、复原过程模型

退化(复原)过程被建模为一个退化函数和一个加性噪音项

退化后的图像g(x,y) = h(x,y)★f(x,y) + η(x,y),★表示卷积
根据空间域的卷积等于频率域的乘积得出:G(u,v)=H(u,v)★F(u,v)+N(u,v)

2、噪声模型

1)噪声来源于图像的获取(光照,传感器温度等)和传输过程(信道的干扰)。
2)白噪声:傅里叶频谱在整个频域内是常数的噪声。
3)概率密度函数
高斯噪声:
瑞利噪声:

伽马噪声:

指数噪声:

均匀噪声:

脉冲(椒盐)噪声:负脉冲是一个黑点(胡椒),正脉冲是一个白点(盐粒)

import cv2
from PIL import Image
import numpy as np
import matplotlib.pyplot as pltdef gasuss_noise(image, mean=0, var=0.001):'''添加高斯噪声mean : 均值var : 方差'''image = np.array(image/255, dtype=float)noise = np.random.normal(mean, var ** 0.5, image.shape)out = image + noiseif out.min() < 0:low_clip = -1.else:low_clip = 0.out = np.clip(out, low_clip, 1.0)out = np.uint8(out*255)# cv2.imshow("gasuss", out)return outimage = cv2.imread('a.jpg')
# 添加高斯噪声
insert = gasuss_noise(image, mean=0, var=0.04)
cv2.namedWindow('in', 0)
cv2.resizeWindow("in", 500,700);
cv2.imshow("in", insert)
# 高斯滤波器
delete = cv2.GaussianBlur(insert,(3,3),1)
cv2.namedWindow('out', 0)
cv2.resizeWindow("out", 500,700)
cv2.imshow("out", delete)cv2.waitKey(0)

二、空间滤波

1、均值滤波器

1)算术均值滤波器:模糊了图片,但是降低了噪声

# 均值滤波
average = cv2.blur(img,(3,3))

2)几何均值滤波器:与算术均值滤波器相比丢失细节更少

3)谐波均值滤波器:适用于处理盐粒噪声,不适用于胡椒噪声

4)逆谐波均值滤波器:Q为滤波器阶数,当Q>0,适合消除胡椒噪声,当Q<0适合消除盐粒噪声,但不可同时消除两种噪声

2、统计排序滤波器

1)中值滤波器:适用于处理单极或双极脉冲噪声

# 中值滤波
median = cv2.medianBlur(img, 3)

2)最大值最小值滤波器:
最大值滤波器:适用于发现图像中的最亮点,可以降低胡椒噪声

最小值滤波器:适用于发现图像中的最暗点,可以降低盐粒噪声

3)中点滤波器:适用于高斯噪声或均匀噪声

4)修正的阿尔法均值滤波器:高斯噪声和椒盐噪声混合情况

3、自适应滤波器

1)自适应局部降低噪声滤波器:

2)自适应中值滤波器:能够更好的保护图像中的边缘细节部分

三、用频率域滤波消除周期噪声(去噪复原)

1、带阻滤波器




2、 带通滤波器

与带阻滤波器作用相反,帮助屏蔽噪声模式
一般不会在图像上直接执行带通滤波,这样处理会使很多图像的细节消除。但可以提取噪声污染图像中的噪声模式。

3、陷波滤波器

陷波滤波器阻止(或通过)事先定义的中心频率的邻域内的频率。
必须以关于原点对称的形式出现



HNP(u,v)为陷波带通滤波器的传递函数,HNR(u,v)为陷波带阻滤波器的传递函数。

4、最佳陷波滤波

当存在几种干扰成分时(即多周期性干扰)。在一定意义上,最佳陷波滤波最小化了复原的估计值的局部方差。
主要就是从污染图像中提取噪声模型,然后从污染图像中将噪声模型减去,以复原图像。

过程由两步组成:
1、提取干扰模式的主频率成分:
在每种周期噪声的尖峰处放一个陷波带通滤波器HNP(u,v),若滤波器构建为只可通过与干扰模式相关的成分,则干扰噪声模式的傅里叶变换如下:
G(u,v)为被污染图像的傅里叶变换。HNP(u,v)通常需要观察显示的G(u,v)的频谱交互式地创建陷波带通滤波器,来判断哪些是尖峰噪声干扰。
空间域的噪声表示如下:
2、从被污染图像中减去该模式的一个可变加权成分。
因为第一步提取的只是干扰模式的主要成分(即真实干扰模式的近似值),而不是全部的噪声,故从污染图像中减去的是η(x,y)的一个加权部分,得到f(x,y)的一个估计值。
w(x,y)称为加权函数或调制函数,该函数是待定的。
过程的目的就是选取加权函数,以便以某种有意义的方法来优化结果。

一种选取w(x,y)的方法:
使估计值在每一点(x,y)的指定邻域上的方差最小。

四、退化


可以写成:

假设η(x,y)=0。则g(x,y) = H[f(x,y)]

1、加性

当a=b=1时:若H为线性算子,则两个输入之和的响应等于两个响应之和。

2、均匀性

当f2(x,y) = 0:表明任何与常数相乘的输入的响应,等于该输入响应乘以相同的常数。
一个线性算子具有加性和均匀性

3、空间不变系统

则满足g(x,y) = H[f(x,y)]的算子称为位置(或空间)不变系统。即,图像中任意一点处的响应只取决于该点处的输入值,而与该点的位置无关。

具有加性噪声的线性空间不变退化系统,可在空间域建模为退化(点扩散)函数与一幅图像的卷积,再加上噪声。
频率域为图像与退化函数的变换的乘积,再加上噪声的变换。
用于复原处理的滤波器通常称为去卷积滤波器。

4、图像观察估计

当没有退化函数的任何知识时,基于线性、位置不变的假设。通过选择退化图像的子图像(噪声要小到可以忽略,图像对比度要强),gs(x,y)表示子图像。

得到子图像的退化函数,从而基于位置不变的假设来还原完整图像的退化函数H(u,v)。
这种方法仅在特殊环境下使用的很麻烦的处理,如复原一幅有历史价值的老照片。

5、试验估计

使用或设计一个与图像退化过程相似的系统,在该系统下对一个冲激(小亮点)成像,可得到退化系统的冲激响应 H(u,v) 。
小亮点要足够亮,以便将噪声的影响降低到可忽略的程度。冲激的傅里叶变换是一个常量。

A是描述冲激强度的常量。

6、建模估计

由于退化建模能解决图像退化问题,故一直被使用。
1)大气湍流模型

其中,k为与湍流性质有关的常数,k越大,图像越模糊,除指数5/6外,与高斯低通滤波器有着相同的形式。

2)运动模糊模型
其中T表示曝光时间,a和b分别表示水平和垂直方向上的移动量。注意
故当π(ua+vb) = 0时,H(u,v) = T。同理,H(u.v)也要进行中心化。

五、逆滤波

知道退化函数后,最简单的复原方法就是直接做逆滤波。
当退化图像的噪声较小,即轻度降质时,采用逆滤波恢复的方法可以获得较好的结果。
当噪声作用范围很大时,逆滤波不能从噪声中提取图像。
一般直接逆滤波的性能是较差的。

六、维纳滤波


import matplotlib.pyplot as graph
import numpy as np
from numpy import fft
import math
import cv2# 仿真运动模糊
def motion_process(image_size, motion_angle):PSF = np.zeros(image_size)print(image_size)center_position = (image_size[0] - 1) / 2print(center_position)slope_tan = math.tan(motion_angle * math.pi / 180)slope_cot = 1 / slope_tanif slope_tan <= 1:for i in range(15):offset = round(i * slope_tan)  # ((center_position-i)*slope_tan)PSF[int(center_position + offset), int(center_position - offset)] = 1return PSF / PSF.sum()  # 对点扩散函数进行归一化亮度else:for i in range(15):offset = round(i * slope_cot)PSF[int(center_position - offset), int(center_position + offset)] = 1return PSF / PSF.sum()# 对图片进行运动模糊
def make_blurred(input, PSF, eps):input_fft = fft.fft2(input)  # 进行二维数组的傅里叶变换PSF_fft = fft.fft2(PSF) + epsblurred = fft.ifft2(input_fft * PSF_fft)blurred = np.abs(fft.fftshift(blurred))return blurreddef inverse(input, PSF, eps):  # 逆滤波input_fft = fft.fft2(input)PSF_fft = fft.fft2(PSF) + eps  # 噪声功率,这是已知的,考虑epsilonresult = fft.ifft2(input_fft / PSF_fft)  # 计算F(u,v)的傅里叶反变换result = np.abs(fft.fftshift(result))return resultdef wiener(input, PSF, eps, K=0.01):  # 维纳滤波,K=0.01input_fft = fft.fft2(input)PSF_fft = fft.fft2(PSF) + epsPSF_fft_1 = np.conj(PSF_fft) / (np.abs(PSF_fft) ** 2 + K)result = fft.ifft2(input_fft * PSF_fft_1)result = np.abs(fft.fftshift(result))return resultimage = cv2.imread('a.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
img_h = image.shape[0]
img_w = image.shape[1]
graph.figure(1)
graph.xlabel("Original Image")
graph.gray()
graph.imshow(image)  # 显示原图像graph.figure(2)
graph.gray()
# 进行运动模糊处理
PSF = motion_process((img_h, img_w), 60)
blurred = np.abs(make_blurred(image, PSF, 1e-3))graph.subplot(131)
graph.xlabel("Motion blurred")
graph.imshow(blurred)result = inverse(blurred, PSF, 1e-3)  # 逆滤波
graph.subplot(132)
graph.xlabel("inverse deblurred")
graph.imshow(result)result = wiener(blurred, PSF, 1e-3)  # 维纳滤波
graph.subplot(133)
graph.xlabel("wiener deblurred(k=0.01)")
graph.imshow(result)blurred_noisy = blurred + 0.1 * blurred.std() * \np.random.standard_normal(blurred.shape)  # 添加噪声,standard_normal产生随机的函数
graph.figure(3)
graph.subplot(131)
graph.xlabel("motion & noisy blurred")
graph.imshow(blurred_noisy)  # 显示添加噪声且运动模糊的图像result = inverse(blurred_noisy, PSF, 0.1 + 1e-3)  # 对添加噪声的图像进行逆滤波
graph.subplot(132)
graph.xlabel("inverse deblurred")
graph.imshow(result)result = wiener(blurred_noisy, PSF, 0.1 + 1e-3)  # 对添加噪声的图像进行维纳滤波
graph.subplot(133)
graph.xlabel("wiener deblurred(k=0.01)")
graph.imshow(result)graph.show()

七、几何均值滤波


其中α和β为正的实常数。

数字图像处理第五章笔记相关推荐

  1. 数字图像处理——第五章 图像复原与重建

    数字图像处理--第五章 图像复原与重建 文章目录 数字图像处理--第五章 图像复原与重建 写在前面 1 图像退化/复原过程的模型 2 噪声模型 2.1 高斯噪声 2.2 椒盐噪声 3 仅有噪声的复原- ...

  2. 数字图像处理 第五章图像复原与重建

    文章目录 数字图像处理 第五章 图像复原与重建 引言 5.1背景知识 5.2图像退化与复原 5.3噪声模型 高斯噪声 椒盐噪声 瑞丽噪声 伽马噪声 5.4只存在噪声的复原--空间滤波 均值滤波 统计排 ...

  3. 数字图像处理第五章——几何变换与图像配准

    数字图像处理第五章 数字图像处理---几何变换与图像配准 (一)点变换 (二)仿射变换 (三)投影变换 (四)应用于图像的几何变换 (五)MATLAB 中的图像坐标系统 5.1 输出图像位置 5.2 ...

  4. 数字图像处理 第五章 图像变换

    目录 一.图像变换的概念和意义 图像处理方法的分类 频域变换的一般处理过程 二.傅立叶变换 傅里叶变换的作用 傅里叶变换的定义 傅里叶变换的条件 离散傅里叶变换 傅立叶变换的规律 FFT的应用-高通滤 ...

  5. 数字图像处理——第五章 图像复原

    文章目录 图像复原 1. 图像退化/复原过程的模型 2. 噪声模型 2.1 使用imnoise对图像添加噪声 2.2 周期噪声 2.3 噪声参数估计 3 只有噪声存在的空间域图像恢复 3.1 均值滤波 ...

  6. 数字图像处理--第六章彩色图像处理基础

    文章目录 6 彩色图像处理 6.1 彩色基础 6.2 彩色模型 6.2.1 RGB彩色模型 6.3 伪彩色图像处理 6.3.1 强度分层 6.4 全彩色图像处理 6.5 查色标(查找表)Look Up ...

  7. 数字图像处理第六章——彩色图像处理(上)

    数字图像处理第六章 数字图像处理---彩色图像处理 (一) 在 MATLAB 中彩色图像的表示 1.1 RGB图像 1.2 索引图像 1.3 处理 RGB图像和索引 (二)彩色空间之间的转换 2.1 ...

  8. 数字图像处理与Python实现笔记之空间滤波

    数字图像处理与Python实现笔记之空间滤波 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 3.1 空间滤波基础 3.1.1 空间滤波的机理 3.1.2 空间滤波器模板 3 ...

  9. 数字图像处理与Python实现笔记之图像特征提取

    数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 5 图像特征提取 5.1 图像颜色特征提取 5.1.1 颜色直方图 1 一般 ...

  10. 数字图像处理与Python实现笔记之频域滤波

    数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 4.1 傅里叶变换 4.1.1 一维傅里叶变换 4.1.2 二维傅里叶变换 ...

最新文章

  1. jQuery图片轮播的具体实现
  2. 报名 | IBM苏中:从深蓝到AlphaGo,从大数据到认知商业
  3. php三位不够前面加0,php 格式化数字 位数不足前面加0补足的实现方法
  4. sql2012包含数据库,快速生成用户tsql脚本
  5. ActionBarActivity设置全屏无标题
  6. keras 官方文档
  7. bat脚本交互输入_windows 10 如何设定计划任务自动执行 python 脚本?
  8. Linux调试登陆Visual Studio
  9. Pytorch demo(三)之蚂蚁和蜜蜂
  10. AutoCAD 天正建筑2014安装破解
  11. 游戏产业链:客户端游戏/网页游戏
  12. android测试命令,Android Instrument测试命令使用小记
  13. 旅游市场回暖,同程艺龙借机“上位”?
  14. 逃离僵尸岛【最短路】
  15. smarty 的安装与使用
  16. 配合好OpenStack和开源MANO,就能部署好NFV
  17. 深入浅出Spring源码:IOC原理解析(一)
  18. php如何设置随机数字和字母,PHP获取随机数字和字母的方法大全
  19. Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警
  20. 微信小程序红包开发注意事项

热门文章

  1. [转]94个比付费软件更好的免费软件
  2. 介绍java糊涂Hutool工具
  3. 程序员得浪漫--十款表白小程序 一个比一个浪漫 赶紧收藏起来吧!!!
  4. 懒人神器:svg-sprite-loader实现自己的Icon组件
  5. 解决excel转pdf出现的折行问题
  6. 苹果奖学金获得者:我的自学 iOS 开发历程
  7. java move函数重新调用_Move Method (搬移函数)
  8. sql可以查询数据但是提示对象名无效
  9. 英语词根词缀记忆大全
  10. 重磅!!毕业将近,论文免费查重工具任你选,非常值得收藏!