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

文章目录

  • 数字图像处理——第五章 图像复原与重建
    • 写在前面
    • 1 图像退化/复原过程的模型
    • 2 噪声模型
      • 2.1 高斯噪声
      • 2.2 椒盐噪声
    • 3 仅有噪声的复原——空间滤波
      • 3.1 均值滤波器
      • 3.2 统计排序滤波器
      • 3.3 自适应滤波器
    • 4 用频率域滤波消除周期噪声
    • 5 逆滤波和维纳滤波

写在前面

图像退化:图像在形成、记录、处理和传输过程中,由于成像系统、记录设备、传输介质和处理方法的不完善,导致图像质量的下降。

图像增强:旨在改善图像质量,提高图像的可懂度,更偏向主观判断。即要突出所关心的信息,满足人的视觉系统,具有好的视觉效果。

图像复原:根据图像畸变或退化的原因,进行模型化处理,将质量退化的图像重建或恢复到原始图像。即恢复退化图像的本来面目,忠于原图像,因此必须根据一定的图像退化模型来进行图像复原。

图像复原技术主要是以预先确定的目标来改善图像,与之前我们学习的图像增强相比,虽然有重叠之处,但是图像增强主要是一个主观过程,而图像复原大部分是一个客观过程。图像复原试图利用退化现象的某种先验知识来复原被退化的图像。因此,复原技术是面向退化模型的,并且采用相反的过程处理,以便恢复出原图像。

1 图像退化/复原过程的模型

图像复原,就是通过某种方法,将退化后的图像进行改善,尽量使复原后的图像接近理想图像的过程。整个退化和复原的过程可以用如下图表示:

其中,f(x, y)表示输入图像,退化后的图像用g(x, y)表示,退化过程可以分为退化函数h(x, y)以及加载在图像上的噪声η(x, y)表示,经过复原滤波器后便能得到复原后的图像。通常,我们希望复原后的图像尽可能的接近原始图像,所以需要尽可能的知道h(x, y)和η(x, y)的信息。具体来说,在空间域中退化图像可由下式给出:
g(x,y)=h(x,y),⋆代表卷积操作f(x,y)+η(x,y),⋆代表空间卷积操作g(x, y)=h(x, y) ,\star代表卷积操作 f(x, y)+\eta(x, y),\star代表空间卷积操作 g(x,y)=h(x,y),⋆代表卷积操作f(x,y)+η(x,y),⋆代表空间卷积操作
频率域表示:
G(u,v)=H(u,v)F(u,v)+N(u,v)G(u, v)=H(u, v) F(u, v)+N(u, v) G(u,v)=H(u,v)F(u,v)+N(u,v)

2 噪声模型

在图像预处理中,图像去噪是一个十分重要的步骤,对于后面图像的后处理会有很大的影响。需要选择适当的滤波技术来增强图像。图像噪声是图像信息或者像素亮度的随机变化。它是由一些因素造成的图像信号的退化。图像通常会包含很多噪声,这样的图像一般表现为:图像越亮的区域,噪声越多。噪声的本质是真实信号与理想信号之间存在的偏差,由于在图像的获取、传输和存储过程中,受到各种噪声的干扰和影响,图像的质量会有不同程度的下降。

2.1 高斯噪声

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。高斯噪声信号x的概率密度函数如下:
p(x)=12πσe−(x−μ)2/2σ2,其中μ表示噪声x均值或期望值,σ表示噪声x的标准差p(x)=\frac{1}{\sqrt{2 \pi} \sigma} e^{-(x-\mu)^{2} / 2 \sigma^{2}},其中\mu表示噪声x均值或期望值,\sigma表示噪声x的标准差 p(x)=2π​σ1​e−(x−μ)2/2σ2,其中μ表示噪声x均值或期望值,σ表示噪声x的标准差
特殊情况的高斯图像如下图所示:可自己编写函数实现

def draw_gaussian(x, mu, sigma):return np.exp(-1*(((x - mu)**2) / (2*sigma**2))) / (np.sqrt(2*np.pi) * sigma)

接着代码实现下给原图加上高斯噪声,步骤大概如下:首先将图片转成灰度图,然后确定噪声点数量,最后随机生成噪声点在图中的坐标,然后将该点处的灰度值设置成255,具体代码如下:

def addGaussianNoise(image, G_NoiseNum):# 不copy原图会被污染G_Noiseimg = image.copy()# 噪点数量for i in range(G_NoiseNum):# 随机生成坐标temp_x = np.random.randint(0, G_Noiseimg.shape[0])temp_y = np.random.randint(0, G_Noiseimg.shape[1])G_Noiseimg[temp_x][temp_y] = 255return G_Noiseimg

2.2 椒盐噪声

椒盐噪声也称泊松噪声。,一般是由图像传感器、传输信道及解码处理等产生的黑白相见的亮暗点噪声,椒盐噪声常由图像切割产生。椒盐噪声是指两种噪声: 椒盐噪声 = 椒噪声 + 盐噪声盐噪声一般是白色噪声,椒噪声一般是黑色噪声,前者高灰度噪声,后者属于低灰度噪声,一般两种噪声同时出现,呈现在图像上就是黑白杂点

生成椒盐噪声的步骤如下:首先读取图片,然后确定噪声点的数量,最后随机生成噪声点在图中的坐标,随机定义01生成器,当结果为0代表生成椒噪声,结果为1表示盐噪声,代码如下:

def salt_pepperNoise(img, noiseNum):image = img.copy()ndim = src.ndimrow, col = src.shape[0:2]for i in range(noiseNum):x = np.random.randint(0, row)y = np.random.randint(0, col)# 0-salt, 1-peppersalt_or_pepper = np.random.randint(0, 2)if salt_or_pepper == 0:image[x, y, :] = 0else:image[x, y, :] = 255return image

实验结果如下所示,和上述高斯噪声不一样的地方在于高斯噪声读取的图片为灰度图,此次的椒盐噪声用的则是RGB的彩色图像,其实都可以.代码上就是image[x, y, :]和image[x, y]的区别,彩色图像多一个维度。

由上图可以看出,图像模拟添加椒盐噪声是通过随机获取像素值点并设置为高亮点来实现的。

3 仅有噪声的复原——空间滤波

当一幅图像中唯一存在的退化是噪声时,上述的空间域和时间域公式为:
g(x,y)=f(x,y)+η(x,y)g(x, y)=f(x, y)+\eta(x, y) g(x,y)=f(x,y)+η(x,y)

G(u,v)=F(u,v)+N(u,v)G(u, v)=F(u, v)+N(u, v) G(u,v)=F(u,v)+N(u,v)

在这种情况下,使用空间滤波来降低噪声。

3.1 均值滤波器

均值滤波器有分很多种类,比如算数均值滤波器
f^(x,y)=1mn∑(s,t)∈Sxyg(s,t)\hat{f}(x, y)=\frac{1}{m n} \sum_{(s, t) \in S_{xy}} g(s, t) f^​(x,y)=mn1​(s,t)∈Sxy​∑​g(s,t)
这是最简单的均值滤波器。令S表示中心在点(x, y)处、大小为m×n的矩形子图像窗口(邻域)的一组坐标。算术均值滤波器在S定义的区域中计算被污染图像g(x,y)的平均值。在点(x, y)处复原图像f_hat的值。这个操作可以使用大小为m×n的一个空间滤波器来实现,其所有的系数均为其值的1/m×n。均值滤波平滑一幅图像中的局部变化,虽然模糊了结果,但降低了噪声。

几何均值滤波器
f^(x,y)=[∏(s,t)∈Sxyg(s,t)]1mn\hat{f}(x, y)=\left[\prod_{(s, t) \in S_{x y}} g(s, t)\right]^{\frac{1}{m n}} f^​(x,y)=⎣⎡​(s,t)∈Sxy​∏​g(s,t)⎦⎤​mn1​
其中,每个复原的像素由子图像窗口中像素的乘积的1/m×n 次幂给出。

谐波均值滤波器
f^(x,y)=mn∑(s,t)∈Sxy1g(s,t)\hat{f}(x, y)=\frac{m n}{\sum_{(s, t) \in S_{x y}} \frac{1}{g(s, t)}} f^​(x,y)=∑(s,t)∈Sxy​​g(s,t)1​mn​
谐波均值滤波器对于盐粒噪声效果较好,但不适用于胡椒噪声。它善于处理像高斯噪声那样的其他噪声。

逆谐波均值滤波器
f^(x,y)=∑(s,t)∈Syyg(s,t)Q+1∑(s,t)∈Sxg(s,t)Q\hat{f}(x, y)=\frac{\sum_{(s, t) \in S_{y y}} g(s, t)^{Q+1}}{\sum_{(s, t) \in S_{x}} g(s, t)^{Q}} f^​(x,y)=∑(s,t)∈Sx​​g(s,t)Q∑(s,t)∈Syy​​g(s,t)Q+1​
其中Q称为滤波器的阶数。这种滤波器适合减少或在实际中消除椒盐噪声的影响。当Q值为正时,该滤波器消除胡椒噪声;当Q值为负时,该滤波器消除盐粒噪声。但它不能同时消除这两种噪声。注意,当Q=0时,逆谐波均值滤波器简化为算术均值滤波器;而当Q=-1时,则为谐波均值滤波器。

添加噪声代码上面有,均值滤波器调用OpenCV代码如下,其中cv2.blur的参数为原图像,核的大小。

# 分别实现滤波
# 使用7×7的滤波器
img_mean = cv2.blur(img, (7, 7))
gaussian_mean = cv2.blur(out1, (7,7))
salt_pepper_mean = cv2.blur(out2, (7,7))

由实验可知,经过均值滤波器后,图片变模糊,但同样也减弱了噪声的影响。均值滤波器对椒盐噪声处理结果较好,对高斯噪声处理结果较差。

3.2 统计排序滤波器

顺序统计滤波器的响应是基于由滤波器包围的图像区域中像素点的排序,任一点的响应由排序结果决定。也包含好几种:中值滤波
f^(x,y)=median⁡(s,t)∈Sn{g(s,t)}\hat{f}(x, y)=\operatorname{median}_{(s, t) \in S_{n}}\{g(s, t)\} f^​(x,y)=median(s,t)∈Sn​​{g(s,t)}
如其名称所暗示的那样,它使用一个像素邻域中的灰度级的中值来替代该像素的值。中值滤波同样也需要一卷积核、与卷积滤波不同的是,它不会用卷积核的每个系数与对应的像素值做算术计算,而是把对应的像素值做排序,取中间值作为输出。

既然核心是排序,除了中值,必然还有头和尾,也就是最大值和最小值滤波器
f^(x,y)=max⁡(s,t)∈Sxy{g(s,t)}\hat{f}(x, y)=\max _{(s, t) \in S_{xy}}\{g(s, t)\} f^​(x,y)=(s,t)∈Sxy​max​{g(s,t)}

f^(x,y)=min⁡(s,t)∈Sxy{g(s,t)}\hat{f}(x, y)=\min _{(s, t) \in S_{xy}}\{g(s, t)\} f^​(x,y)=(s,t)∈Sxy​min​{g(s,t)}

中值滤波可以抑制椒盐噪声;
最大值滤波可以填充小的闭合区域以及狭窄的间断;
最小值滤波可以去除小的图像噪声或者图像元素对象的大小丝黏连)
或者抑制图像像素极小值与极大值最大值最小值滤波)。

3.3 自适应滤波器

自适应滤波器的行为变化基于由m×n矩形窗口Sxy定义的区域内图像的统计特性,它的性能要明显优于前面介绍的滤波器,代价是滤波器的复杂度。滤波器作用于局部区域Sxy,滤波器在中心化区域中任何点(x,y)上的滤波器响应基于以下4个量:

  • g(x, y)表示噪声图像在点(x, y)上的值
  • 干扰f(x, y)以形成g(x, y)的噪声方差
  • 在Sxy上像素点的局部均值
  • 在Sxy上像素点的局部方差

4 用频率域滤波消除周期噪声

频率域技术滤除周期噪声可行的原因是周期噪声在对应于周期干扰的频率处,以集中的能量脉冲形式出现。滤除的方法之一是选择性滤波器(带阻、带通和陷波)。

  • 带阻滤波器

    它的主要应用之一是在频率域噪声成分的一般位置近似一直的应用中消除噪声。

  • 带通滤波器

    它执行与带阻滤波器相反的操作。

  • 陷波滤波器

    阻止(或通过)事先定义的中心频率邻域内的频率。

5 逆滤波和维纳滤波

对如下公式:
G(u,v)=H(u,v)F(u,v)+N(u,v)G(u, v)=H(u, v) F(u, v)+N(u, v) G(u,v)=H(u,v)F(u,v)+N(u,v)

如果不存在噪声,则上面的式子可以简化为:
G(u,v)=H(u,v)F(u,v)G(u, v)=H(u, v) F(u, v) G(u,v)=H(u,v)F(u,v)

我们将1/H(u, v)称为逆滤波器。逆滤波复原步骤:
(1) 对退化图像g(x,y)作二维离散傅里叶变换,得到G(u,v);
(2) 计算系统点扩散函数(即退化函数)h(x,y)的二维离散傅里叶变换,得到H(u,v);
(3) 逆滤波计算F(u,v) = G(u,v)/H(u,v)
(4) 计算F(u,v)的逆傅里叶变换,求得f(x,y)

对于维纳滤波,也叫最小均方误差滤波,是一种建立在最小化统计准则的基础上的复原方法,在平均意义上,它可以看成是最优的。维纳滤波综合了退化函数和噪声统计特征两个方面进行复原处理,在认为图像和噪声是随机过程的基础上,以恢复图像和原图像的均方误差最小为准则。维纳滤波用来去除含有噪声的模糊图像,其目标是找到未污染图像的一个估计,使它们之间的均方差最小,可以去除噪声,同时清晰化模糊图像:
e2=E{(f−f^)2}e^{2}=E\left\{(f-\widehat{f})^{2}\right\} e2=E{(f−f​)2}
通过实验了解下维纳滤波的复原效果,效果如下:

代码如下:

from scipy.signal import wiener
import cv2
import numpy as np
import matplotlib.pyplot as pltdef gasuss_noise(image, mean=0, var=0.008):'''添加高斯噪声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)return outif __name__ == '__main__':lena = cv2.imread(r' ') # filepathif lena.shape[-1] == 3:lenaGray = cv2.cvtColor(lena, cv2.COLOR_BGR2GRAY)else:lenaGray = lena.copy()plt.figure(dpi = 180)plt.subplot(131)plt.title("原图")plt.imshow(lenaGray, cmap='gray')# 添加高斯噪声lenaNoise = gasuss_noise(lenaGray)plt.subplot(132)plt.title("高斯噪声")plt.imshow(lenaNoise, cmap='gray')# 维纳滤波lenaNoise = lenaNoise.astype('float64')lenaWiener = wiener(lenaNoise, [3, 3])lenaWiener = np.uint8(lenaWiener / lenaWiener.max() * 255)plt.subplot(133)plt.title("维纳滤波")plt.imshow(lenaWiener, cmap='gray')plt.tight_layout()plt.show()lenaNoise.astype('float64')lenaWiener = wiener(lenaNoise, [3, 3])lenaWiener = np.uint8(lenaWiener / lenaWiener.max() * 255)plt.subplot(133)plt.title("维纳滤波")plt.imshow(lenaWiener, cmap='gray')plt.tight_layout()plt.show()

本章中的复原结果都是有前提的,即图像退化可建模为一个线性的、位置不变的过程,以及与图像值不相关的加性噪声。就像在第3章和第4章中那样,一定的复原任务,譬如降低随机噪声,是在空间域中使用卷积模板来执行的。我们也发现频率域对于降低周期性噪声和对于某些重要的退化建模是很理想的,如在图像获取期间因为运动导致的模糊。我们还发现,对于表达复原滤波器来说,频率域也是很有用的工具,如维纳滤波器和约束最小二乘方滤波器。

数字图像处理——第五章 图像复原与重建相关推荐

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

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

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

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

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

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

  4. 数字图像处理第四章——图像复原(下)

    数字图像处理第四章 数字图像处理---图像复原 (三)仅有噪声的复原--空间滤波 3.1 空间噪声滤波器 3.2 自适应空间滤波 (四)退化函数建模 (五)维纳滤波 (六)约束的最小二乘法(规则化)滤 ...

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

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

  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. 数字图像处理-第五周-理论课

    第五章图像复原 主要内容包括图像的噪声模型.噪声消除 掌握不同的噪声模型的特点和去除噪声的方法,逆滤波.维纳滤波的原理和用法. 理解图像退化和处理的模型. 了解约束最小二乘法滤波,几何变换和图像配准. ...

  9. 数字图像处理第六章 ——彩色图像处理(下)

    数字图像处理第六章 数字图像处理---彩色图像处理 (五) 彩色图像的空间滤波 5.1 彩色图像的平滑处理 5.2 彩色图像的锐化处理 (六) 直接在 RGB 矢量空间中处理 6.1 使用梯度的彩色边 ...

最新文章

  1. Java 语言中 Enum 类型的使用介绍
  2. XCTF-Reverse:Hello,CTF
  3. 命名空间和工程名java_Java的类装载器(Class Loader)和命名空间(NameSpace)
  4. java中类图概念,程序员眼中的UML(4)--类图释疑之一,Attribute和Property之区别
  5. 最大流,最小费用最大流:解析 + 各种板子
  6. 天津科技大学计算机网络,计算机网络PPT(天津科技大学讲稿-张强)第一章英文对照...
  7. 新人起步,扬帆起航!
  8. DirectX_11_游戏编程入门_1
  9. 【王道计组笔记】Cache高速缓存基本工作原理
  10. Java程序员集合框架面试题
  11. 波轮全自动洗衣机分解与典型部件拆装技巧
  12. iOS 测试app提示不受信任的开发者
  13. 低通滤波器的设计与DSP实现
  14. 常用软件滤波方法及其示例程序
  15. 教你炒股票9:甄别“早xie”男的数学原则!
  16. 网站域名被墙(被封锁、被屏蔽、被和谐)后最好的解决方法
  17. 梅隆大学计算机专业申请,卡耐基梅隆大学计算机专业申请要求及研究方向
  18. 第九届蓝桥杯 省赛 C语言A组
  19. 力扣K神图解算法数据结构解析10
  20. 计算机应用基础 教材 黄洪艺,高教社产品信息检索系统

热门文章

  1. Android中设置控件可见与不可见详解
  2. 09_Java面向对象_第9天(类、封装)_讲义
  3. Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置
  4. 最全正則表達式汇总—想要的都有了
  5. 文件服务器共享目录设置(二)
  6. 疑问:c++中的memset
  7. 【转帖】OnPreRender Render的区别
  8. New LINQ CTP!
  9. mysql数据库语法_MySQL数据库基本语法
  10. c++判断奇偶_常用的数据差错控制技术(2) 奇偶校验