Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   Related Pages  

F2DAdiHeatFlowOp Class Reference

#include <F2DAdiHeatFlowOp.hpp>

Inheritance diagram for F2DAdiHeatFlowOp:

Inheritance graph
[legend]
Collaboration diagram for F2DAdiHeatFlowOp:

Collaboration graph
[legend]
List of all members.

Detailed Description

Float 2D Heat recursive flow.

Author:
Bernard De Cuyper
Version:
1.15
Date:
1/07/2004
 
Purpose:        Fast Computation of 2D Heat recursive flow.

                Splitted implicit solver using tridiagonals solvers when possible
            (I - tau/2 * Ax) * u$=  [(I + tau/2 * Ay)] * uOld           // X-sweep
            (I - tau/2 * Ay) * u=  [(I + tau/2 * Ax)] * u$                      // Y-sweep

Papers:         "Recursivity and PDE's in image processing", 
                        L. Alvarez, R. Deriche and F Santana, Spain 1998.

Papers:         "Recursivity and PDE's in image processing", 
                        L. Alvarez, R. Deriche and F Santana, Spain 1998.

                        "Numerical Receipes in C: Diffusion Equation in Multidimensions.",  p666,
                        William H. Press & all, Cambridge University Press, 1988.

                        "Numerical Receipes in C: 17.6, Operator Splitting Methods and ADI.",  p681-688,
                        William H. Press & all, Cambridge University Press, 1988.

Note:           The Numerical Receipes exhibits a fast classic DPR-ADI O(N), starting with a half explicit single iteration.
                This ADI may be sensitive to CFL condition on its right part. I found experimentally a blow out a sigma>=8.

                Solutions: 1)iterating more a smaller time step on RHS. (Can be O(N^2))
                             2)approximate the first RHS, with a previous unconditional stable LHS! Keep O(N)
                

@ Copyrights: Bernard De Cuyper 2004, Eggs & Pictures. MIT/Open BSD copyright model.


Public Methods

 F2DAdiHeatFlowOp (int typeSolver, bool implicit=false, int iter=1, int innerIter=8, float t=0.5, float eps=1.0e-4)
 Can be used as alternative of IIR for large sigma blurring when t=(sigma*sigma)/2.

virtual ~F2DAdiHeatFlowOp ()
virtual FImagefilter (FImage *src, FImage *dest=0)
 Local full image filtering.

virtual FImageselectedFilter (AnImage *mask, FImage *src, FImage *dest=0)
 Local filtering in a mask area.

virtual void report (FILE *file)

Protected Attributes

int iterMax
int innerIterMax
float tau
float epsilon
bool implicitFlag
AbsFLinearSolverlinearSolver


Member Function Documentation

FImage * F2DAdiHeatFlowOp::filter FImage   src,
FImage   dest = 0
[virtual]
 

Local full image filtering.

Parameters:
src  is FImage* is FImage source channel
dest  is FImage* is FImage result/placeholder
Returns :
FImage* as result,

Implements AbsFImageFilter.

Reimplemented in F2DAdiII_HeatFlowOp, F2DAmosHeatFlowOp, F2DCflAdiHeatFlowOp, F2DFastDprAdiHeatFlowOp, F2DFastDprCflAdiHeatFlowOp, and F2DSymAdiHeatFlowOp.

virtual FImage* F2DAdiHeatFlowOp::selectedFilter AnImage   mask,
FImage   src,
FImage   dest = 0
[inline, virtual]
 

Local filtering in a mask area.

Parameters:
mask  is AnImage* is a ByteImage
src  is FImage* is FImage source channel
dest  is FImage* is FImage result/placeholder
Returns :
FImage* as result,

Reimplemented from AbsFImageFilter.


The documentation for this class was generated from the following files:
SourceForge.net Logo
Restoreinpaint sourceforge project `C++/Java Image Processing, Restoration, Inpainting Project'.

Bernard De Cuyper: Open Project Leader: Concept, design and development.
Bernard De Cuyper & Eddy Fraiha 2002, 2003. Bernard De Cuyper 2004. Open and free, for friendly usage only.
Modifications on Belgium ground of this piece of artistic work, by governement institutions or companies, must be notified to Bernard De Cuyper.
bern_bdc@hotmail.com