Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
gather.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2010 Bruce Guenter.
4 Copyright (C) 2010-2011 Henrik Andersson.
5 Copyright (C) 2010-2014, 2016 johannes hanika.
6 Copyright (C) 2010 Stuart Henderson.
7 Copyright (C) 2011 Antony Dovgal.
8 Copyright (C) 2011 Robert Bieber.
9 Copyright (C) 2011-2014, 2016, 2019 Tobias Ellinghaus.
10 Copyright (C) 2011-2012, 2014, 2016-2017 Ulrich Pegelow.
11 Copyright (C) 2012, 2015 Edouard Gomez.
12 Copyright (C) 2012 Jérémy Rosen.
13 Copyright (C) 2012 Richard Wonka.
14 Copyright (C) 2013, 2020 Aldric Renaudin.
15 Copyright (C) 2014, 2016 Dan Torop.
16 Copyright (C) 2014-2016 Roman Lebedev.
17 Copyright (C) 2015-2016 Pedro Côrte-Real.
18 Copyright (C) 2017 Heiko Bauke.
19 Copyright (C) 2017 luzpaz.
20 Copyright (C) 2018, 2020-2026 Aurélien PIERRE.
21 Copyright (C) 2018 Edgardo Hoszowski.
22 Copyright (C) 2018 Maurizio Paglia.
23 Copyright (C) 2018-2020, 2022 Pascal Obry.
24 Copyright (C) 2018 rawfiner.
25 Copyright (C) 2019 Andreas Schneider.
26 Copyright (C) 2019 Diederik ter Rahe.
27 Copyright (C) 2019-2020, 2022 Hanno Schwalm.
28 Copyright (C) 2020 Chris Elston.
29 Copyright (C) 2020, 2022 Diederik Ter Rahe.
30 Copyright (C) 2020-2021 Ralf Brown.
31 Copyright (C) 2021 Hubert Kowalski.
32 Copyright (C) 2022 Martin Bařinka.
33 Copyright (C) 2022 Philipp Lutz.
34 Copyright (C) 2022 Victor Forsiuk.
35 Copyright (C) 2023 Alynx Zhou.
36 Copyright (C) 2023 Guillaume Stutin.
37 Copyright (C) 2023 Luca Zulberti.
38
39 darktable is free software: you can redistribute it and/or modify
40 it under the terms of the GNU General Public License as published by
41 the Free Software Foundation, either version 3 of the License, or
42 (at your option) any later version.
43
44 darktable is distributed in the hope that it will be useful,
45 but WITHOUT ANY WARRANTY; without even the implied warranty of
46 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47 GNU General Public License for more details.
48
49 You should have received a copy of the GNU General Public License
50 along with darktable. If not, see <http://www.gnu.org/licenses/>.
51 */
52
53#pragma once
54
55// Shared CFA gather/remosaic helpers (bilinear interpolation + clip masks, laplacian
56// normalization channel, remosaic to CFA). Public API of the gather TU; see gather.c.
57
58#include "develop/imageop.h"
60#include <stdint.h>
61
62void _interpolate_and_mask(const float *const restrict input, float *const restrict interpolated,
63 float *const restrict clipping_mask, const dt_aligned_pixel_t clips_in,
64 const dt_aligned_pixel_t det_scale, const dt_aligned_pixel_t white_balance,
65 const uint32_t filters, const size_t width, const size_t height);
66
74void _compute_laplacian_normalization(const float *const restrict input, const dt_iop_roi_t *const roi_in,
75 const uint32_t filters, const uint8_t (*const xtrans)[6],
76 dt_aligned_pixel_t normalization);
77
84void _build_xtrans_bilinear_lookup(int32_t lookup[6][6][32], const dt_iop_roi_t *const roi_in,
85 const uint8_t (*const xtrans)[6]);
86
93void _interpolate_and_mask_xtrans(const float *const restrict input, float *const restrict interpolated,
94 float *const restrict clipping_mask, const dt_aligned_pixel_t clips,
95 const dt_aligned_pixel_t white_balance, const dt_iop_roi_t *const roi_in,
96 const int32_t lookup[6][6][32], const uint8_t (*const xtrans)[6],
97 const size_t width, const size_t height);
98
99void _remosaic_and_replace(const float *const restrict input, const float *const restrict input_raw,
100 const float *const restrict interpolated, const float *const restrict clipping_mask,
101 float *const restrict output, const dt_aligned_pixel_t white_balance,
102 const dt_aligned_pixel_t clips, const int clip_is_floor, const uint32_t filters,
103 const size_t width, const size_t height);
104
106void _remosaic_and_replace_xtrans(const float *const restrict input, const float *const restrict input_raw,
107 const float *const restrict interpolated,
108 const float *const restrict clipping_mask, float *const restrict output,
109 const dt_aligned_pixel_t white_balance, const dt_aligned_pixel_t clips,
110 const int clip_is_floor, const dt_iop_roi_t *const roi_in,
111 const uint8_t (*const xtrans)[6], const size_t width, const size_t height);
int width
Definition bilateral.h:1
int height
Definition bilateral.h:1
static float lookup(read_only image2d_t lut, const float x)
void _build_xtrans_bilinear_lookup(int32_t lookup[6][6][32], const dt_iop_roi_t *const roi_in, const uint8_t(*const xtrans)[6])
Definition gather.c:258
void _interpolate_and_mask_xtrans(const float *const restrict input, float *const restrict interpolated, float *const restrict clipping_mask, const dt_aligned_pixel_t clips, const dt_aligned_pixel_t white_balance, const dt_iop_roi_t *const roi_in, const int32_t lookup[6][6][32], const uint8_t(*const xtrans)[6], const size_t width, const size_t height)
Definition gather.c:298
void _compute_laplacian_normalization(const float *const restrict input, const dt_iop_roi_t *const roi_in, const uint32_t filters, const uint8_t(*const xtrans)[6], dt_aligned_pixel_t normalization)
Definition gather.c:222
void _remosaic_and_replace(const float *const restrict input, const float *const restrict input_raw, const float *const restrict interpolated, const float *const restrict clipping_mask, float *const restrict output, const dt_aligned_pixel_t white_balance, const dt_aligned_pixel_t clips, const int clip_is_floor, const uint32_t filters, const size_t width, const size_t height)
Definition gather.c:405
void _remosaic_and_replace_xtrans(const float *const restrict input, const float *const restrict input_raw, const float *const restrict interpolated, const float *const restrict clipping_mask, float *const restrict output, const dt_aligned_pixel_t white_balance, const dt_aligned_pixel_t clips, const int clip_is_floor, const dt_iop_roi_t *const roi_in, const uint8_t(*const xtrans)[6], const size_t width, const size_t height)
Definition gather.c:436
void _interpolate_and_mask(const float *const restrict input, float *const restrict interpolated, float *const restrict clipping_mask, const dt_aligned_pixel_t clips_in, const dt_aligned_pixel_t det_scale, const dt_aligned_pixel_t white_balance, const uint32_t filters, const size_t width, const size_t height)
Definition gather.c:66
float dt_aligned_pixel_t[4]
Region of interest passed through the pixelpipe.
Definition imageop.h:72