CR2RE Pipeline Reference Manual 1.6.7
hdrl_collapse.h
1/* $Id: hdrl_collapse.h,v 1.11 2013-10-17 15:44:14 jtaylor Exp $
2 *
3 * This file is part of the HDRL
4 * Copyright (C) 2013 European Southern Observatory
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21/*
22 * $Author: jtaylor $
23 * $Date: 2013-10-17 15:44:14 $
24 * $Revision: 1.11 $
25 * $Name: not supported by cvs2svn $
26 */
27
28#ifndef HDRL_COLLAPSE_H
29#define HDRL_COLLAPSE_H
30
31/*-----------------------------------------------------------------------------
32 Includes
33 -----------------------------------------------------------------------------*/
34
35#include "hdrl_parameter.h"
36#include "hdrl_mode.h"
37
38#include <cpl.h>
39
40CPL_BEGIN_DECLS
41
42/*-----------------------------------------------------------------------------
43 Define
44 -----------------------------------------------------------------------------*/
45
46/*-----------------------------------------------------------------------------
47 Functions prototypes
48 -----------------------------------------------------------------------------*/
49
50hdrl_parameter * hdrl_collapse_mean_parameter_create(void);
51cpl_boolean hdrl_collapse_parameter_is_mean(const hdrl_parameter *);
52extern hdrl_parameter * HDRL_COLLAPSE_MEAN;
53hdrl_parameter * hdrl_collapse_median_parameter_create(void);
54cpl_boolean hdrl_collapse_parameter_is_median(const hdrl_parameter *);
55extern hdrl_parameter * HDRL_COLLAPSE_MEDIAN;
57cpl_boolean hdrl_collapse_parameter_is_weighted_mean(const hdrl_parameter *);
58extern hdrl_parameter * HDRL_COLLAPSE_WEIGHTED_MEAN;
59hdrl_parameter * hdrl_collapse_sigclip_parameter_create(double, double, int);
60cpl_boolean hdrl_collapse_parameter_is_sigclip(const hdrl_parameter *);
61double hdrl_collapse_sigclip_parameter_get_kappa_high(const hdrl_parameter *);
62double hdrl_collapse_sigclip_parameter_get_kappa_low(const hdrl_parameter *);
63int hdrl_collapse_sigclip_parameter_get_niter(const hdrl_parameter *);
64
65hdrl_parameter * hdrl_collapse_minmax_parameter_create(double, double);
66cpl_boolean hdrl_collapse_parameter_is_minmax(const hdrl_parameter *);
67double hdrl_collapse_minmax_parameter_get_nhigh(const hdrl_parameter *);
68double hdrl_collapse_minmax_parameter_get_nlow(const hdrl_parameter *);
69
70hdrl_parameter * hdrl_collapse_mode_parameter_create(double, double, double,
71 hdrl_mode_type, cpl_size);
72cpl_boolean hdrl_collapse_parameter_is_mode(const hdrl_parameter *);
73double hdrl_collapse_mode_parameter_get_histo_min(const hdrl_parameter *);
74double hdrl_collapse_mode_parameter_get_histo_max(const hdrl_parameter *);
75double hdrl_collapse_mode_parameter_get_bin_size(const hdrl_parameter *);
76hdrl_mode_type hdrl_collapse_mode_parameter_get_method(const hdrl_parameter *);
77cpl_size hdrl_collapse_mode_parameter_get_error_niter(const hdrl_parameter *);
78
80 const cpl_parameterlist *, const char *);
81cpl_parameterlist * hdrl_collapse_parameter_create_parlist(const char *,
82 const char *, const char *, hdrl_parameter *, hdrl_parameter *,
83 hdrl_parameter *) ;
84
85/*-----------------------------------------------------------------------------
86 Private declarations - must not be used outside of hdrl
87 -----------------------------------------------------------------------------*/
88
89#ifdef HDRL_USE_PRIVATE
90cpl_error_code hdrl_collapse_mode_parameter_verify(const hdrl_parameter *);
91cpl_error_code hdrl_collapse_minmax_parameter_verify(const hdrl_parameter *);
92cpl_error_code hdrl_collapse_sigclip_parameter_verify(const hdrl_parameter *);
93
94typedef struct hdrl_collapse_imagelist_to_image_s
95 hdrl_collapse_imagelist_to_image_t;
96typedef struct hdrl_collapse_imagelist_to_vector_s
97 hdrl_collapse_imagelist_to_vector_t;
98
99typedef struct {
100 cpl_image * reject_low;
101 cpl_image * reject_high;
102} hdrl_sigclip_image_output;
103typedef hdrl_sigclip_image_output hdrl_minmax_image_output;
104
105typedef struct {
106 cpl_vector * reject_low;
107 cpl_vector * reject_high;
108} hdrl_sigclip_vector_output;
109typedef hdrl_sigclip_vector_output hdrl_minmax_vector_output;
110
111hdrl_collapse_imagelist_to_image_t *
112 hdrl_collapse_imagelist_to_image_mean(void);
113hdrl_collapse_imagelist_to_image_t *
114 hdrl_collapse_imagelist_to_image_weighted_mean(void);
115hdrl_collapse_imagelist_to_image_t *
116 hdrl_collapse_imagelist_to_image_median(void);
117hdrl_collapse_imagelist_to_image_t *
118 hdrl_collapse_imagelist_to_image_sigclip(double, double, int);
119hdrl_collapse_imagelist_to_image_t *
120 hdrl_collapse_imagelist_to_image_minmax(double, double);
121hdrl_collapse_imagelist_to_image_t *
122 hdrl_collapse_imagelist_to_image_mode(double, double, double,
123 hdrl_mode_type, cpl_size);
124cpl_error_code hdrl_collapse_imagelist_to_image_call(
125 hdrl_collapse_imagelist_to_image_t * f,
126 const cpl_imagelist * data,
127 const cpl_imagelist * errors,
128 cpl_image ** out,
129 cpl_image ** err,
130 cpl_image ** contrib,
131 void ** eout);
132void *
133hdrl_collapse_imagelist_to_image_create_eout(
134 hdrl_collapse_imagelist_to_image_t * f,
135 const cpl_image * data);
136void
137hdrl_collapse_imagelist_to_image_delete_eout(
138 hdrl_collapse_imagelist_to_image_t * f,
139 void * eout);
140void
141hdrl_collapse_imagelist_to_image_unwrap_eout(
142 hdrl_collapse_imagelist_to_image_t * f,
143 void * eout);
144cpl_error_code
145hdrl_collapse_imagelist_to_image_move_eout(
146 hdrl_collapse_imagelist_to_image_t * f,
147 void * dst,
148 void * src,
149 cpl_size y);
150void hdrl_collapse_imagelist_to_image_delete(hdrl_collapse_imagelist_to_image_t *);
151
152hdrl_collapse_imagelist_to_vector_t *
153 hdrl_collapse_imagelist_to_vector_mean(void);
154hdrl_collapse_imagelist_to_vector_t *
155 hdrl_collapse_imagelist_to_vector_weighted_mean(void);
156hdrl_collapse_imagelist_to_vector_t *
157 hdrl_collapse_imagelist_to_vector_median(void);
158hdrl_collapse_imagelist_to_vector_t *
159 hdrl_collapse_imagelist_to_vector_sigclip(double, double, int);
160hdrl_collapse_imagelist_to_vector_t *
161hdrl_collapse_imagelist_to_vector_minmax(double, double);
162hdrl_collapse_imagelist_to_vector_t *
163hdrl_collapse_imagelist_to_vector_mode(double, double, double, hdrl_mode_type, cpl_size);
164
165cpl_error_code hdrl_collapse_imagelist_to_vector_call(
166 hdrl_collapse_imagelist_to_vector_t * f,
167 const cpl_imagelist * data,
168 const cpl_imagelist * errors,
169 cpl_vector ** out,
170 cpl_vector ** err,
171 cpl_array ** contrib,
172 void ** eout);
173
174void * hdrl_collapse_imagelist_to_vector_create_eout(
175 hdrl_collapse_imagelist_to_vector_t * f,
176 cpl_size);
177void hdrl_collapse_imagelist_to_vector_delete_eout(
178 hdrl_collapse_imagelist_to_vector_t * f,
179 void * eout);
180void hdrl_collapse_imagelist_to_vector_unwrap_eout(
181 hdrl_collapse_imagelist_to_vector_t * f,
182 void * eout);
183cpl_error_code hdrl_collapse_imagelist_to_vector_move_eout(
184 hdrl_collapse_imagelist_to_vector_t * f,
185 void * dst,
186 void * src,
187 cpl_size y);
188void hdrl_collapse_imagelist_to_vector_delete(
189 hdrl_collapse_imagelist_to_vector_t *);
190
191#endif
192
193CPL_END_DECLS
194
195#endif
double hdrl_collapse_mode_parameter_get_bin_size(const hdrl_parameter *)
get size of the histogram bins
double hdrl_collapse_mode_parameter_get_histo_min(const hdrl_parameter *)
get min value
cpl_boolean hdrl_collapse_parameter_is_weighted_mean(const hdrl_parameter *)
check if parameter is a weighted mean parameter
double hdrl_collapse_sigclip_parameter_get_kappa_low(const hdrl_parameter *)
get low kappa
CPL_BEGIN_DECLS hdrl_parameter * hdrl_collapse_mean_parameter_create(void)
create a parameter object for mean
hdrl_parameter * hdrl_collapse_sigclip_parameter_create(double, double, int)
create a parameter object for sigclipped mean
hdrl_parameter * hdrl_collapse_weighted_mean_parameter_create(void)
create a parameter object for weighted mean
cpl_boolean hdrl_collapse_parameter_is_mean(const hdrl_parameter *)
check if parameter is a mean parameter
cpl_boolean hdrl_collapse_parameter_is_median(const hdrl_parameter *)
check if parameter is a median parameter
double hdrl_collapse_mode_parameter_get_histo_max(const hdrl_parameter *)
get high value
int hdrl_collapse_sigclip_parameter_get_niter(const hdrl_parameter *)
get maximum number of clipping iterations
cpl_size hdrl_collapse_mode_parameter_get_error_niter(const hdrl_parameter *)
get the error type of the mode
cpl_boolean hdrl_collapse_parameter_is_minmax(const hdrl_parameter *)
check if parameter is a minmax mean parameter
cpl_boolean hdrl_collapse_parameter_is_mode(const hdrl_parameter *)
check if parameter is a mode parameter
cpl_boolean hdrl_collapse_parameter_is_sigclip(const hdrl_parameter *)
check if parameter is a sigclip mean parameter
double hdrl_collapse_sigclip_parameter_get_kappa_high(const hdrl_parameter *)
get high kappa
double hdrl_collapse_minmax_parameter_get_nlow(const hdrl_parameter *)
get low value
hdrl_parameter * hdrl_collapse_median_parameter_create(void)
create a parameter object for median
hdrl_parameter * hdrl_collapse_mode_parameter_create(double, double, double, hdrl_mode_type, cpl_size)
create a parameter object for the mode
cpl_parameterlist * hdrl_collapse_parameter_create_parlist(const char *, const char *, const char *, hdrl_parameter *, hdrl_parameter *, hdrl_parameter *)
Create parameters for the collapse.
hdrl_mode_type hdrl_collapse_mode_parameter_get_method(const hdrl_parameter *)
get the mode determination method
hdrl_parameter * hdrl_collapse_minmax_parameter_create(double, double)
create a parameter object for min-max rejected mean
hdrl_parameter * hdrl_collapse_parameter_parse_parlist(const cpl_parameterlist *, const char *)
parse parameterlist for imagelist reduction method
double hdrl_collapse_minmax_parameter_get_nhigh(const hdrl_parameter *)
get high value