Next: cfmdiffuse Up: Reference Previous: amss   Contents   Index

#### cfdiffuse

Name

cfdiffuse One-step Diffusion of a Color Float Image using Total Variation minimization

Command Synopsis

cfdiffuse [-t deltat] [-l epsilon] in out

-t deltat : Time for the diffusion (default 10.)

-l epsilon : Lower bound for the RGB norm (default 1.)

in : original image (input cfimage)

out : diffused image (output cfimage)

Function Summary

void cfdiffuse (deltat , epsilon , in , out , MDiag0 , MDiag1 , U0 , Yimage , Vimage , L2h , L2v )

float *deltat , *epsilon ;

Cfimage in , out ;

Fsignal MDiag0 , MDiag1 , U0 ;

Cfimage Yimage , Vimage ;

Fimage L2h , L2v ;

Description

This module applies the Total Variation Minimization algorithm described below to a color image in, during the time t given by deltat. The result is a diffused (smoothed) color image put in out which keeps the sharpness of the edges. Such algorithm may be used to restore a noisy image.

To get a sequence of diffused images, see the module cfmdiffuse.

The following is a short description of the used scheme, the Total Variation Minimization via a Relaxation Algorithm. For more information please see [CL97].

Let be the following C1 function:

 : x (4)
and consider the problem

 Minimize (|u|) + | u - u0|2 (5)
where u H1() = W1, 2().

As goes to zero it may be shown that the minimizer of (5) goes to the minimizer of the following energy:

 |u| + | u - u0|2. (6)

Now, set for simplicity's sake = 1 and choose a small, fixed (for instance, 1). In the sequel we will denote simply by . Consider the following functional:

 E(u, v) = v|u|2 + + | u - u0|2 (7)
where u H1() and v L2(), v 1/.

Start from any u1 and v1 (for instance v1 1) and let:

 un+1 = argE(u, vn) vn+1 = argE(un+1, v) =
(8)
(un+1 is therefore characterized by

H1(),vnun+1 . + (un+1 - u0) = 0,

i.e. - div(vnun+1) + un+1 = u0 in H1().)

We have the following result.

PROPOSITION. The sequence (un) converges (strongly in L2() and weakly in H1()) to the minimizer of (5).

Now, to solve the PDE

= div

or, to be more precise,

= divu

we simply compute u(t + t) by minimizing (5) with u0 = u(t) and = 1/t.

Version 1.0

Last Modification date : Fri Feb 1 15:36:23 2002

Author

Antonin Chambolle, Jacques Froment

Next: cfmdiffuse Up: Reference Previous: amss   Contents   Index
mw 2004-05-05