Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
knee.c File Reference
#include "common/darktable.h"
#include "common/solvers/sparse_cholesky_cl.h"
#include "develop/imageop.h"
#include "develop/imageop_math.h"
#include "iop/highlights/knee.h"
#include <math.h>
#include <stdlib.h>
+ Include dependency graph for knee.c:

Go to the source code of this file.

Functions

static float _knee_lift_of (const _hl_knee_curve_t *const k, const float x)
 
static __DT_CLONE_TARGETS__ void _knee_blur4 (const float *const planes[4], float *const outs[4], const int n_planes, const int region_w, const int region_h, const float sigma, float *const restrict pack_in, float *const restrict pack_out)
 
static int _knee_cmp_float (const void *ptr_a, const void *ptr_b)
 
static float _knee_median (float *const values, const size_t count)
 
static int _knee_p2 (const int chan_a, const int chan_b)
 
__DT_CLONE_TARGETS__ void _hl_knee_estimate (const float *const restrict input, const size_t width, const size_t height, const uint32_t filters, const dt_iop_roi_t *const roi_in, const uint8_t(*const xtrans)[6], const dt_aligned_pixel_t clipval_raw, _hl_knee_curve_t curves[3], const dt_dev_pixelpipe_t *pipe)
 
__DT_CLONE_TARGETS__ void _hl_knee_apply_interpolated (float *const restrict interpolated, const size_t npix, const dt_aligned_pixel_t clipvaln, const dt_aligned_pixel_t wb4, const _hl_knee_curve_t curves[3])
 
__DT_CLONE_TARGETS__ void _hl_knee_apply_cfa (const float *const restrict input, float *const restrict input_corr, const size_t width, const size_t height, const uint32_t filters, const dt_iop_roi_t *const roi_in, const uint8_t(*const xtrans)[6], const dt_aligned_pixel_t clipval_raw, const _hl_knee_curve_t curves[3])
 
cl_int _hl_knee_estimate_cl (const int devid, void *gd_void, cl_mem dev_in, const size_t width, const size_t height, const uint32_t filters, const dt_iop_roi_t *const roi_in, cl_mem dev_xtrans, const int is_xtrans, const dt_aligned_pixel_t clipval_raw, _hl_knee_curve_t curves[3], const dt_dev_pixelpipe_t *pipe)
 
cl_int _hl_knee_apply_cfa_cl (const int devid, void *gd_void, cl_mem dev_in, cl_mem dev_out, const size_t width, const size_t height, const uint32_t filters, const dt_iop_roi_t *const roi_in, cl_mem dev_xtrans, const int is_xtrans, const dt_aligned_pixel_t clipval_raw, const _hl_knee_curve_t curves[3])
 

Function Documentation

◆ _hl_knee_apply_cfa()

__DT_CLONE_TARGETS__ void _hl_knee_apply_cfa ( const float *const restrict  input,
float *const restrict  input_corr,
const size_t  width,
const size_t  height,
const uint32_t  filters,
const dt_iop_roi_t *const  roi_in,
const uint8_t(*)  xtrans[6],
const dt_aligned_pixel_t  clipval_raw,
const _hl_knee_curve_t  curves[3] 
)

◆ _hl_knee_apply_cfa_cl()

cl_int _hl_knee_apply_cfa_cl ( const int  devid,
void gd_void,
cl_mem  dev_in,
cl_mem  dev_out,
const size_t  width,
const size_t  height,
const uint32_t  filters,
const dt_iop_roi_t *const  roi_in,
cl_mem  dev_xtrans,
const int  is_xtrans,
const dt_aligned_pixel_t  clipval_raw,
const _hl_knee_curve_t  curves[3] 
)

◆ _hl_knee_apply_interpolated()

__DT_CLONE_TARGETS__ void _hl_knee_apply_interpolated ( float *const restrict  interpolated,
const size_t  npix,
const dt_aligned_pixel_t  clipvaln,
const dt_aligned_pixel_t  wb4,
const _hl_knee_curve_t  curves[3] 
)

◆ _hl_knee_estimate()

__DT_CLONE_TARGETS__ void _hl_knee_estimate ( const float *const restrict  input,
const size_t  width,
const size_t  height,
const uint32_t  filters,
const dt_iop_roi_t *const  roi_in,
const uint8_t(*)  xtrans[6],
const dt_aligned_pixel_t  clipval_raw,
_hl_knee_curve_t  curves[3],
const dt_dev_pixelpipe_t pipe 
)

◆ _hl_knee_estimate_cl()

◆ _knee_blur4()

static __DT_CLONE_TARGETS__ void _knee_blur4 ( const float *const  planes[4],
float *const  outs[4],
const int  n_planes,
const int  region_w,
const int  region_h,
const float  sigma,
float *const restrict  pack_in,
float *const restrict  pack_out 
)
static

Definition at line 53 of file knee.c.

References _hl_gauss_get(), dt_gaussian_blur_4c(), gaussian(), HL_PFOR, i, k, and sigma.

Referenced by _hl_knee_estimate().

◆ _knee_cmp_float()

static int _knee_cmp_float ( const void ptr_a,
const void ptr_b 
)
static

Definition at line 79 of file knee.c.

Referenced by _knee_median().

◆ _knee_lift_of()

static float _knee_lift_of ( const _hl_knee_curve_t *const  k,
const float  x 
)
inlinestatic

Definition at line 30 of file knee.c.

References DT_HL_KNEE_BINS, DT_HL_KNEE_DET, DT_HL_KNEE_LO, i, k, and x.

Referenced by _hl_knee_apply_cfa(), and _hl_knee_apply_interpolated().

◆ _knee_median()

static float _knee_median ( float *const  values,
const size_t  count 
)
static

Definition at line 88 of file knee.c.

References _knee_cmp_float().

Referenced by _hl_knee_estimate(), and _hl_knee_estimate_cl().

◆ _knee_p2()

static int _knee_p2 ( const int  chan_a,
const int  chan_b 
)
inlinestatic

Definition at line 98 of file knee.c.

Referenced by _hl_knee_estimate().