33#include <cr2res_dfs.h>
34#include <cr2res_detlin.h>
35#include <cr2res_utils.h>
37#define CR2RES_DETECTOR_SIZE 2048
61static void test_cr2res_detlin_compute(){
72 double aduPsec = 666.6;
73 cpl_size max_degree=2;
74 cpl_vector * dits = cpl_vector_new(n);
75 cpl_vector * adus = cpl_vector_new(n);
76 cpl_polynomial * poly_fitted;
77 cpl_polynomial * poly_nonlin = cpl_polynomial_new(1);
79 cpl_vector * adus_corr;
82cpl_polynomial_set_coeff(poly_nonlin,&pow,0.0);
84cpl_polynomial_set_coeff(poly_nonlin,&pow,0.0);
86cpl_polynomial_set_coeff(poly_nonlin,&pow,5E-5);
91 cpl_vector_set(dits, i, i+1);
92 adu=(i+1)*aduPsec / (1+cpl_polynomial_eval_1d(poly_nonlin,i+1,NULL));
93 cpl_vector_set(adus, i, adu);
98 cpl_vector_dump(adus_corr,stdout);
99 cpl_vector_multiply(adus_corr,adus);
100 cpl_polynomial_dump(poly_fitted, stdout);
103 cpl_vector_divide_scalar(adus_corr,aduPsec);
104 cpl_vector_dump(adus_corr,stdout);
105 cpl_test_vector_abs(adus_corr,dits,aduPsec*0.02);
107 cpl_vector_delete(dits);
108 cpl_vector_delete(adus);
109 cpl_vector_delete(adus_corr);
110 cpl_polynomial_delete(poly_nonlin);
111 if (error != NULL) cpl_vector_delete(error);
112 if (poly_fitted != NULL) cpl_polynomial_delete(poly_fitted);
123 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_DEBUG);
125 test_cr2res_detlin_compute();
127 return cpl_test_end(0);
int main(void)
Run the Unit tests.
int cr2res_detlin_compute(const cpl_vector *dits, const cpl_vector *adus, cpl_size max_degree, cpl_polynomial **fitted, cpl_vector **error)
Fits the response of a given pixel to the illumination increase.
cpl_vector * cr2res_polynomial_eval_vector(const cpl_polynomial *poly, const cpl_vector *vec)
Evaluate a polynomial on a vector.