Fermat
Classes | Enumerations | Functions
FilteringModule

Detailed Description

This module defines a set of image-space filters useful for denoising.

Classes

struct  EAWParams
 
struct  XBLParams
 

Enumerations

enum  FilterOp {
  kFilterOpNone = 0x0u, kFilterOpModulateInput = 0x1u, kFilterOpDemodulateInput = 0x2u, kFilterOpModulateOutput = 0x4u,
  kFilterOpDemodulateOutput = 0x8u, kFilterOpAddMode = 0x10u, kFilterOpReplaceMode = 0x20u
}
 

Functions

void EAW (FBufferChannelView dst, const FBufferChannelView img, const GBufferView gb, const float *var, const EAWParams params, const uint32 step_size)
 
void EAW (FBufferChannelView dst, const FilterOp op, const FBufferChannelView w_img, const float w_min, const FBufferChannelView img, const GBufferView gb, const float *var, const EAWParams params, const uint32 step_size)
 
void EAW (const uint32 n_iterations, uint32 &in_buffer, FBufferChannelView pingpong[2], const GBufferView gb, const float *var, const EAWParams params)
 
void EAW (const uint32 n_iterations, FBufferChannelView dst, const FBufferChannelView img, const GBufferView gb, const float *var, const EAWParams params, FBufferChannelView pingpong[2])
 
void EAW (const uint32 n_iterations, FBufferChannelView dst, const FBufferChannelView w_img, const FBufferChannelView img, const GBufferView gb, const float *var, const EAWParams params, FBufferChannelView pingpong[2])
 
FERMAT_FORCEINLINE FERMAT_HOST_DEVICE cugar::Vector3f demodulate (const cugar::Vector3f f, const cugar::Vector3f c)
 
FERMAT_FORCEINLINE FERMAT_HOST_DEVICE cugar::Vector3f modulate (const cugar::Vector3f f, const cugar::Vector3f c)
 
FERMAT_FORCEINLINE FERMAT_HOST_DEVICE cugar::Vector4f modulate (const cugar::Vector4f f, const cugar::Vector4f c)
 
void XBL (FBufferChannelView dst, const FilterOp op, const FBufferChannelView w_img, const float w_min, const FBufferChannelView img, const GBufferView gb, const float *var, const XBLParams params, const uint32 filter_radius, const uint32 step_size, const TiledSequenceView sequence)
 

Function Documentation

◆ EAW() [1/5]

void EAW ( FBufferChannelView  dst,
const FBufferChannelView  img,
const GBufferView  gb,
const float *  var,
const EAWParams  params,
const uint32  step_size 
)

perform a step of Edge A-trous Wavelet filtering

◆ EAW() [2/5]

void EAW ( FBufferChannelView  dst,
const FilterOp  op,
const FBufferChannelView  w_img,
const float  w_min,
const FBufferChannelView  img,
const GBufferView  gb,
const float *  var,
const EAWParams  params,
const uint32  step_size 
)

perform a step of Edge A-trous Wavelet filtering, multiplying the result by a weight image and adding it to the output, i.e. solving:

dst += w_img * eaw(img)

◆ EAW() [3/5]

void EAW ( const uint32  n_iterations,
uint32 &  in_buffer,
FBufferChannelView  pingpong[2],
const GBufferView  gb,
const float *  var,
const EAWParams  params 
)

perform several iterations of Edge A-trous Wavelet filtering

◆ EAW() [4/5]

void EAW ( const uint32  n_iterations,
FBufferChannelView  dst,
const FBufferChannelView  img,
const GBufferView  gb,
const float *  var,
const EAWParams  params,
FBufferChannelView  pingpong[2] 
)

perform several iterations of Edge A-trous Wavelet filtering

◆ EAW() [5/5]

void EAW ( const uint32  n_iterations,
FBufferChannelView  dst,
const FBufferChannelView  w_img,
const FBufferChannelView  img,
const GBufferView  gb,
const float *  var,
const EAWParams  params,
FBufferChannelView  pingpong[2] 
)

perform several iterations of Edge A-trous Wavelet filtering

◆ XBL()

void XBL ( FBufferChannelView  dst,
const FilterOp  op,
const FBufferChannelView  w_img,
const float  w_min,
const FBufferChannelView  img,
const GBufferView  gb,
const float *  var,
const XBLParams  params,
const uint32  filter_radius,
const uint32  step_size,
const TiledSequenceView  sequence 
)

perform a step of Edge A-trous Wavelet filtering, multiplying the result by a weight image and adding it to the output, i.e. solving:

dst += w_img * eaw(img)