冈萨雷斯Matlab版第五章(图像复原)知识点要点记录

前言

复原的目的是在预定义的意义上改善给定的图像。尽管图像增强与图像复原之间有重叠的部分,但前者主要是主观的处理。图像复原大部分是客观的处理。复原通过使用退化现象的先验知识试图重建或回复一幅退化的图像。因此,复原技术趋向于将退化模型化并用相反的处理来回复原图像,考虑用去模糊函数来消除图像的模糊。

5.1 图像退化/复原处理的模型

本章中用退化函数把退化过程模型化,它和加性噪声项一起,作用于输入图像f(x, y),产生一幅退化的图像g(x, y):
g(x, y) = H[f(x, y)] + η(x, y)
给定g(x, y),一些关于退化函数H的知识以及一些关于加性噪声η(x, y)的知识,复原的目标就是得到原图像的一个估计f‘,并使得这个估计尽可能接近原始的输入图像。
在这里插入图片描述
若H是线性、空间不变的过程,则退化图像在空间域通过下式给出。
g(x, y) = h(x, y) * f(x, y) + η(x, y)
其中,h(x, y)是退化函数的空间表示,*表示卷积。由于空间域的卷积和频域的乘法组成了一个傅里叶变换对,所以用等价的频域表示有:
G(u, v) = H(u, v)F(u, v) + N(u, v)
其中,大写字母表示的项是卷积方程式中对应项的傅里叶变换。
退化函数H(u, v)有时称为光学传递函数(OTF),在空间域,h(x, y)称为点扩散函数(PSF)。对于任何种类的输入,让h(x, y)作用于光源上的一个点来得到退化的特征,点扩散函数就是来源于此。MATLAB工具箱提供两个函数:otf2psfpsf2otf用于OTF和PSF之间的转换。有时退化过程称为“用PSF或OTF对图像进行卷积”,复原过程称为反卷积。

5.2 噪声模型

模拟噪声 的行为和影响的能力是图像复原的核心。

5.2.1 使用函数imnoise添加噪声

工具箱采用imnoise来使用噪声污染一幅图像,基本语法为:
g = imnoise(f, type, parameters)
其中,f是输入图像,type和parameters使用如下。
函数imnoise在给图像添加噪声之前,将它转换为范围[0, 1]内的double类图像。

  • g = imnoise(f, 'gaussian', m, var)将均值为m,方差为var的高斯噪声加到图像f上,默认值m = 0, var = 0.01
  • g = imnoise(f, 'localvar', V)将均值为0、局部方差为V的高斯噪声添加到图像f上,其中V是与f大小相同的一个数组,它包含了每个点的理想方差值。
  • g = imnoise(f, 'localvar', image_intensity, var)将均值为0的高斯噪声添加到图像f上,其中噪声的局部方差var是图像f的亮度值的函数,参量image_tensity和var是大小相同的向量,plot(image_intensity, var)绘制出噪声方差与图像亮度的函数关系,向量iamge_intensity必须包含范围在[0, 1]内的归一化亮度值。
  • g = imnoise(f, 'salt & pepper', d)用椒盐噪声污染图像f,其中d是噪声密度(即包含噪声值的图像区域的百分比)。因此,大约有d * numel(f)个像素受到了影响,默认噪声密度为0.65。
  • g = imnoise(f, 'speckle', var)用方程g = f + n * f将乘性噪声添加到图像f上,其中n是均值为0、方差为var的均匀分布的随机噪声。var的默认值是0.04。
  • g = imnoise(f, 'poisson')从数据中生成泊松噪声,而不是将人工的噪声添加到数据中。为了遵守泊松统计,uint8类和uint16类图像的亮度必须和光子的数量相符合。当每像素的光子数量大于65535但小于1012时,就要使用双精度图像。亮度值在0~1之间变化,并且对应于光子的数量除以1012
5.2.2 使用指定的分布产生空间随机噪声

先验知识:若w是一个在区间(0, 1)内均匀分布的随机变量,则可以通过求解下面的方程来得到具有指定CDF(累积分布函数)和Fz的一个随机变量z:
z = Fz-1(w)
即,寻找方程Fz(z) = w的解。
例5.1 使用均匀随机数生成具有批定分布的随机数
假设我们有一个其均匀随机数w在区间(0, 1)内的随机数生成器,并假设我们要用它来生成具有瑞利CDF的随机数z,它具有如下形式:
在这里插入图片描述
为得到z,可解方程
在这里插入图片描述

在这里插入图片描述
由于平方根项是非负的,所以可以确定不会产生值小于a的z,正如瑞利CDF所定义要求的那样,因此,我们的生成器产生的均匀随机数w可以用在前面的方程中,以便用来生成一个参数为a和b的瑞利分布的随机变量z。
在MATLAB中很容易推广到一个M * N的随机数数组R:
R = a + sqrt(b * log(1 - rand(M, N)))
其中,log是自然对数,rand生成一个大小为M * N的数组,数组的元素为(0, 1)区间内均匀分布的随机数。
TIPS:

  • 随机数生成器方差
    表达式
    在这里插入图片描述
    有时称为随机数生成器方程,因为它确定了如何生成需要的随机数。

  • randn(M, N)
    生成一个大小为M*N的数组,它的元素是零均值、单位方差的正态(高斯)数。

  • find(A)
    I = find(A)返回数组A中所有非零元素的索引,若一个也没有,返回空矩阵,以格式A(:)处理数组A,所以I是一个列向量。
    [r, c] = find(A)返回矩阵A的非零元素的行和列索引。
    [r, c, v] = find(A)除了返回行索引和列索引外,还以列向量v返回A的非零值。

  • 随机变量的生成表
    在这里插入图片描述

  • imnoise2函数
    R = imnoise2(type, M, N, a, b)
    产生一个大小为

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ThetaQing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值