全变分(Total variation),也称为全变差,是图象复原中常用的一个名词。本文简要介绍全变分的概念以及在图象去噪中的应用。
一维信号的全变分和去噪
一维连续函数的全变分
一维连续实函数f(x)
在区间[a, b] \subset R
上的全变分定义为参数曲线x \rightarrow f(x), x \in [a,b]
的弧长。其表达式为
V_a^b(f) = \int_a^b |f'(x)|dx
说白了,所谓的“变分”就是|f(x+\Delta x) - f(x)|
,对于连续函数\Delta x \rightarrow 0
。而全变分是对函数定义的区间而言的,就是将“变分”在区间上累加起来。
一维离散信号的全变分
从上面连续实函数的全变分,我们可以很容易想到它的离散形式。给出信号序列\{y_i\},i=1,..,n
,它的全变分定义为
V(y) = \sum_{i=1}^{n} |y_{i+1} - y_i |
用一句话来概括,全变分是前后项之差的绝对值之和。
一维信号去噪
当我们得到观察信号x_i
,希望x_i
变得平滑,也就是对x_i
去噪。一种很直观的想法就是让信号的全变分变小。全变分对应的物理意义就是输入信号的平滑度。设得到的恢复信号为y_i
,它应该满足两个条件:
y_i
与观察信号x_i
的差距不大。这个差距的常用数学表达式就是
E(x,y) = \frac{1}{2} \sum_i (x_i - y_i)^2
y_i
的全变分不大。
将物理约束转化为数学模型,求解y
等价于求解下面这个优化问题:
\min_{y} E(x,y) + \lambda V(y)
其中参数\lambda
是正常数,用于调节两个约束的作用大小。注意到E(x,y)
和V(y)
都是凸函数,这是一个无约束凸优化问题,有很多经典方法可以求解。
二维离散信号(图象)的全变分和去噪
图象是典型的二维离散信号,Rudin在1992年将其全变分定义为
V(y) = \sum_{i,j} \sqrt{ |y_{i+1,j}-y_{i,j} |^2 + |y_{i,j+1} - y_{i,j}|^2 }
这个函数是各项同性的,但是不可微,也并不是凸函数。非凸函数的优化求解难度、速度和稳定性都无法与凸函数相比。因此二维全变分有另一种常用定义
\begin{aligned}
V(y)& = \sum_{i,j} \sqrt{ |y_{i+1,j} - y_{i,j}|^2} + \sqrt{ |y_{i,j+1} - y_{i,j} |^2} \\\\
&= \sum_{i,j} |y_{i+1,j} - y_{i,j}| + |y_{i,j+1} - y_{i,j} |
\end{aligned}
这个函数是凸函数了。
仿照一维信号的去噪,基于全变分的图象去噪可以看成求解优化问题
\min_y E(x,y) + \lambda V(y)
其中E(x,y)
作为数据误差项定义为
E(x,y) = \frac{1}{2}\sum_{i,j} (x_{i,j} - y_{i,j})^2
当V
有凸函数形式时,问题变为无约束凸优化问题,从而容易求解。