图像去模糊(逆滤波)

引言

图像模糊是一种拍摄常见的现象,我曾在图像去模糊(维纳滤波) 介绍过。这里不再详述,只给出物理模型,这里我们仍在频率域表示

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

其中提到最简单的复原方法是直接做逆滤波(Inverse filter)。

F^(u,v)=G(u,v)H(u,v)(2)

该除法是阵列操作,即按位除。

在含有噪声情况下,将(1)式两端除以H(u,v)

F^(u,v)=F(u,v)+N(u,v)H(u,v)(3)

这里N(u,v)未知,式子表明,即使知道退化函数也不能准备复原图像。还有当退化函数H(u,v)是零或者非常小的值,则N(u,v)H(u,v)很容易支配整个式子。

下面我将用代码说明一下逆滤波,这里我采用直接编码形式。对了,前面我提到过,当噪声信息比NSR等于0时,此时维娜滤波等同于逆滤波。因此可以直接使用matlab自带deconvwnr函数,将第三个参数NSR设置成0即可,省事的同学可以试一下。

代码

close all;
clear all;
clc;
% Display the original image.
I = im2double(imread(‘lena.jpg‘));
[hei,wid,~] = size(I);
subplot(2,3,1),imshow(I);
title(‘Original Image (courtesy of MIT)‘);

% Simulate a motion blur.
LEN = 21;
THETA = 11;
PSF = fspecial(‘motion‘, LEN, THETA);
blurred = imfilter(I, PSF, ‘conv‘, ‘circular‘);
subplot(2,3,2), imshow(blurred); title(‘Blurred Image‘);

% Inverse filter
If = fft2(blurred);
Pf = fft2(PSF,hei,wid);
deblurred = ifft2(If./Pf);
subplot(2,3,3), imshow(deblurred); title(‘Restore Image‘)

% Simulate additive noise.
noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, ‘gaussian‘, ...
                        noise_mean, noise_var);
subplot(2,3,4), imshow(blurred_noisy)
title(‘Simulate Blur and Noise‘)

% Try restoration assuming no noise.
If = fft2(blurred_noisy);
deblurred2 = ifft2(If./Pf);
subplot(2,3,5), imshow(deblurred2)
title(‘Restoration of Blurred Assuming No Noise‘);

% Try restoration with noise is known.
noisy = blurred_noisy - blurred;
Nf = fft2(noisy);
deblurred2 = ifft2(If./Pf - Nf./Pf);
subplot(2,3,6), imshow(deblurred2)
title(‘Restoration of Blurred with Noise Is Known‘)

这里使用了经典的lena图是灰度图像,分别对图像进行运动模糊,逆滤波,运动模糊+高斯噪声,假定噪声未知直接逆滤波,噪声已知逆滤波。

效果

说明

逆滤波对噪声非常敏感,除非我们知道噪声的分布情况(事实上,这也很难知道),逆滤波几乎不可用,可以从二排中间看出,恢复图像效果极差。但若知道噪声分布,也是可以完全复原信息的。可以从二排最后一张图可以看出。写作本文的目的也仅是在数学角度上对图像模糊现象进行分析,后续会介绍更加有效的图像复原方法,敬请关注。

相关阅读及参考文献

图像去模糊(维纳滤波) http://blog.csdn.net/bluecol/article/details/46242355

数字图像处理(第三版) 冈萨雷斯著 chapter 5,图像复原与重建

转载请保留以下信息

作者 日期 联系方式
风吹夏天 2015年8月8日 [email protected]

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-10 13:33:37

图像去模糊(逆滤波)的相关文章

视频图像去模糊常用处理方法

视频图像去模糊常用处理方法 随着“平安城市”的广泛建设,各大城市已经建有大量的视频监控系统,虽然监控系统己经广泛地存在于银行.商场.车站和交通路口等公共场所,但是在公安工作中,由于设备或者其他条件的限制,案情发生后的图像回放都存在图像不清晰,数据不完整的问题,无法为案件的及时侦破提供有效线索.经常出现嫌疑人面部特征不清晰,难以辨认,嫌疑车辆车牌模糊无法辨认等问题.这给公安部门破案.法院的取证都带来了极大的麻烦.随着平安城市的推广.各地各类监控系统建设的进一步推进,此类问题会越来越突出. 一.模糊

[数字图像处理]图像复原--逆滤波

1.逆滤波的问题点 图像的老化,可以视为以下这样的一个过程.一个是退化函数的影响(致使图片模糊,褪色等),一个可加性噪声的影响. 用算式表示为 前几篇博文,主要是介绍可加性噪声的去除.本博文,主要介绍图像的逆滤波,即退化函数的去除.然而,逆滤波在空间域内的处理是很不方便的. 简单的来考虑,加法的逆运算是减法,乘法的逆运算的除法,微分的逆运算是积分(严密一点说是不定积分).那么就可以得到一个简单的结论了,要出去卷积的话,肯定需要用到卷积的逆运算.卷积的逆运算是---------反卷积,额,好像是一

图像去模糊(约束最小二乘方滤波)

引言 这是图像去模糊的第三篇,接着上节说道逆滤波对噪声特别敏感.约束最小二乘方滤波(Constrained Least Squares Filtering,aka Tikhonov filtration,Tikhonov regularization)核心是H对噪声的敏感性问题.减少噪声敏感新问题的一种方法是以平滑度量的最佳复原为基础的,因此我们可以建立下列约束条件: C=∑0M?1∑0N?1[?2f(x,y)]2 其约束条件为 ||G?HF^||2=||N||2 这里,F^是为退化图像的估计,

图像去模糊(维纳滤波)

在数学应用上,对于运动引起的图像模糊,最简单的方法是直接做逆滤波,但是逆滤波对加性噪声特别敏感,使得回复的图像几乎不可用.最小均方差(维纳)滤波用来去除含有噪声的模糊图像,其目标是找到未污染图像的一个估计,使它们之间的均方差最小,可以去除噪声,同时清晰化模糊图像. 定义 给定一个系统 y(t)=h(t)?x(t)+n(t) 这里,?是卷积符号 x(t)是在时间t刻输入的信号(未知) h(t)是一个线性时间不变系统的脉冲响应(已知) n(t)是加性噪声,与x(t)不相关(未知) y(t)是我们观察

图像卷积与滤波的一些知识点(转)

图像卷积与滤波的一些知识点 [email protected] http://blog.csdn.net/zouxy09 之前在学习CNN的时候,有对卷积进行一些学习和整理,后来就烂尾了,现在稍微整理下,先放上来,以提醒和交流. 一.线性滤波与卷积的基本概念 线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果.做法很简单.首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像.然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩

图像卷积与滤波的一些知识点

图像卷积与滤波的一些知识点 [email protected] http://blog.csdn.net/zouxy09 之前在学习CNN的时候,有对卷积进行一些学习和整理,后来就烂尾了,现在稍微整理下,先放上来,以提醒和交流. 一.线性滤波与卷积的基本概念 线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果.做法很简单.首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像.然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩

zz图像卷积与滤波的一些知识点

Xinwei: 写的通俗易懂,终于让我这个不搞CV.不搞图像的外行理解卷积和滤波了. 图像卷积与滤波的一些知识点 [email protected] http://blog.csdn.net/zouxy09 之前在学习CNN的时候,有对卷积进行一些学习和整理,后来就烂尾了,现在稍微整理下,先放上来,以提醒和交流. 一.线性滤波与卷积的基本概念 线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果.做法很简单.首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷

【练习5.8】使用随机数初始化图像、 双边滤波

提纲 题目要求 程序代码 结果图片 题目要求: 生成一个较小方差得随机图像(用一个随机变量,使其大部分数值的差异不超过3,其中大部分数值接近0),将此图像载入一个绘制程序,在图像上画一些辐射状相交于一点的线条. a.对图像使用双边滤波. 程序代码: 1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点. 2 // 3 //D:\\Work\\Work_Programming\\Source\\Image\\lena.jpg 4 5 6 #include "

图像去模糊

一.模糊模型 G = I*PSF + N I为原图像,PSF是模糊运动函数(模糊核函数),N为噪声 二.一般方法: 1.直接求逆,不实用 2.维纳滤波,配合功率谱函数 3.约束的最小二乘方(正则)滤波 4.盲去卷积方法(R-L方法) 图1.使用L-R算法去模糊,椒盐噪声1e-2,运动模糊9,30 end.