Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
diffuse.c File Reference
#include "common/extra_optimizations.h"
#include "bauhaus/bauhaus.h"
#include "common/bspline.h"
#include "common/darktable.h"
#include "common/dwt.h"
#include "common/gaussian.h"
#include "common/image.h"
#include "common/imagebuf.h"
#include "common/iop_profile.h"
#include "common/opencl.h"
#include "control/control.h"
#include "develop/develop.h"
#include "develop/imageop_gui.h"
#include "develop/imageop_math.h"
#include "develop/noise_generator.h"
#include "develop/openmp_maths.h"
#include "develop/tiling.h"
#include "dtgtk/button.h"
#include "dtgtk/drawingarea.h"
#include "dtgtk/expander.h"
#include "dtgtk/paint.h"
#include "gui/gtk.h"
#include "gui/presets.h"
#include "iop/iop_api.h"
+ Include dependency graph for diffuse.c:

Data Structures

struct  dt_iop_diffuse_params_t
 
struct  dt_iop_diffuse_gui_data_t
 
struct  dt_iop_diffuse_global_data_t
 

Macros

#define DEBUG_DUMP_PFM   0
 
#define MAX_NUM_SCALES   10
 
#define H   1
 
#define KAPPA   0.25f
 

Typedefs

typedef struct dt_iop_diffuse_params_t dt_iop_diffuse_params_t
 
typedef struct dt_iop_diffuse_gui_data_t dt_iop_diffuse_gui_data_t
 
typedef struct dt_iop_diffuse_global_data_t dt_iop_diffuse_global_data_t
 
typedef struct dt_iop_diffuse_params_t dt_iop_diffuse_data_t
 
typedef enum dt_isotropy_t dt_isotropy_t
 

Enumerations

enum  dt_isotropy_t {
  DT_ISOTROPY_ISOTROPE = 0 ,
  DT_ISOTROPY_ISOPHOTE = 1 ,
  DT_ISOTROPY_GRADIENT = 2
}
 

Functions

static dt_isotropy_t check_isotropy_mode (const float anisotropy)
 
const char * name ()
 
const char * aliases ()
 
const char ** description (struct dt_iop_module_t *self)
 
int default_group ()
 
int flags ()
 
int default_colorspace (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
int legacy_params (dt_iop_module_t *self, const void *const old_params, const int old_version, void *new_params, const int new_version)
 
void init_presets (dt_iop_module_so_t *self)
 
void tiling_callback (struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *roi_in, const dt_iop_roi_t *roi_out, struct dt_develop_tiling_t *tiling)
 
static void init_reconstruct (float *const restrict reconstructed, const size_t width, const size_t height)
 
static void find_gradients (const dt_aligned_pixel_t pixels[9], dt_aligned_pixel_t xy[2])
 
static void find_laplacians (const dt_aligned_pixel_t pixels[9], dt_aligned_pixel_t xy[2])
 
static void rotation_matrix_isophote (const dt_aligned_pixel_t c2, const dt_aligned_pixel_t cos_theta_sin_theta, const dt_aligned_pixel_t cos_theta2, const dt_aligned_pixel_t sin_theta2, dt_aligned_pixel_t a[2][2])
 
static void rotation_matrix_gradient (const dt_aligned_pixel_t c2, const dt_aligned_pixel_t cos_theta_sin_theta, const dt_aligned_pixel_t cos_theta2, const dt_aligned_pixel_t sin_theta2, dt_aligned_pixel_t a[2][2])
 
static void build_matrix (const dt_aligned_pixel_t a[2][2], dt_aligned_pixel_t kernel[9])
 
static void isotrope_laplacian (dt_aligned_pixel_t kernel[9])
 
static void compute_kernel (const dt_aligned_pixel_t c2, const dt_aligned_pixel_t cos_theta_sin_theta, const dt_aligned_pixel_t cos_theta2, const dt_aligned_pixel_t sin_theta2, const dt_isotropy_t isotropy_type, dt_aligned_pixel_t kernel[9])
 
static void heat_PDE_diffusion (const float *const restrict high_freq, const float *const restrict low_freq, const uint8_t *const restrict mask, const int has_mask, float *const restrict output, const size_t width, const size_t height, const dt_aligned_pixel_t anisotropy, const dt_isotropy_t isotropy_type[4], const float regularization, const float variance_threshold, const float current_radius_square, const int mult, const dt_aligned_pixel_t ABCD, const float strength)
 
static float compute_anisotropy_factor (const float user_param)
 
static gint wavelets_process (const float *const restrict in, float *const restrict reconstructed, const uint8_t *const restrict mask, const size_t width, const size_t height, const dt_iop_diffuse_data_t *const data, const float final_radius, const float zoom, const int scales, const int has_mask, float *const restrict HF[10], float *const restrict LF_odd, float *const restrict LF_even)
 
static void build_mask (const float *const restrict input, uint8_t *const restrict mask, const float threshold, const size_t width, const size_t height)
 
static void inpaint_mask (float *const restrict inpainted, const float *const restrict original, const uint8_t *const restrict mask, const size_t width, const size_t height)
 
void process (dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, const void *const restrict ivoid, void *const restrict ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
 
void gui_init (struct dt_iop_module_t *self)
 

Macro Definition Documentation

◆ DEBUG_DUMP_PFM

#define DEBUG_DUMP_PFM   0

◆ H

#define H   1

◆ KAPPA

#define KAPPA   0.25f

◆ MAX_NUM_SCALES

#define MAX_NUM_SCALES   10

Typedef Documentation

◆ dt_iop_diffuse_data_t

◆ dt_iop_diffuse_global_data_t

◆ dt_iop_diffuse_gui_data_t

◆ dt_iop_diffuse_params_t

◆ dt_isotropy_t

Enumeration Type Documentation

◆ dt_isotropy_t

Enumerator
DT_ISOTROPY_ISOTROPE 
DT_ISOTROPY_ISOPHOTE 
DT_ISOTROPY_GRADIENT 

Function Documentation

◆ aliases()

const char * aliases ( )

◆ build_mask()

static void build_mask ( const float *const restrict  input,
uint8_t *const restrict  mask,
const float  threshold,
const size_t  width,
const size_t  height 
)
inlinestatic

References height, and width.

Referenced by process().

◆ build_matrix()

static void build_matrix ( const dt_aligned_pixel_t  a[2][2],
dt_aligned_pixel_t  kernel[9] 
)
inlinestatic

References for_each_channel, and kernel().

Referenced by compute_kernel().

◆ check_isotropy_mode()

static dt_isotropy_t check_isotropy_mode ( const float  anisotropy)
inlinestatic

◆ compute_anisotropy_factor()

static float compute_anisotropy_factor ( const float  user_param)
inlinestatic

References sqf().

Referenced by wavelets_process().

◆ compute_kernel()

static void compute_kernel ( const dt_aligned_pixel_t  c2,
const dt_aligned_pixel_t  cos_theta_sin_theta,
const dt_aligned_pixel_t  cos_theta2,
const dt_aligned_pixel_t  sin_theta2,
const dt_isotropy_t  isotropy_type,
dt_aligned_pixel_t  kernel[9] 
)
inlinestatic

◆ default_colorspace()

int default_colorspace ( dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
dt_dev_pixelpipe_iop_t piece 
)

References IOP_CS_RGB.

◆ default_group()

int default_group ( )

References IOP_GROUP_SHARPNESS.

◆ description()

const char ** description ( struct dt_iop_module_t self)

◆ find_gradients()

static void find_gradients ( const dt_aligned_pixel_t  pixels[9],
dt_aligned_pixel_t  xy[2] 
)
inlinestatic

References for_each_channel.

Referenced by heat_PDE_diffusion().

◆ find_laplacians()

static void find_laplacians ( const dt_aligned_pixel_t  pixels[9],
dt_aligned_pixel_t  xy[2] 
)
inlinestatic

References for_each_channel.

◆ flags()

◆ gui_init()

◆ heat_PDE_diffusion()

static void heat_PDE_diffusion ( const float *const restrict  high_freq,
const float *const restrict  low_freq,
const uint8_t *const restrict  mask,
const int  has_mask,
float *const restrict  output,
const size_t  width,
const size_t  height,
const dt_aligned_pixel_t  anisotropy,
const dt_isotropy_t  isotropy_type[4],
const float  regularization,
const float  variance_threshold,
const float  current_radius_square,
const int  mult,
const dt_aligned_pixel_t  ABCD,
const float  strength 
)
inlinestatic

◆ init_presets()

◆ init_reconstruct()

static void init_reconstruct ( float *const restrict  reconstructed,
const size_t  width,
const size_t  height 
)
inlinestatic

References height, and width.

◆ inpaint_mask()

static void inpaint_mask ( float *const restrict  inpainted,
const float *const restrict  original,
const uint8_t *const restrict  mask,
const size_t  width,
const size_t  height 
)
inlinestatic

◆ isotrope_laplacian()

static void isotrope_laplacian ( dt_aligned_pixel_t  kernel[9])
inlinestatic

References for_each_channel, and kernel().

Referenced by compute_kernel().

◆ legacy_params()

int legacy_params ( dt_iop_module_t self,
const void *const  old_params,
const int  old_version,
void new_params,
const int  new_version 
)

◆ name()

const char * name ( )

Referenced by wavelets_process().

◆ process()

◆ rotation_matrix_gradient()

static void rotation_matrix_gradient ( const dt_aligned_pixel_t  c2,
const dt_aligned_pixel_t  cos_theta_sin_theta,
const dt_aligned_pixel_t  cos_theta2,
const dt_aligned_pixel_t  sin_theta2,
dt_aligned_pixel_t  a[2][2] 
)
inlinestatic

References c2, and for_each_channel.

Referenced by compute_kernel().

◆ rotation_matrix_isophote()

static void rotation_matrix_isophote ( const dt_aligned_pixel_t  c2,
const dt_aligned_pixel_t  cos_theta_sin_theta,
const dt_aligned_pixel_t  cos_theta2,
const dt_aligned_pixel_t  sin_theta2,
dt_aligned_pixel_t  a[2][2] 
)
inlinestatic

References c2, and for_each_channel.

Referenced by compute_kernel().

◆ tiling_callback()

◆ wavelets_process()

static gint wavelets_process ( const float *const restrict  in,
float *const restrict  reconstructed,
const uint8_t *const restrict  mask,
const size_t  width,
const size_t  height,
const dt_iop_diffuse_data_t *const  data,
const float  final_radius,
const float  zoom,
const int  scales,
const int  has_mask,
float *const restrict  HF[10],
float *const restrict  LF_odd,
float *const restrict  LF_even 
)
inlinestatic