数字图像处理第五章笔记
目录
- 一、图像复原模型及噪声模型
- 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 图像退化/复原过程的模型 2 噪声模型 2.1 高斯噪声 2.2 椒盐噪声 3 仅有噪声的复原- ...
- 数字图像处理 第五章图像复原与重建
文章目录 数字图像处理 第五章 图像复原与重建 引言 5.1背景知识 5.2图像退化与复原 5.3噪声模型 高斯噪声 椒盐噪声 瑞丽噪声 伽马噪声 5.4只存在噪声的复原--空间滤波 均值滤波 统计排 ...
- 数字图像处理第五章——几何变换与图像配准
数字图像处理第五章 数字图像处理---几何变换与图像配准 (一)点变换 (二)仿射变换 (三)投影变换 (四)应用于图像的几何变换 (五)MATLAB 中的图像坐标系统 5.1 输出图像位置 5.2 ...
- 数字图像处理 第五章 图像变换
目录 一.图像变换的概念和意义 图像处理方法的分类 频域变换的一般处理过程 二.傅立叶变换 傅里叶变换的作用 傅里叶变换的定义 傅里叶变换的条件 离散傅里叶变换 傅立叶变换的规律 FFT的应用-高通滤 ...
- 数字图像处理——第五章 图像复原
文章目录 图像复原 1. 图像退化/复原过程的模型 2. 噪声模型 2.1 使用imnoise对图像添加噪声 2.2 周期噪声 2.3 噪声参数估计 3 只有噪声存在的空间域图像恢复 3.1 均值滤波 ...
- 数字图像处理--第六章彩色图像处理基础
文章目录 6 彩色图像处理 6.1 彩色基础 6.2 彩色模型 6.2.1 RGB彩色模型 6.3 伪彩色图像处理 6.3.1 强度分层 6.4 全彩色图像处理 6.5 查色标(查找表)Look Up ...
- 数字图像处理第六章——彩色图像处理(上)
数字图像处理第六章 数字图像处理---彩色图像处理 (一) 在 MATLAB 中彩色图像的表示 1.1 RGB图像 1.2 索引图像 1.3 处理 RGB图像和索引 (二)彩色空间之间的转换 2.1 ...
- 数字图像处理与Python实现笔记之空间滤波
数字图像处理与Python实现笔记之空间滤波 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 3.1 空间滤波基础 3.1.1 空间滤波的机理 3.1.2 空间滤波器模板 3 ...
- 数字图像处理与Python实现笔记之图像特征提取
数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 5 图像特征提取 5.1 图像颜色特征提取 5.1.1 颜色直方图 1 一般 ...
- 数字图像处理与Python实现笔记之频域滤波
数字图像处理与Python实现笔记 摘要 绪论 1 数字图像处理基础知识 2 彩色图像处理初步 3 空间滤波 4 频域滤波 4.1 傅里叶变换 4.1.1 一维傅里叶变换 4.1.2 二维傅里叶变换 ...
最新文章
- jQuery图片轮播的具体实现
- 报名 | IBM苏中:从深蓝到AlphaGo,从大数据到认知商业
- php三位不够前面加0,php 格式化数字 位数不足前面加0补足的实现方法
- sql2012包含数据库,快速生成用户tsql脚本
- ActionBarActivity设置全屏无标题
- keras 官方文档
- bat脚本交互输入_windows 10 如何设定计划任务自动执行 python 脚本?
- Linux调试登陆Visual Studio
- Pytorch demo(三)之蚂蚁和蜜蜂
- AutoCAD 天正建筑2014安装破解
- 游戏产业链:客户端游戏/网页游戏
- android测试命令,Android Instrument测试命令使用小记
- 旅游市场回暖,同程艺龙借机“上位”?
- 逃离僵尸岛【最短路】
- smarty 的安装与使用
- 配合好OpenStack和开源MANO,就能部署好NFV
- 深入浅出Spring源码:IOC原理解析(一)
- php如何设置随机数字和字母,PHP获取随机数字和字母的方法大全
- Prometheus+Alertmanager+webhook-dingtalk实现钉钉告警
- 微信小程序红包开发注意事项