9#include "SpecialPixel.h"
147 int readLine = (int)(
mdLine + 0.5);
177 if(out.
Line() == 1 && out.
Band() == 1) {
191 mdNpts2[osamp] = 0.0;
204 for(
int osamp = 0; osamp < out.
size(); osamp++) {
205 while((
double)isamp <= mdIncTab[osamp]) {
208 mdSum[osamp] += (*m_iPortal)[isamp-1];
209 mdNpts[osamp] += 1.0;
217 double sdel = (double) isamp - mdIncTab[osamp];
221 mdSum[osamp] += (*m_iPortal)[isamp-1] * (1.0 - sdel);
222 mdNpts[osamp] += (1.0 - sdel);
224 mdSum[osamp+1] += (*m_iPortal)[isamp-1] * sdel;
225 mdNpts[osamp+1] += sdel;
243 double ldel = (double)
mdLine - rline;
244 double ldel2 = 1.0 - ldel;
247 while(isamp <= mdIncTab[osamp]) {
249 mdSum[osamp] += (*m_iPortal)[isamp-1] * ldel2;
250 mdNpts[osamp] += ldel2;
251 mdSum2[osamp] += (*m_iPortal)[isamp-1] * ldel;
252 mdNpts2[osamp] += ldel;
260 double sdel = (double) isamp - mdIncTab[osamp];
263 mdSum[osamp] += (*m_iPortal)[isamp-1] * (1.0 - sdel) * ldel2;
264 mdNpts[osamp] += (1.0 - sdel) * ldel2;
266 mdSum[osamp+1] += (*m_iPortal)[isamp-1] * sdel * ldel2;
267 mdNpts[osamp+1] += sdel * ldel2;
269 mdSum2[osamp] += (*m_iPortal)[isamp-1] * (1.0 - sdel) * ldel;
270 mdNpts2[osamp] += (1.0 - sdel) * ldel;
272 mdSum2[osamp+1] += (*m_iPortal)[isamp-1] * sdel * ldel;
273 mdNpts2[osamp+1] += sdel * ldel;
290 out[osamp] = mdSum[osamp] / mdNpts[osamp];
294 out[osamp] = (*m_iPortal)[(int)(mdIncTab[osamp] + 0.5) - 1];
299 auto mode = std::max_element(specialPixelCounts[osamp].begin(),
300 specialPixelCounts[osamp].end(),
301 [](
const pair<QString, int> &a,
const pair<QString, int> &b) {
return a.second < b.second;});
308 mdSum[osamp] = mdSum2[osamp];
309 mdNpts[osamp] = mdNpts2[osamp];
311 mdNpts2[osamp] = 0.0;
322 mdNpts2[osamp] = 0.0;
void operator()(Isis::Buffer &out) const
Operator () overload.
double mdValidPer
Valid Percentage.
QString msReplaceMode
Replace Mode (scale/total)
Buffer for reading and writing cube data.
int size() const
Returns the total number of pixels in the shape buffer.
int Line(const int index=0) const
Returns the line position associated with a shape buffer index.
int Band(const int index=0) const
Returns the band position associated with a shape buffer index.
IO Handler for Isis Cubes.
void operator()(Isis::Buffer &out) const
Operator () overload.
Buffer for containing a two dimensional section of an image.
Contains multiple PvlContainers.
A single keyword-value pair.
double mdSampleScale
Sample scale.
int miInputSamples
Input Samples.
int miEndSample
Input end sample.
int miStartSample
Input start sample.
int miInputLines
Input Lines.
Reduce(Isis::Cube *pInCube, const double sampleScale, const double lineScale)
Constructor.
int miStartLine
Input start line.
int miEndLine
Input end line.
double mdLineScale
Line scale.
Isis::PvlGroup UpdateOutputLabel(Isis::Cube *pOutCube)
Create label for the reduced output image.
int miBandIndex
Band Index.
int miOutputSamples
Output Samples.
int miOutputLines
Output Lines.
void setInputBoundary(int startSample, int endSample, int startLine, int endLine)
Parameters to input image sub area.
int miInputBands
Input Bands.
Isis::Cube * mInCube
Input image.
Isis::Portal * m_iPortal
Input portal.
Apply corrections to a cube label for subarea extraction.
void UpdateLabel(Cube *icube, Cube *ocube, PvlGroup &results)
Modifies a label for a file containing a subarea.
void SetSubArea(const int orignl, const int origns, const int sl, const int ss, const int el, const int es, const double linc, const double sinc)
Defines the subarea.
This is free and unencumbered software released into the public domain.
double StringToPixel(const QString &str)
Takes the name of the pixel type as a string and returns a double pixel value.
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
bool IsValidPixel(const double d)
Returns if the input pixel is valid.
const double Null
Value for an Isis Null pixel.
bool IsSpecial(const double d)
Returns if the input pixel is special.
QString PixelToString(double d, double precision=8)
Takes a double pixel value and returns the name of the pixel type as a string.
Namespace for the standard library.