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

F2DLodHeatFlowOp Class Reference

#include <F2DLodHeatFlowOp.hpp>

Inheritance diagram for F2DLodHeatFlowOp:

Inheritance graph
[legend]
Collaboration diagram for F2DLodHeatFlowOp:

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

 F2DLodHeatFlowOp (int typeSolver, 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 ~F2DLodHeatFlowOp ()
virtual FImage * filter (FImage *src, FImage *dest=0)
 Local full image filtering.

virtual FImage * selectedFilter (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
AbsFLinearSolver * linearSolver


Member Function Documentation

FImage * F2DLodHeatFlowOp::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.

virtual FImage* F2DLodHeatFlowOp::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