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

RDistanceLodHeatFlowOp Class Reference

#include <RDistanceLodHeatFlowOp.hpp>

Inheritance diagram for RDistanceLodHeatFlowOp:

Inheritance graph
[legend]
Collaboration diagram for RDistanceLodHeatFlowOp:

Collaboration graph
[legend]
List of all members.

Detailed Description

Float Heat recursive flow.

Author:
Bernard De Cuyper
Version:
0.05
Date:
1/07/2002
 
Purpose:        Recursieve heat flow have a nice property. The time step is directly related to the sigma of
                the gaussian blurring: t= sigma^2/2.

                Recursieve Heat flow/blurring is very fast but it destroy edges. This can be avoided by predicting
                edges before and ensure edges are maintained. 

                This could be obtained from a modulation of the time step.
                dcritical(edges)= sigma(95%)= 2*sigma
                t(critical heat flow)= (dcritical/2)^2= dcritical^2/8

                A distance map can determine edge distances. 
                
                Fast Computation of Heat recursive flow.
                        Thomas LU model.

                        Semi-Implicit solver using LOD multiplicative splitting
            (I - tau * A) * uNew=  uOld

                        LOD is ok, in isotropic situations

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

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


Public Methods

 RDistanceLodHeatFlowOp (RImage *edgeDistance=0, int iterations=1, double t0=0.0, double tMax=20.0)
 Can be used as alternative of IIR for large sigma blurring when t=(sigma*sigma)/2.

virtual ~RDistanceLodHeatFlowOp ()
void setEdgeDistance (RImage *distanceMap)
virtual RImagefilter (RImage *src, RImage *dest=0)
 Local full image filtering.

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

virtual void report (FILE *file)

Protected Methods

virtual double getTau (int x, int y)

Protected Attributes

int w
int h
int iterMax
double tmin
double tmax
ThomasLShThomasLS
ThomasLSvThomasLS
RImagedistanceMapEdges


Member Function Documentation

RImage * RDistanceLodHeatFlowOp::filter RImage   src,
RImage   dest = 0
[virtual]
 

Local full image filtering.

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

Implements AbsRImageFilter.

RImage * RDistanceLodHeatFlowOp::selectedFilter AnImage   mask,
RImage   src,
RImage   dest = 0
[virtual]
 

Local filtering in a mask area.

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

Reimplemented from AbsRImageFilter.


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