CVB++ 15.0
spectral.hpp
1#pragma once
2
3#include "../_cexports/c_spectral.h"
4
5#include "../global.hpp"
6
7namespace Cvb
8{
9
10 CVB_BEGIN_INLINE_NS
11
13
102 namespace Spectral
103 {
104
105 class MetaData;
108
109 class Cube;
112
113 class WrappedCube;
116
117 class LinearAccessData;
118
119 class Interpolator;
122
123 class CubeRange;
124
126 enum class FieldID
127 {
129 Interleave = CExports::CVSFI_Interleave,
131 Samples = CExports::CVSFI_Samples,
133 Lines = CExports::CVSFI_Lines,
135 Bands = CExports::CVSFI_Bands,
148 DataType = CExports::CVSFI_DataType,
152 ByteOrder = CExports::CVSFI_ByteOrder,
155 FileType = CExports::CVSFI_FileType,
158 HeaderOffset = CExports::CVSFI_HeaderOffset,
160 Wavelength = CExports::CVSFI_Wavelength,
178 WavelengthUnit = CExports::CVSFI_WavelengthUnit,
181 Fwhm = CExports::CVSFI_Fwhm
182 };
183
185 enum class FieldType
186 {
188 Invalid = CExports::CVSFT_Invalid,
190 String = CExports::CVSFT_String,
192 Float = CExports::CVSFT_Float,
194 Integer = CExports::CVSFT_Integer,
196 StringArray = CExports::CVSFT_StringArray,
198 FloatArray = CExports::CVSFT_FloatArray,
200 IntegerArray = CExports::CVSFT_IntegerArray
201 };
202
219 enum class CubeEncoding
220 {
223 BandInterleavedByLine = CExports::CVSVP_BandInterleavedByLine,
226 BandSequential = CExports::CVSVP_BandSequential,
229 BandInterleavedByPixel = CExports::CVSVP_BandInterleavedByPixel
230 };
231
233 enum class CubeType
234 {
236 ContinuousCube = CExports::CVSCT_ContinuousCube,
238 LinearNonOwningCube = CExports::CVSCT_LinearNonOwningCube,
240 MappedCube = CExports::CVSCT_MappedCube,
242 StackedCube = CExports::CVSCT_StackedCube
243 };
244
247 {
250 AverageReferences1 = CExports::CVSNM_AverageReferences1
251 };
252
254 enum class StdIlluminant
255 {
257 UNDEFINED = CExports::CVSSI_UNDEFINED,
259 E = CExports::CVSSI_E,
261 A = CExports::CVSSI_A,
263 D50 = CExports::CVSSI_D50,
265 D65 = CExports::CVSSI_D65
266 };
267
269 enum class StdObserver
270 {
272 UNDEFINED = CExports::CVSSO_UNDEFINED,
274 CIE2006_2deg = CExports::CVSSO_CIE2006_2deg,
276 CIE2006_10deg = CExports::CVSSO_CIE2006_10deg,
278 CIE1964_10deg = CExports::CVSSO_CIE1964_10deg,
280 CIE1931_2deg = CExports::CVSSO_CIE1931_2deg
281 };
282
285 {
288 };
289
291 enum class PixelOverflow
292 {
297 };
298
299 } // namespace Spectral
300
301 CVB_END_INLINE_NS
302
303} // namespace Cvb
Spectral Cube object.
Definition cube.hpp:59
3D rectangle in the samples, lines and bands domain.
Definition cube_range.hpp:22
Spectral Interpolator object.
Definition interpolator.hpp:23
Linear access properties.
Definition linear_access_data.hpp:20
Spectral MetaData object.
Definition meta_data.hpp:31
Spectral Wrapped cube objects are linear non-owning cubes.
Definition wrapped_cube.hpp:28
Namespace for the Spectral package.
Definition arithmetic.hpp:14
FieldID
FieldID enum class to access fields in the MetaData object.
Definition spectral.hpp:127
@ Bands
The number of bands.
Definition spectral.hpp:135
@ FileType
Definition spectral.hpp:155
@ WavelengthUnit
Definition spectral.hpp:178
@ ByteOrder
Definition spectral.hpp:152
@ HeaderOffset
Definition spectral.hpp:158
@ Lines
The number of lines.
Definition spectral.hpp:133
@ DataType
Definition spectral.hpp:148
@ Wavelength
Array of wavelengths with the unit given in FieldID::WavelengthUnit.
Definition spectral.hpp:160
@ Interleave
Defines the way the spectral data of the buffer is ordered (CubeEncoding)
Definition spectral.hpp:129
@ Samples
The number of samples.
Definition spectral.hpp:131
@ Fwhm
Definition spectral.hpp:181
std::shared_ptr< MetaData > MetaDataPtr
Convenience shared pointer for MetaData.
Definition spectral.hpp:107
PixelOverflow
Defines how arithmetic overflows and underflows are handled.
Definition spectral.hpp:292
@ Unhandled
No operation is done on the resulting pixel values.
Definition spectral.hpp:294
@ Truncate
Resulting pixel values are truncated at the data type's min and max values.
Definition spectral.hpp:296
NormalizationMethod
Defines the method used for normalizing the spectral cube with a white and a black reference.
Definition spectral.hpp:247
@ AverageReferences1
Definition spectral.hpp:250
StdIlluminant
Defines Standard Illumination.
Definition spectral.hpp:255
@ UNDEFINED
Undefined Standard Illuminant.
Definition spectral.hpp:257
@ E
Equal power Spectrum.
Definition spectral.hpp:259
@ D65
Illuminant D65.
Definition spectral.hpp:265
@ D50
Illuminant D50.
Definition spectral.hpp:263
@ A
Illuminant A.
Definition spectral.hpp:261
CubeType
Defines the type of the cube.
Definition spectral.hpp:234
@ ContinuousCube
Linear Cube with owning buffer.
Definition spectral.hpp:236
@ LinearNonOwningCube
Linear Cube without owning buffer.
Definition spectral.hpp:238
@ MappedCube
Mapped Cube holds a reference of a continuous Cube.
Definition spectral.hpp:240
@ StackedCube
Stacked Cube with potentially non-linear buffer.
Definition spectral.hpp:242
std::shared_ptr< Interpolator > InterpolatorPtr
Convenience shared pointer for Interpolator.
Definition spectral.hpp:121
InterpolationMethod
Defines the interpolation method.
Definition spectral.hpp:285
@ Linear
linear interpolation, at the border the last value is used
Definition spectral.hpp:287
FieldType
Data type of a field.
Definition spectral.hpp:186
@ Float
Field contains floating point value.
Definition spectral.hpp:192
@ String
Field contains string value.
Definition spectral.hpp:190
@ Invalid
Invalid field when the field has not been defined yet.
Definition spectral.hpp:188
@ StringArray
Field contains string array value.
Definition spectral.hpp:196
@ Integer
Field contains integer value.
Definition spectral.hpp:194
@ FloatArray
Field contains floating point array value.
Definition spectral.hpp:198
@ IntegerArray
Field contains integer array value.
Definition spectral.hpp:200
std::shared_ptr< WrappedCube > WrappedCubePtr
Convenience shared pointer for WrappedCube.
Definition spectral.hpp:115
StdObserver
Defines Standard Observer.
Definition spectral.hpp:270
@ CIE1964_10deg
1964 Observer with 10 deg
Definition spectral.hpp:278
@ CIE2006_2deg
2006 Observer with 2 deg
Definition spectral.hpp:274
@ CIE2006_10deg
2006 Observer with 10 deg
Definition spectral.hpp:276
@ CIE1931_2deg
1931 Observer with 2 deg
Definition spectral.hpp:280
CubeEncoding
View Perspective: Defines how the mapping between a typical x-y image and samples-lines-bands is done...
Definition spectral.hpp:220
@ BandSequential
Definition spectral.hpp:226
@ BandInterleavedByPixel
Definition spectral.hpp:229
@ BandInterleavedByLine
Definition spectral.hpp:223
std::shared_ptr< Cube > CubePtr
Convenience shared pointer for Cube.
Definition spectral.hpp:111
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17