119 PvlGroup resultsGrp(
"Results");
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]) {
207 if(IsValidPixel((*
m_iPortal)[isamp-1])) {
208 mdSum[osamp] += (*m_iPortal)[isamp-1];
209 mdNpts[osamp] += 1.0;
212 specialPixelCounts[osamp][PixelToString((*
m_iPortal)[isamp-1])]++;
217 double sdel = (double) isamp - mdIncTab[osamp];
220 if(IsValidPixel((*
m_iPortal)[isamp-1])) {
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;
229 specialPixelCounts[osamp][PixelToString((*
m_iPortal)[isamp-1])]++;
231 specialPixelCounts[osamp+1][PixelToString((*
m_iPortal)[isamp-1])]++;
243 double ldel = (double)
mdLine - rline;
244 double ldel2 = 1.0 - ldel;
247 while(isamp <= mdIncTab[osamp]) {
248 if(IsValidPixel((*
m_iPortal)[isamp-1])) {
249 mdSum[osamp] += (*m_iPortal)[isamp-1] * ldel2;
250 mdNpts[osamp] += ldel2;
251 mdSum2[osamp] += (*m_iPortal)[isamp-1] * ldel;
252 mdNpts2[osamp] += ldel;
255 specialPixelCounts[osamp][PixelToString((*
m_iPortal)[isamp-1])]++;
260 double sdel = (double) isamp - mdIncTab[osamp];
262 if(IsValidPixel((*
m_iPortal)[isamp-1])) {
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;
277 specialPixelCounts[osamp][PixelToString((*
m_iPortal)[isamp-1])]++;
279 specialPixelCounts[osamp+1][PixelToString((*
m_iPortal)[isamp-1])]++;
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;});
302 out[osamp] = StringToPixel(mode->first);
305 out[osamp] = Isis::Null;
308 mdSum[osamp] = mdSum2[osamp];
309 mdNpts[osamp] = mdNpts2[osamp];
311 mdNpts2[osamp] = 0.0;
322 mdNpts2[osamp] = 0.0;
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.