(完整word版)TV修补模型的介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TV 修复模型的介绍
1, 背景知识介绍
在日常的生活中由于自然或者是人为的原因使得一些图像受到了污染或者是破损,在早期的时候采取的是人为的进行修补,这样的修补的效率十分的低,而且有的图像本身就是艺术品,修补的过程要特别的小心,不然将会是艺术品失去它本来的价值。
随着科技的发展,现在可以把图像修补的问题用计算机来解决,一个好的算法可以使修补的效果和那些艺术修补大师修补的效果相仿,用计算机进行图像修补的问题最早是由Bertalmin 等人在2000年的SIGGRAPH 会议上提出BSCB 图像修补模型(模型的命名取的是四个人名字的第一个字母),并发表了他们的研究成果,明确地提出图像修补的定义、预期目的及应用分类,并使用了基于偏微分方程(PDE )的分析方法,从而奠定了PDE 图像修补的基础,促进了这个领域的研究。
整体变分(Total Variation )的方法最早是用来对受到噪声污染的图像进行降噪的,在这方面的应用最早是由L 。
Rudin 和S.Osher 等人在1992年提出的,2002年Chan 等人把TV 模型推广到图像修补中,并提出了基于TV 模型的图像修补方法,同时说明了TV 修补模型的缺点,进一步提出了CDD 修补模型(curvature driven diffusions),此修补模型改正了TV 修补模型的缺陷,对图像的修补具有很好的效果。
图像修复的应用不仅仅包括图像修补,同时也包括对一些图像进行物体的移除,以及文字的擦除等,这些都可以运用图像修补的模型来解决,在实际的操作里我们可以把这些需要擦除的地方当成污损的区域来处理.
2, T V 修复模型的介绍
2。
1 变分方法的介绍
基本概念:
[]b a C ,1表示在区间[]b a ,所有一阶可导的函数组成的集合;
[][]()(){}
0,,|,11
==∈=b v a v b a C v v b a C ; 引理 2。
1
设],[b a C u ∈,且[]b a C v ,1
∈∀,且⎰=b
a
dx x v x u 0)()(成立,则0)(=x u 。
Euler 方程
首先考虑最简单的变分模型,,推导出满足的必要条件,考虑下面的集合
})(,)(],,[|{1b a y b y y a y b a C y y K ==∈=
考虑下面泛函
⎰=b
a
dx y y x F y J )',,()(
这里要求F 具有连续的一阶偏导数,下面求K y ∈*,使得
K y y J y J ∈=)},(min{*)(
这里我们用y 来代替y*讨论,当y 满足上面的式子时,我们可以得到[]b a C ,1
∈∀η 这里我们可以得到0)(,0)(==b a ηη,所以对于)()(x x y λη+有
b a y b b y y a a y =+=+)()(,)()(ληλη
由于y 使得J(y )最小,所以我们可得)()(λη+≤y J y J
对于一个特定的y 来说)(λη+y J 可以看作是λ的函数,这里我们设
)()(ληλϕ+=y J
求得0=λ的一阶导数和二阶导数,也称之为泛函的变分可得
⎰⎰⎪⎪⎭
⎫ ⎝⎛∂∂+∂∂∂+∂∂==⎪⎪⎭⎫
⎝⎛∂∂+∂∂==
==b a b a y y y x F y y y y x F y y y x F d d J dx y y y x F y y y x F d d J 222
2
2
22
022
2
0'')',,('')',,(2)',,(|'')',,()',,(|ηηηηλϕδηηλϕδλλ
在0=λ时,我们知道此时的泛函达到最小值,因为这时的一阶导数应该为0,于是
0'')',,()',,(|0=⎪⎪⎭
⎫ ⎝⎛∂∂+∂∂==⎰=dx y y y x F y y y x F d d J b a ηηλϕδλ 进行分部积分我们可以得到
0'=⎥⎦⎤
⎢⎣
⎡⎪⎪⎭⎫ ⎝⎛∂∂-∂∂⎰
dx y F dx d y F b
a
η 又由引理2。
1可以知道
0'=⎪⎪⎭
⎫
⎝⎛∂∂-∂∂y F dx d y F 根据同样的分析方法我们可以得到当泛函(两个变量的泛函)如下式时
dxdy
u u u y x F y x u J y x ),,,,()),((⎰⎰=
这里的下标表示的是偏导数,其中y u
u x u u y x ∂∂=∂∂=,
求泛函的最小值,只要求下式即可
=∂∂
-∂∂-
y x u u u F y
F x F (由于两个变量的泛函的分析较麻烦一点,这里略过,可以参看一些关于借偏 微分方程的书籍)
2。
2 TV 修复模型
如图所示D 为待修补区域,而E 是紧临着D 的带状区域,TV 图像修补就是在区域在噪声约束的条件下,对区域E 和D 进行整体的变分,达到对污损区域D 进行的修补,其建立的模型是基于下面的原理:
上图中的左图上半区域和下半区域的差别很大,那么在边界处对于一个像素它的梯度向量的模相对的比较的大,而对于右图来说,上半区域与下半区域基本上达到一致,这样梯度向量的模相对的也就小,当对图像的修补达到一定的效果的时候,那么可以知道在各像素点的过渡都比较的光滑,换句话说就是在各个像素点的梯度向量的模都十分的小,这里引入的TV 修补的模型就是根据这个事实而建立的. 我们记修补完以后的图像为I *,于是我们可以定义代价函数如下:
⎰⋃∇=
D
E dxdy I r I R |)*(|*)( (1)
这里的r(x)是一个当x 为正的时候输出的结果也为正的函数,这里我们直接可以去r(x )=x,在这里
我们可以知道我的求得积分就是对每个像素点的梯度进行积分,当代价函数越小的时候,图像就显得越光滑,这样修补的效果也就越好。
在考虑完代价函数的时候,就如前面说的那样,图像应该考虑到噪声的影响,边界带状区域产生的噪
声不可以超过一定的范围,于是我们可以得到如下的约束式子(这里的σ是参数白噪声的方差):
)2(|*|)(1
22⎰=-E
dxdy I I E A σ
为了对于在边界E 上,图像也保持着光滑性,在边界处*I ∇是一个冲击函数,于是我们可以得到以下的条件
+∞<⎰⋃D
E dxdy s r )( (3)
我们可以知道要使得上式成立则得
低阶的式子+=αs s r )( (4)
在这里α是小于等于1的,当1=α时,则这时的模型就是TV 修复模型,在TV 修补模型中我们同样选取这样的模型,当然可以选取其他的模型。
运用拉格朗日算子把有条件极值装换为无条件极值,得到新的代价函数为
)5(|*|2|*|*)(2
⎰
⎰
-+
∇=
⋃E
D
E dxdy I I dxdy I I J λ
λ
对于我们这里的式(5)我们运用前面二元泛函最小值满足的条件可以得到要使得(5)式最小,则要满足以下的式子
)
6(),(,0),(,,0)*(|*|*⎩⎨⎧∈∈==-+⎪⎪⎭⎫
⎝⎛∇∇⋅∇-D
y x E y x I I I I e e
λλλ其中
对上面的式子进行离散化就可以得到当前修补的像素点和周围的像素点之间的关系,离散化的过程
将在下节中介绍。
3, T V 修复模型的数值实现
对于上节的(6)式我们可以采取半点差分的模式实现(主要的是因为在离散化的过程中会多次差分)
如上图O 点为待修补点, {}E W S N O ,,,=Λ为O 点的四个相邻的像素值,{}e w s n ,,,=Λ为O 点相邻的半点的像素值。
这里我们记()21,|
|J J I I
J =∇∇=,利用中心差分公式我们可以得到J 的散度)(J ⋅∇的离散化的结果,采用半点的差分
h
J J h J J y J x J J s
n w e O 221121)(-+-=∂∂+∂∂=
⋅∇ 下面对式子中各个元素离散化
h I I I x I I J O E e
e e e -⋅∇≈⎥⎦⎤⎢⎣⎡∂∂∇=
||1
||11
⎪⎭⎫ ⎝⎛--+-=⎪⎪⎭⎫ ⎝⎛⎥⎦⎤⎢⎣⎡∂∂⎥⎦⎤⎢⎣⎡∂∂=∇h I I I I h
I I y I x I I SE S NE N O E e e e 4,, h I I I x I I J W O w
w w w -⋅∇≈⎥⎦⎤⎢⎣⎡∂∂∇=
||1
||11 ⎪⎭⎫
⎝
⎛--+-=⎪⎪⎭⎫ ⎝⎛⎥⎦⎤⎢⎣⎡∂∂⎥⎦⎤⎢⎣⎡∂∂=∇h I I I I h I I y I x I I SW S NW N W O w w w 4,, h I I I y I I J O
N n
n n
n -⋅∇≈⎥⎦⎤⎢⎣⎡∂∂∇=
11
2 ⎪⎭⎫
⎝
⎛---+=⎪⎪⎭⎫ ⎝⎛⎥⎦⎤⎢⎣⎡∂∂⎥⎦⎤⎢⎣⎡∂∂=∇h I I h I I I I y I x I I O N W NW E NE n n n ,4, h I I I y I I J S
O s
s s
s -⋅∇≈⎥⎦⎤⎢⎣⎡∂∂∇=
11
2 ⎪⎭⎫
⎝
⎛---+=⎪⎪⎭⎫ ⎝⎛⎥⎦⎤⎢⎣⎡∂∂⎥⎦⎤⎢⎣⎡∂∂=∇h I I h I I I I y I x I I S O W SW E SE s s s ,4, 将所得的结果代入(6)式可以得到
()
0)()(10
=-⋅+-∇∑Λ∈O O P O P p
I I O I I I λ P 代表的是O 的四个相邻的像素点,p 代表的是四个相邻的半点,而0
O I 代表的是前次迭代得到的结果。
为了防止梯度出现为零的情况,我们常常用Λ∈≠+∇=
p I w p p ,0,122
αα来表示梯度,这里设
∑∑+=
+=)
()
()
(O w O h O w
w h p OO p
p Op λλλ
于是我们可以得到
∑Λ∈+=
O
P o
O OO P Op O I h I h I
所以TV 修补方法的一般的迭代公式为
∑Λ∈---+=
O
P n O
OO n P
n Op n O I h I
h
I 1
11 当没有噪声污染的时,0)(=O λ,我们可以得到以下的迭代公式
∑Λ∈--=
O
P n P n Op n
O I h I 1
1
当含有噪声污染时,要实现对图像的降噪,这时0)(≠O λ,则我们可以用以下的方法求)(O λ
()(
)
()()()(
)
(
)(
)
(
)()
⎥
⎥
⎦
⎤
⎪⎪⎪⎭⎫∆+∆∆∆-
∆+∆∆∆-
⎢⎣⎡
⎝
⎛
∆+∆-=+++
+
++
+
+
++∑220
2
2
0,2
22),(),(),(),()
,(),()
,(),()
,(),(21j i I j i I j i I j i I j i I j i I
j i I j i I j i I j i I
n y n x n y y n y n x n x x j i n y n x n
σλ
对于所有的点,n λ都为其降噪过程中的)(O λ,其中这里的n 代表的是迭代的次数,
),()1,(),(),(),1(),(j i I j i I j i I j i I j i I j i I n n n x n n n x -+=∆-+=∆++
对于边界像素的处理采用下面的方法
)
,()1,(),0,()0,(),(),1(),,1(),0(N i I N i I i I i I j M I j M I j I j I n n n n n n n n =+==+=
),(j i I n 表示的是第n 次迭代的结果,M 和N 表示的是图像的大小。
4, 随机初始化的过程
在实现算法的过程中可以直接的修改而不初始化,也可以采取纯白初始化的过程,但是这些修过最后得到
的结果都不是十分的好,一般的方法是采取相关初始化的过程,这里采取的是相关随机初始化。
相关随机初始化的具体的操作如下
图10
● 具体的操作:设当前需要处理的目标点为o 点,且该点处于污损区域中。
● 以o 点为中心,沿横、纵方向寻找到与该点距离最近的非污损区域的4个交点,并记录这4个点的具体
位置.横向的点记为1k 、2k ;纵向的记为3k 、4k 。
● 分别计算横纵方向上2个点之间的距离d(横)、d (纵).如上图所示,如果d(横)>d(纵),说明纵方向边
缘距离o 点近,纵向相关性大,因此参考纵方向上的2个边缘点1k 、2k ,随机选取它们灰度值之间的某一值给o 点赋初始值;反之亦然.这里为了简单起见,同时也是为了增加程序执行的效率,我们只是在1k 、
2k 两点之间进行选取.
5,实验结果
以下的实验结果是在处理器为酷睿2双核T8100,内存为2GB的笔记本上实现的,在MATLAB 7。
0平台下进行编程。
5.1 实现对污损图像进行修补
原始的图像人为污损的图像
随机初始化得到的图像修复得到的图像
5。
2 实现文字的擦除
原始的图像擦除文字后的图像
由图可以看出TV方法可以对图像进行很好的修补,但是和一些基于无纹理修补方法一样,TV方法之适合修补没有纹理结构的图像,结构十分的清晰,但是修补的区域一般都会趋于模糊化。