37#include <drain/Type.h>
38#include <drain/image/AccumulationConverter.h>
42#include "DataSelector.h"
43#include "QuantityMap.h"
66 dataODIM(defaultDataODIM), qualityODIM(defaultQualityODIM) {
72 dataODIM(dataODIM), qualityODIM(defaultQualityODIM) {
79 dataODIM(dataODIM), qualityODIM(qualityODIM) {
84 dataODIM(defaultDataODIM), qualityODIM(defaultQualityODIM) {
85 defaultDataODIM = converter.dataODIM;
86 defaultQualityODIM = converter.qualityODIM;
95 return dataODIM.undetect;
107 return qualityODIM.
nodata;
112 bool decode(
double & value)
const override;
116 bool decode(
double & value,
double & weight)
const override;
123 void encode(
double & value,
double & weight)
const override;
129 void encodeDiff(
double & diff)
const override;
171 const ODIM & dataODIM;
172 const ODIM & qualityODIM;
174 ODIM defaultDataODIM;
175 ODIM defaultQualityODIM;
205std::ostream & operator<<(std::ostream & ostr,
const DataCoder & coder) {
206 ostr << coder.
getName() <<
':' << coder.getParameters() <<
'\n';
208 ostr <<
"\t data: " <<
EncodingODIM(coder.dataODIM) <<
'\n';
209 ostr <<
"\t q: " <<
EncodingODIM(coder.qualityODIM) <<
'\n';
Something which has a name, a description and possibly some parameters of varying type.
Definition BeanLike.h:60
virtual const std::string & getName() const
Return the name of an instance.
Definition BeanLike.h:82
Converts ODIM encoded data (with markers) to natural values and backwards.
Definition DataCoder.h:61
void init()
Creates a naive quality field: data=1.0, undetect/nodata=0.0.
Definition DataCoder.cpp:49
static double undetectQualityCoeff
Quality, relative to data quality, applied in locations marked with undetect .
Definition DataCoder.h:169
DataCoder(const ODIM &dataODIM)
Without quality (with impicit quality)
Definition DataCoder.h:71
virtual bool decode(double &value) const override
Converts storage data containing marker codes etc to natural scale.
Definition DataCoder.cpp:94
virtual void encode(double &value, double &weight) const override
Converts natural-scale data to storage data containing marker codes etc.
Definition DataCoder.cpp:135
double undetectValue
Physical value applied in locations marked with undetect . This should be compatible with the quantit...
Definition DataCoder.h:164
virtual double getNoDataMarker() const override
NEW, untested...
Definition DataCoder.h:100
virtual void encodeWeight(double &weight) const override
Converts natural-scale data to storage data, applying marker codes if needed.
Definition DataCoder.cpp:152
double minCodeValue
In extraction (encoding), values lower than this value will be marked undetect .
Definition DataCoder.h:192
virtual void encodeDiff(double &diff) const override
When using unsigned types, encoding typically requires adding a positive bias and scaling the data.
Definition DataCoder.cpp:157
double detectionThreshold
A physical value greater than undetectValue. In \i encoding, lower values will be marked undetect ....
Definition DataCoder.h:199
virtual double getWeightNoDataMarker() const override
NEW, untested...
Definition DataCoder.h:106
virtual double getNoReadingMarker() const override
Returns a marker value which indicates that although data has been measured, it is not within require...
Definition DataCoder.h:94
double defaultQuality
If source data has no quality field, this value is applied for (detected) data.
Definition DataCoder.h:156
Structure for data storage type, scaling and marker codes. Does not contain quantity.
Definition EncodingODIM.h:75
double nodata
data[n]/what (obligatory)
Definition EncodingODIM.h:157
ODIM metadata (quantity, gain, offset, undetect, nodata, date, time)
Definition ODIM.h:79
Definition QuantityMap.h:50
bool setQuantityDefaults(EncodingODIM &dst, const std::string &quantity, const std::string &values="") const
Sets default values of given quantity without assigning the quantity. Optionally overrides with user ...
Definition QuantityMap.cpp:207
Namespace for images and image processing tools.
Definition AccumulationArray.cpp:45
Definition DataSelector.cpp:44
QuantityMap & getQuantityMap()
Definition QuantityMap.cpp:279
Converts raw data to values appropriate for accumulation.
Definition AccumulationConverter.h:50