LSSTApplications
20.0.0
LSSTDataManagementBasePackage
stack
1a1d771
Linux64
ip_isr
20.0.0
src
applyLookupTable.cc
Go to the documentation of this file.
1
// -*- LSST-C++ -*-
2
3
/*
4
* LSST Data Management System
5
* Copyright 2016 LSST Corporation.
6
*
7
* This product includes software developed by the
8
* LSST Project (http://www.lsst.org/).
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the LSST License Statement and
21
* the GNU General Public License along with this program. If not,
22
* see <http://www.lsstcorp.org/LegalNotices/>.
23
*/
24
25
#include <cstdint>
26
27
#include "
lsst/pex/exceptions.h
"
28
#include "
lsst/ip/isr/applyLookupTable.h
"
29
30
namespace
lsst
{
31
namespace
ip {
32
namespace
isr {
33
34
template
<
typename
PixelT>
35
int
applyLookupTable
(
36
afw::image::Image<PixelT>
&
image
,
37
ndarray::Array<PixelT, 1, 1>
const
&table,
38
PixelT
indOffset
39
) {
40
if
(table.size() == 0u) {
41
throw
LSST_EXCEPT
(
42
pex::exceptions::LengthError
,
43
"Lookup table has zero size."
44
);
45
}
46
int
numOutOfRange = 0;
47
int
const
maxLookupCol = table.size() - 1;
48
for
(
int
col
= 0, imHeight =
image
.getHeight();
col
< imHeight; ++
col
) {
49
for
(
auto
imPtr =
image
.row_begin(
col
),
end
=
image
.row_end(
col
); imPtr !=
end
; ++imPtr) {
50
int
lookupCol = indOffset + *imPtr;
51
if
(lookupCol < 0) {
52
lookupCol = 0;
53
++numOutOfRange;
54
}
else
if
(lookupCol > maxLookupCol) {
55
lookupCol = maxLookupCol;
56
++numOutOfRange;
57
}
58
*imPtr += table[lookupCol];
59
}
60
}
61
return
numOutOfRange;
62
}
63
64
#define INSTANTIATE(T) \
65
template int applyLookupTable<T>(afw::image::Image<T> &, ndarray::Array<T, 1, 1> const &, T);
66
67
INSTANTIATE
(
float
);
68
INSTANTIATE
(
double
);
69
70
}}}
// lsst::ip::isr
lsst::afw::image
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
Definition:
imageAlgorithm.dox:1
INSTANTIATE
#define INSTANTIATE(T)
Definition:
applyLookupTable.cc:64
lsst::ip::diffim::detail::PixelT
float PixelT
Definition:
AssessSpatialKernelVisitor.cc:208
applyLookupTable.h
end
int end
Definition:
BoundedField.cc:105
lsst::pex::exceptions::LengthError
Reports attempts to exceed implementation-defined length limits for some classes.
Definition:
Runtime.h:76
lsst
A base class for image defects.
Definition:
imageAlgorithm.dox:1
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition:
Exception.h:48
col
int col
Definition:
CR.cc:144
lsst::afw::image::Image
A class to represent a 2-dimensional array of pixels.
Definition:
Image.h:58
lsst::ip::isr::applyLookupTable
int applyLookupTable(afw::image::Image< PixelT > &image, ndarray::Array< PixelT, 1, 1 > const &table, PixelT indOffset)
Add the values in a lookup table to an image, e.g.
Definition:
applyLookupTable.cc:35
exceptions.h
Generated on Wed Jun 24 2020 18:10:07 for LSSTApplications by
1.8.18