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

引言

这是图像去模糊的第三篇,接着上节说道逆滤波对噪声特别敏感。约束最小二乘方滤波(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^是为退化图像的估计,拉普拉斯算子?2在这里表示平滑程度。

推导

如何求解这个式子呢,将上式表示成矩阵形式,同时将约束项转换成拉格朗日乘子项,可得到

||PF^||22?λ(||G?HF^||22?||N||22)

最小化上代价函数,对F^求导,令等零。

P?PF^=λH?(G?HF^)

最后可得到,下列式子

F^=λH?GλH?H+P?P=[HH||H||22+γ||P||22]G

这里,P是函数

p=???0?10?14?10?10???

的傅里叶变换。其实这就是那个拉普拉斯模板嘛。

嗯,和书上的公式一模一样,这就证明我们求解对了。

好了,我又可以重新造轮子了。

代码

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 = psf2otf(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.00001;
blurred_noisy = imnoise(blurred, ‘gaussian‘, ...
                        noise_mean, noise_var);
subplot(2,3,4), imshow(blurred_noisy)
title(‘Simulate Blur and Noise‘)

% Try restoration using  Home Made Constrained Least Squares Filtering.
p = [0 -1 0;-1 4 -1;0 -1 0];
P = psf2otf(p,[hei,wid]);

gama = 0.001;
If = fft2(blurred_noisy);

numerator = conj(Pf);
denominator = Pf.^2 + gama*(P.^2);

deblurred2 = ifft2( numerator.*If./ denominator );
subplot(2,3,5), imshow(deblurred2)
title(‘Restoration of Blurred Using Constrained Least Squares Filtering‘);

subplot(2,3,6); imshow(deconvreg(blurred_noisy, PSF,0)); title(‘Regul in Matlab‘);

依次是原图,运动模糊图像,逆滤波结果,运动模糊+高斯噪声,Home Made 约束最小二乘方滤波(λ=0.001,交互设置),Matlab自带的去模糊deconvreg函数。

效果

嗯,可以看出我们做出来的约束最小二乘方滤波效果非常不错的(多亏我调的一手好参)。这里的λ是我自己手工设置的,也是多次尝试,以产生最好的视觉效果。我个人建议λ设置成0.001左右会有比较好的效果。一般的说法是,约束最小二乘方滤波对高噪声和中等噪声产生结果要好于维纳滤波,对于低噪声两种滤波产生结果基本相等。手工选取参数时效果会更好一些。

其实λ可以迭代最优化,Matlab自带的函数deconvreg即是如此,这样可以实现最佳复原算法,听起来不错。

我有时间再写,呼,先休息一下。

更多阅读

RESTORATION OF DEFOCUSED AND BLURRED IMAGES http://yuzhikov.com/articles/BlurredImagesRestoration1.htm

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

图像去模糊(逆滤波)http://blog.csdn.net/bluecol/article/details/47357717

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

转载

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

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

时间: 2024-08-01 11:21:58

图像去模糊(约束最小二乘方滤波)的相关文章

图像去模糊(逆滤波)

引言 图像模糊是一种拍摄常见的现象,我曾在图像去模糊(维纳滤波) 介绍过.这里不再详述,只给出物理模型,这里我们仍在频率域表示 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)未知,式子表明,即使知道退化函数

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

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

图像的中值滤波处理

#include<iostream>using namespace std;int main(){ int n,m,i,j,k,o,u,p,a[100][100],x[100][100],max[100][100][20],b[100][100]; cout<<"输入矩阵行列数:"<<endl; cin>>n>>m; cout<<"输入原图像的亮度矩阵:"<<endl; for(i=

图像去模糊

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

Python下opencv使用笔记(五)(图像的平滑与滤波)

对于图形的平滑与滤波,但从滤波角度来讲,一般主要的目的都是为了实现对图像噪声的消除,增强图像的效果. 首先介绍二维卷积运算,图像的滤波可以看成是滤波模板与原始图像对应部分的的卷积运算.关于卷积运算,找到几篇相关的博客: 图像处理:基础(模板.卷积运算) 图像处理-模板.卷积的整理 对于2D图像可以进行低通或者高通滤波操作,低通滤波(LPF)有利于去噪,模糊图像,高通滤波(HPF)有利于找到图像边界. (一)统一的2D滤波器cv2.filter2D Opencv提供的一个通用的2D滤波函数为cv2

图像去模糊(维纳滤波)

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

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

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

中值滤波与图像锐化

本文主要包括以下内容 中值滤波及其改进算法 图像锐化, 包括梯度算子.拉普拉斯算子.高提升滤波和高斯-拉普拉斯变换 本章的典型囊例分析 对椒盐噪声的平滑效果比较 Laplacian与LoG算子的锐化效果比较 中值滤波 中值滤波本质上是一种统计排序滤波器. 对于原图像中某点(i,j), 中值滤波以该点为中 心的邻域内的所有像素的统计排序中值作为(i, j) 点的响应. 中值不同于均值, 是指排序队列中位于中间位置的元素的值,例如=采用3x3 中值滤披 器, 某点.(i,j) 的8 个邻域的一系列像

[家里蹲大学数学杂志]第055期图像滤波中的方向扩散模型

$\bf 摘要$: 本文给出了王大凯等编的<图像处理中的偏微分方程方法>第 5.4.1 节的详细论述. $\bf 关键词$: 图像滤波; 方向扩散模型; matlab 编程 1. 模型的建立 从保护图像边缘的观点出发, 我们希望扩散是沿着平行于边缘的切线方向 (即垂直于 $\n I$ 的方向) 进行. 于是得到如下 PDE: $$\bee\label{1:df} I_t=I_{\xi\xi}, \eee$$ 其中 $\xi(\perp \n I)$ 为单位矢量. 我们化简 \eqref{1:d