Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
guided_filter.c File Reference
#include "common/darktable.h"
#include "common/box_filters.h"
#include "common/guided_filter.h"
#include "common/math.h"
#include "common/opencl.h"
#include <assert.h>
#include <float.h>
#include <stdlib.h>
#include <string.h>
+ Include dependency graph for guided_filter.c:

Data Structures

struct  tile
 
struct  color_image
 

Macros

#define GF_TILE_SIZE   512
 
#define SIMD_FOR   for
 
#define _mm_prefetch(where, hint)
 
#define INP_MEAN   0
 
#define GUIDE_MEAN_R   1
 
#define GUIDE_MEAN_G   2
 
#define GUIDE_MEAN_B   3
 
#define COV_R   0
 
#define COV_G   1
 
#define COV_B   2
 
#define VAR_RR   3
 
#define VAR_RG   4
 
#define VAR_RB   5
 
#define VAR_GG   6
 
#define VAR_BB   8
 
#define VAR_GB   7
 
#define A_RED   0
 
#define A_GREEN   1
 
#define A_BLUE   2
 
#define B   3
 

Typedefs

typedef struct tile tile
 
typedef struct color_image color_image
 

Functions

static __attribute__ ((always_inline))
 
static float * get_color_pixel (color_image img, size_t i)
 
static __DT_CLONE_TARGETS__ int guided_filter_tiling (color_image imgg, gray_image img, gray_image img_out, tile target, const int w, const float eps, const float guide_weight, const float min, const float max)
 
__DT_CLONE_TARGETS__ int guided_filter (const float *const guide, const float *const in, float *const out, const int width, const int height, const int ch, const int w, const float sqrt_eps, const float guide_weight, const float min, const float max)
 
dt_guided_filter_cl_global_tdt_guided_filter_init_cl_global ()
 
void dt_guided_filter_free_cl_global (dt_guided_filter_cl_global_t *g)
 
static int cl_split_rgb (const int devid, const int width, const int height, cl_mem guide, cl_mem imgg_r, cl_mem imgg_g, cl_mem imgg_b, const float guide_weight)
 
static int cl_box_mean (const int devid, const int width, const int height, const int w, cl_mem in, cl_mem out, cl_mem temp)
 
static int cl_covariances (const int devid, const int width, const int height, cl_mem guide, cl_mem in, cl_mem cov_imgg_img_r, cl_mem cov_imgg_img_g, cl_mem cov_imgg_img_b, const float guide_weight)
 
static int cl_variances (const int devid, const int width, const int height, cl_mem guide, cl_mem var_imgg_rr, cl_mem var_imgg_rg, cl_mem var_imgg_rb, cl_mem var_imgg_gg, cl_mem var_imgg_gb, cl_mem var_imgg_bb, const float guide_weight)
 
static int cl_update_covariance (const int devid, const int width, const int height, cl_mem in, cl_mem out, cl_mem a, cl_mem b, float eps)
 
static int cl_solve (const int devid, const int width, const int height, cl_mem img_mean, cl_mem imgg_mean_r, cl_mem imgg_mean_g, cl_mem imgg_mean_b, cl_mem cov_imgg_img_r, cl_mem cov_imgg_img_g, cl_mem cov_imgg_img_b, cl_mem var_imgg_rr, cl_mem var_imgg_rg, cl_mem var_imgg_rb, cl_mem var_imgg_gg, cl_mem var_imgg_gb, cl_mem var_imgg_bb, cl_mem a_r, cl_mem a_g, cl_mem a_b, cl_mem b)
 
static int cl_generate_result (const int devid, const int width, const int height, cl_mem guide, cl_mem a_r, cl_mem a_g, cl_mem a_b, cl_mem b, cl_mem out, const float guide_weight, const float min, const float max)
 
static int guided_filter_cl_impl (int devid, cl_mem guide, cl_mem in, cl_mem out, const int width, const int height, const int ch, const int w, const float sqrt_eps, const float guide_weight, const float min, const float max)
 
static int guided_filter_cl_fallback (int devid, cl_mem guide, cl_mem in, cl_mem out, const int width, const int height, const int ch, const int w, const float sqrt_eps, const float guide_weight, const float min, const float max)
 
int guided_filter_cl (int devid, cl_mem guide, cl_mem in, cl_mem out, const int width, const int height, const int ch, const int w, const float sqrt_eps, const float guide_weight, const float min, const float max)
 

Macro Definition Documentation

◆ _mm_prefetch

#define _mm_prefetch (   where,
  hint 
)

◆ A_BLUE

#define A_BLUE   2

◆ A_GREEN

#define A_GREEN   1

◆ A_RED

#define A_RED   0

◆ B

#define B   3

◆ COV_B

#define COV_B   2

◆ COV_G

#define COV_G   1

◆ COV_R

#define COV_R   0

◆ GF_TILE_SIZE

#define GF_TILE_SIZE   512

◆ GUIDE_MEAN_B

#define GUIDE_MEAN_B   3

◆ GUIDE_MEAN_G

#define GUIDE_MEAN_G   2

◆ GUIDE_MEAN_R

#define GUIDE_MEAN_R   1

◆ INP_MEAN

#define INP_MEAN   0

◆ SIMD_FOR

#define SIMD_FOR   for

◆ VAR_BB

#define VAR_BB   8

◆ VAR_GB

#define VAR_GB   7

◆ VAR_GG

#define VAR_GG   6

◆ VAR_RB

#define VAR_RB   5

◆ VAR_RG

#define VAR_RG   4

◆ VAR_RR

#define VAR_RR   3

Typedef Documentation

◆ color_image

typedef struct color_image color_image

◆ tile

typedef struct tile tile

Function Documentation

◆ __attribute__()

◆ cl_box_mean()

static int cl_box_mean ( const int  devid,
const int  width,
const int  height,
const int  w,
cl_mem  in,
cl_mem  out,
cl_mem  temp 
)
static

◆ cl_covariances()

static int cl_covariances ( const int  devid,
const int  width,
const int  height,
cl_mem  guide,
cl_mem  in,
cl_mem  cov_imgg_img_r,
cl_mem  cov_imgg_img_g,
cl_mem  cov_imgg_img_b,
const float  guide_weight 
)
static

◆ cl_generate_result()

static int cl_generate_result ( const int  devid,
const int  width,
const int  height,
cl_mem  guide,
cl_mem  a_r,
cl_mem  a_g,
cl_mem  a_b,
cl_mem  b,
cl_mem  out,
const float  guide_weight,
const float  min,
const float  max 
)
static

◆ cl_solve()

static int cl_solve ( const int  devid,
const int  width,
const int  height,
cl_mem  img_mean,
cl_mem  imgg_mean_r,
cl_mem  imgg_mean_g,
cl_mem  imgg_mean_b,
cl_mem  cov_imgg_img_r,
cl_mem  cov_imgg_img_g,
cl_mem  cov_imgg_img_b,
cl_mem  var_imgg_rr,
cl_mem  var_imgg_rg,
cl_mem  var_imgg_rb,
cl_mem  var_imgg_gg,
cl_mem  var_imgg_gb,
cl_mem  var_imgg_bb,
cl_mem  a_r,
cl_mem  a_g,
cl_mem  a_b,
cl_mem  b 
)
static

◆ cl_split_rgb()

static int cl_split_rgb ( const int  devid,
const int  width,
const int  height,
cl_mem  guide,
cl_mem  imgg_r,
cl_mem  imgg_g,
cl_mem  imgg_b,
const float  guide_weight 
)
static

◆ cl_update_covariance()

static int cl_update_covariance ( const int  devid,
const int  width,
const int  height,
cl_mem  in,
cl_mem  out,
cl_mem  a,
cl_mem  b,
float  eps 
)
static

◆ cl_variances()

static int cl_variances ( const int  devid,
const int  width,
const int  height,
cl_mem  guide,
cl_mem  var_imgg_rr,
cl_mem  var_imgg_rg,
cl_mem  var_imgg_rb,
cl_mem  var_imgg_gg,
cl_mem  var_imgg_gb,
cl_mem  var_imgg_bb,
const float  guide_weight 
)
static

◆ dt_guided_filter_free_cl_global()

void dt_guided_filter_free_cl_global ( dt_guided_filter_cl_global_t g)

◆ dt_guided_filter_init_cl_global()

dt_guided_filter_cl_global_t * dt_guided_filter_init_cl_global ( )

References dt_opencl_create_kernel(), and g.

Referenced by dt_opencl_init().

◆ get_color_pixel()

static float * get_color_pixel ( color_image  img,
size_t  i 
)
inlinestatic

◆ guided_filter()

__DT_CLONE_TARGETS__ int guided_filter ( const float *const  guide,
const float *const  in,
float *const  out,
const int  width,
const int  height,
const int  ch,
const int  w,
const float  sqrt_eps,
const float  guide_weight,
const float  min,
const float  max 
)

◆ guided_filter_cl()

int guided_filter_cl ( int  devid,
cl_mem  guide,
cl_mem  in,
cl_mem  out,
const int  width,
const int  height,
const int  ch,
const int  w,
const float  sqrt_eps,
const float  guide_weight,
const float  min,
const float  max 
)

◆ guided_filter_cl_fallback()

static int guided_filter_cl_fallback ( int  devid,
cl_mem  guide,
cl_mem  in,
cl_mem  out,
const int  width,
const int  height,
const int  ch,
const int  w,
const float  sqrt_eps,
const float  guide_weight,
const float  min,
const float  max 
)
static

◆ guided_filter_cl_impl()

static int guided_filter_cl_impl ( int  devid,
cl_mem  guide,
cl_mem  in,
cl_mem  out,
const int  width,
const int  height,
const int  ch,
const int  w,
const float  sqrt_eps,
const float  guide_weight,
const float  min,
const float  max 
)
static

◆ guided_filter_tiling()