[家里蹲大学数学杂志]第057期图像复原中的改进 TV 模型

简介: : 本文给出了王大凯等编的《图像处理中的偏微分方程方法》第 6.2 节的详细论述.   : 图像复原; TV 模型; matlab 编程   1. 前言 图像在形成、传输和存储过程中中, 图像质量可能退化 (degradation).

: 本文给出了王大凯等编的《图像处理中的偏微分方程方法》第 6.2 节的详细论述.

 

: 图像复原; TV 模型; matlab 编程

 

1. 前言

图像在形成、传输和存储过程中中, 图像质量可能退化 (degradation). 而退化的图像可用数学模型: \beeu0=hdf+n\eee

来描述, 其中

(1)f(x,y) 是理想的图像;

(2)hd(x,y) 是成像系统的点弥散函数 (point-spread function, PSF), 理想的 PSF 为 δ(), 实际的 PSF 分为

(a)由散焦 (电子束扫描的点大小改变) 引起的模糊: \bexhd(x,y)=ex2+y22σ2,\eex

(b)大气湍流 (小尺度的扰动产生大尺度的运动状态的改变) 的影响: \bex\calF(hd)(u,v)H(u,v)=ek(u2+v2)56,\eex

(c)运动模糊: \bexHd(u,v)=Tsin[π(au+bv)]π(au+bv)ejπ(au+bv),\eex

其中 T 是快门 (shutter, 控制照相机曝光时间的机件) 时间, (a,b) 是物体的速度;

(3)n(x,y) 是加性噪声, 本文中采用以均值为零, 方差为 σ 的 Gaussian 白噪声 (white gaussian noise, wgn).

 

图像复原 (image restoration) 就是根据已记录下的 u0 来恢复原始 f. 传统的复原方法主要是逆滤波 (inverse filtering) 或称去卷积 (deconvolution) (比如 Wiener 的去卷积滤波理论) 与有约束的最小二乘法.

 

现在简单介绍一下与 PDE 复原相关的有约束最小二乘法. 它的出发点是: 输出图像在满足 \bexΩ\sevhduu02\rdx\rdy=\const\eex

的约束下 (输出图像比待处理图像更不模糊(图像处理的要求么), 所以模糊一下应该与待处理图像相差无几) 应尽可能光滑.

 

这样, 光滑的量度就是最小二乘法的关键. 传统的方法是以 \dpsΩ\sev\nu2\rdx\rdy 作为光滑量度, 但它与图像的固有特征——存在突变 (边缘)——不相容. 为此, Rudin, Osher 和 Fatime 首先提出以 \dpsΩ\sevDu 作为光滑量度, 开创了全变分 (total variation, TV) 复原方法, 或称 ROF 方法. TV 方法的有点在于 BV 函数容许跳跃, 而二值图像 (或更一般的分片常数图像) 就为其一成员 (\dpsχEBV(Ω)\dpsχEW1,2(Ω)).

 

2. 模型的建立

\dpsΩ\sevDu 作为光滑量度的 TV 模型可表达为求以下泛函 \beeE(u)=Ω\sevDu+λ2Ω\sevhduu02\rdx\rdy,\eee

其中 λ 是 Lagrange 乘子. 利用公式 \bexh(x)=h(x)\raf(gh)=(fh)g\eex
我们知 (???) 之 Euler-Lagrange 方程为 \bee\Div\sex\nu\sev\nu+λhd\sexhduu0=0,\eee
对应的梯度下降流 (gradient descent flow, GDF) 为 \bee\pu\pt=\Div\sex\nu\sev\nuλhd\sexhduu0.\eee
用 PDE (???) 来图像复原, 虽然有其优势 (相对于以 \dpsΩ\sev\nu2\rdx\rdy 为光滑量度的最小二乘法), 但

(1)一方面, 其时间步长须小, 而 CPU 开销大;

(2)另一方面, 不完全符合图像处理的形态学原则, 会产生阶梯 (staircase) 效应 (\dpsχEBV(Ω)). 为了缓解上述两缺陷, Marquina 和 Osher 提出了如下改进: \bee\pu\pt=\sev\nu\Div\sex\nu\sev\nuλ\sev\nuhd\sexhduu0.\eee

(???) 的优势在于

(1)\dps\sev\nu\Div\sex\nu\sev\nu=κ\sev\nu 是非线性扩散项, 其与第二项——Hamilton-Jacobi (HJ) 项相结合, 数值计算所需的 CFL 条件放宽 (扩散项采用中心差分 (central difference), 而 HJ 项采用迎风格式 (upwind scheme));

(2)(???) 在单调灰度变换下保持不变, 而形态学原则近似满足((???) 每项均含 \sev\nu, 这是图像的固有特征——边缘), 阶梯效应得以缓解.

 

3. 数值算法

(???) 可直接用显式方案 (explicit scheme) 求解: \bexun+1ij=unij+\lapt\sexPnij+Qnij,\eex

其中

(1)Pnij 是扩散项中心差分的结果: \bexPnij=\sexD(0)yunij2D(0)xxunij2D(0)xunijD(0)yunijD(0)xyunij+\sexD(0)xunij2D(0)yyunij\sexD(0)xunij2+\sexD(0)yunij2+\ve;\eex

(2)Qnij 是 HJ 项迎风格式的结果: \bex Q^n_{ij} &=&-\lambda \beta^n_{ij}\sev{\delta u^n_{ij}}, \eex

\bexβnij=\sexhd\sexhdunu0ij,\eex
\bex \sev{\delta u^n_{ij}} &=&\max\sex{\beta^n_{ij},0}\\ & & \cdot\sqrt{\max\sex{D^{(-)}_xu^n_{ij},0}^2 +\min\sex{D^{(+)}_xu^n_{ij}}^2 \max\sex{D^{(-)}_yu^n_{ij},0}^2 +\min\sex{D^{(+)}_yu^n_{ij}}^2 }\\ & &+\min\sex{\beta^n_{ij},0}\\ & & \cdot\sqrt{\min\sex{D^{(-)}_xu^n_{ij},0}^2 +\max\sex{D^{(+)}_xu^n_{ij}}^2 \min\sex{D^{(-)}_yu^n_{ij},0}^2 +\max\sex{D^{(+)}_yu^n_{ij}}^2 }. \eex

 

4. 数值试验

用如下的 matlab 代码:

clear all;
close all;
clc;

N=1000;%迭代次数设置
D=200;%每迭代200次输出当前图像
nn=3;%输出图像个数初始化

I0=imread('lenna.bmp');
I0=double(I0);

figure(1);imshow(uint8(I0));

[ny,nx]=size(I0);

I0=gauss(I0,7,3);%gaussian 加噪
I0=I0+10*randn([ny,nx]);%加性噪声
figure(2);imshow(uint8(I0));

lambda=0.2;%Lagrange 乘子
dt=0.01;%时间步长
I=I0;%图像初始化,存储迎风方案结果
J=I0;%图像初始化,存储 Roe 迎风方案结果

%%迭代开始
for n=1:N
Ix=0.5*(I(:,[2:nx,nx])-I(:,[1,1:nx-1]));
Iy=0.5*(I([2:ny,ny],:)-I([1,1:ny-1],:));
gradient=Ix.^2+Iy.^2+eps;

Ix_back=I-I(:,[1,1:nx-1]);
Ix_forward=I(:,[2:nx,nx])-I;
Iy_back=I-I([1,1:ny-1],:);
Iy_forward=I([2:ny,ny],:)-I;

Ixx=(I(:,[2:nx,nx])-I)-(I-I(:,[1,1:nx-1]));
Ixy=0.25*((I([2:ny,ny],[2:nx,nx])-I([2:ny,ny],[1,1:nx-1]))...
-(I([1,1:ny-1],[2:nx,nx])-I([1,1:ny-1],[1,1:nx-1])));
Iyy=(I([2:ny,ny],:)-I)-(I-I([1,1:ny-1],:));

%%中心差分
diffusion=(Iy.^2.*Ixx-2*Ix.*Iy.*Ixy+Ix.^2.*Iyy)./gradient;

%%迎风方案
beta=gauss(gauss(I,7,3)-I0,7,3);

upwind=max(beta,0).*...
sqrt(...
max(Ix_back,0).^2+min(Ix_forward,0).^2 ...
+max(Iy_back,0).^2+min(Iy_forward,0).^2 ...
)...
+min(beta,0).*...
sqrt(...
min(Ix_back,0).^2+max(Ix_forward,0).^2 ...
+min(Iy_back,0).^2+max(Iy_forward,0).^2 ...
);

%%Roe 迎风格式
upwind_x=Ix_back;
upwind_x(beta.*Ix<0)=Ix_forward(beta.*Ix<0);

upwind_y=Iy_back;
upwind_y(beta.*Iy<0)=Iy_forward(beta.*Iy<0);

Roe_upwind=beta.*sqrt(upwind_x.^2+upwind_y.^2);


%%更新图像
I=I+dt*(diffusion-lambda*upwind);
J=J+dt*(diffusion-lambda*Roe_upwind);

%%输出图像
if mod(n,D)==0
figure(nn);
subplot(1,2,1);imshow(uint8(I));
subplot(1,2,2);imshow(uint8(J));
nn=nn+1;
end
end

就可对 Lenna 图像加噪并复原, 见下图:

 

这里我们调用了以下 matlab 函数对原图像进行 gaussian 加噪:

function Ig=gauss(I,window,sigma)

%%函数 guass() 实现 guassian 平滑滤波
%%参数说明
%%I --- 待平滑函数
%%window --- gaussian 核大小(奇数)
%%simga --- gaussian 方差
%%Ig --- 返回 guassian 平滑后的图像

[ny,nx]=size(I);

half_window=(window-1)/2;%方便取中心

if ny<half_window
x=(-half_window:half_window);
filter=exp(-x.^2/(2*sigma));%一维 guassian 函数
filter=filter/sum(filter);%归一化
%%图像扩展
xL=mean(I(:,[1:half_window]));
xR=mean(I(:,[nx-half_window+1,nx]));
I=[xL*ones(ny,half_window) I xR*ones(ny,half_window)];
%扩展成 nx + window -1 列
Ig=conv(I,filter);
%形成 (nx + window -1) + (window) -1 = nx + 2 (window-1) 列
Ig=Ig(:,window+half_window+1:nx+window+half_window);
%第一个卷积要全部用原图像的数据, 从而
%卷积中第 l 项用的图像数据最小值 = l-windows
% >=(windows-1)/2+1 = 原图像在扩展图像中的位置
else
%%二维卷积
x=ones(window,1)*(-half_window:half_window);%横坐标
y=x';%纵坐标

filter=exp(-(x.^2+y.^2/(2*sigma)));%二维 guassian 函数
filter=filter/(sum(sum(filter)));%归一化

%%图像扩展
if (half_window>1)
xLeft=mean(I(:,[1:half_window])')';
%matlab 是对列取平均的,返回行向量
xRight=mean(I(:,[nx-half_window+1:nx])')';
else
xLeft=I(:,1);
xRight=I(:,nx);
end

I=[xLeft*ones(1,half_window),I,xRight*ones(1,half_window)];

if (half_window>1)
xUp=mean(I([1:half_window],:));
xDown=mean(I([ny-half_window+1,ny],:));
else
xUp=I(1,:);
xDown=I(ny,:);
end

I=[ones(half_window,1)*xUp;I;ones(half_window,1)*xDown];

Ig=conv2(I,filter,'valid');

end

目录
打赏
0
0
0
0
15
分享
相关文章
家里蹲大学数学杂志期刊模式目录
张祖锦第1卷第1期华南理工大学2010年数学分析考研试题参考解答   张祖锦第1卷第2期华南理工大学2010年高等代数考研试题参考解答   张祖锦第1卷第3期华南理工大学2009年数学分析考研试题参考解答   张祖锦第1卷第4期华南理工大学2009年高等代数考研试题参考解答   张祖...
1600 0
[家里蹲大学数学杂志]第432期Hardy type inequalities
If p>1, f0, and \bexF(x)=x0f(t)\rdt,\eex
then $$\bee\label{Hardy:0 to x} \int_0^\infty \sex{\frac{F}{x}}^p\rd x \leq \sex{\frac{p}{p-1}}^p \int_0^\infty f^p\rd x.
753 0
[家里蹲大学数学杂志]第433期一个极限
求极限 \bex\vlmn(n2+1)(n2+2)(n2+n)(n21)(n22)(n2n).\eex
    解答: 还记得对数不等式么: $$\bex \dfrac{x}{1+x}
1020 0
[家里蹲大学数学杂志]第426期一个无理数的证明
试证: \dpscos2π5 为无理数.   证明: 设 \bexz=ei2π5,\eex
则 $$\beex \bea z^5&=e^{i2\pi}=1,\\ (z-1)(z^4+z^3+z^2+z+1)&=0,\\ z^4+z^3+z^2+z+1&=0,\\ z^2+z+1+z^{-1}+z^{-2}&=0.
610 0
家里蹲大学数学杂志按学校分类目录[2016年8月23日更新]
├─中南大学│      第3卷第81期_中南大学2011年数学分析考研试题参考解答│      第4卷第266期_中南大学2013年高等代数考研试题参考解答│      ├─中国人民大学│      第5卷第370期_中国人民大学2003年高等代数考研试题参考解答│      第5卷第371期_中...
1237 0
[家里蹲大学数学杂志]第235期Lp 调和函数恒为零
u\bbRn 上的调和函数, 且 $$\bex \sen{u}_{L^p}=\sex{\int_{\bbR^n}|u(y)|^p\rd y}^{1/p}
773 0
[家里蹲大学数学杂志]第322期赣南师范学院数学竞赛培训第11套模拟试卷
  数学分析部分     1. 已知函数 f(x)=lnxax, 其中 a 为常数. 如果 f(x) 有两个零点 x1,x2. 试证: x1x2>e2.
700 0
[家里蹲大学数学杂志]第053期Legendre变换
. 设 \calX 是一个 B 空间, f:\calX¯\bbR\sex\bbR\sed 是连续的凸泛函并且 f(x).
675 0
[家里蹲大学数学杂志]第056期Tikhonov 泛函的变分
\scrX, \scrY 是 Hilbert 空间, T\scrL(\scrX,\scrY), y0\scrY, α>0. 则 Tikhonov 泛函 $$\bee\label{T} J_\alpha(x)=\sen{Tx-y_0}^2+\alpha...
843 0
[家里蹲大学数学杂志]第293期_偏微分方程基础教程
第293期_偏微分方程基础教程   摘要: 本文给出了 L.C. Evans 的 前三章的学习笔记及习题全部解答.   下载提示: 点击链接后, 拉到最下端, 看见 ”正在获取下载地址“, 等待后点击”中国电信下载“即可.
871 0