史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

图像去模糊——介绍

我想介绍一下客人的博客斯坦·里夫斯。斯坦是一个教授在奥本大学电子与计算机工程系。他作为副主编IEEE图像处理。他的研究活动包括图像恢复和重建,优化图像采集和医学成像。

在接下来的几个月里,斯坦计划贡献几个博客这里在MATLAB图像去模糊的话题。

图像去模糊(或重建)是图像处理的一个老问题,但它继续吸引着研究者和实践者的关注。许多现实问题从天文学到消费者成像找到应用的图像修复算法。另外,图像恢复是一个容易的可视化例子出现较大的一类逆问题,在各种科学、医学、工业和理论问题。除此之外,这只是有趣的算法应用于模糊的图像,然后立即看到你做的多好。

解模糊图像,我们需要如何模糊的数学描述。(如果这不是可用,有算法来估计模糊。但这一天。)我们通常先移不变的模式,也就是说,每一个点的原始图像传播中以同样的方式形成模糊的图像。我们用卷积模型:

g (m, n) = h f (m, n) * (m, n) + u (m, n)

*二维卷积,h (m, n)是点扩散函数(PSF), f (m, n)是原始图像,和u (m, n)是噪声(通常被认为是独立同分布的高斯)。这个方程来源于连续空间但显示已经离散方便。

实际上,通常是一个模糊的图像窗口的版本的输出g (m, n),自原始图像f (m, n)通常不是0之外的一个矩形数组。让我们继续和综合模糊图像我们有事情要处理。如果我们假设f (m, n)是定期(通常一个相当可怜的假设!),循环卷积,卷积就可以通过卷积定理与fft算法实现。

如果我们使用几何光学模型失焦模糊,我们可以获得一个PSF使用fspecial然后实现循环卷积:

形式作为磁盘半径为3像素的PSF

h = fspecial (“磁盘”4);%读取图像并转换为FFT双凸轮= im2double (imread (“cameraman.tif”));高频= fft2 (h,大小(凸轮,1),大小(凸轮,2));cam_blur =实际(ifft2(高频。* fft2 (cam)));imshow (cam_blur)

可以计算使用了相似的结果imfilter用适当的设置。

你会立即注意到循环卷积导致裤子和三脚架环绕,模糊的天空。我告诉你的周期性输入图像是一个可怜的假设!:-)但是我们不会担心。

现在,我们需要添加一些噪音。如果我们定义峰值信噪比(PSNR)

则由噪声比例

现在我们添加噪声得到40 dB PSNR值:

sigma_u = 10 ^ (-40/20) * abs (1 - 0);cam_blur_noise = cam_blur + sigma_u * randn(大小(cam_blur));imshow (cam_blur_noise)

逆滤波器是由模糊变清晰的问题最简单的解决方案。如果我们忽略噪声项,我们可以通过除以实现逆FFT的h (m, n)和执行一个逆FFT的结果。用图像恢复的爱工作的人开始逆滤波器。真的很好,因为很简单,结果绝对是可怕的。这意味着任何新的图像恢复算法相比总是看起来不错!让我告诉你我的意思:

cam_inv =实际(ifft2 (fft2 (cam_blur_noise)。/高频));imshow (cam_inv)

一定是错的,对吗?嗯,没有什么是错误的与代码。但这绝对是错误的认为一个人可以忽略噪音。为什么,看看PSF的频率响应大小:

hf_abs = abs(高频);冲浪((127:128)/ 128 (127:128)/ 128,fftshift (hf_abs))阴影插值函数、camlight colormap飞机包含(“PSF FFT级”)

我们看到马上级响应的模糊有很低的值。除以这个点态时,我们也加性噪声项除以相同的值低,导致一个巨大的噪声放大,足以完全沼泽图像本身。

现在我们可以使用一个非常简单的技巧尝试我们的戏剧性的和令人满意的进步。我们只是零逆滤波器的频率成分结果PSF的频率响应低于一个阈值。

cam_pinv =实际(ifft2 ((abs(高频)> 0.1)。* fft2 (cam_blur_noise)。/高频));imshow (cam_pinv)包含(“伪逆恢复”)

作为比较,我们重复模糊和噪声的图像。

imshow (cam_blur_noise)包含(与噪声的模糊图像)

这个结果显然是远比第一次尝试!它还包含噪声但在一个非常低的水平。这不是戏剧性的和令人满意的,但是这是一个正确方向的一步。你可以看到一些失真由于频率尚未恢复。一般来说,取消了更高频率,导致一些模糊的结果以及响了。响是由于的吉布斯现象——一个效应steplike转变成为“波浪”由于丢失的频率。

相似但略有改善的结果可以得到不同形式的伪逆滤波器。通过添加少量三角洲^ 2的数量被分裂,我们得到几乎相同数量,除非是在相同的范围或数量小于三角洲^ 2。也就是说,如果我们让

然后

就像前面的伪逆滤波器,但两个极端之间的平稳过渡。用MATLAB实现它,我们做的是:

cam_pinv2 =实际(ifft2 (fft2 (cam_blur_noise)。*连词(高频)。/ (abs(高频)。^ 2 + 1依照)));imshow (cam_pinv2)包含(“替代伪逆恢复”)

正如您可以看到的,这会产生更好的结果。这是由于恢复之间的平滑过渡和噪声平滑的频率成分。

我希望看一些进一步提高在以后的博客以及一些策略来处理更多真实的假设。

——斯坦·里夫斯,奥本大学电子与计算机工程系




使用MATLAB®7.4发表

|
  • 打印
  • 发送电子邮件

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。