52 Pixel::Pixel(
int sample,
int line,
int band,
double DN) {
67 Pixel::Pixel(
const Pixel& pixel) {
69 m_line = pixel.
line();
70 m_band = pixel.
band();
83 m_line = other.
line();
85 m_band = other.
band();
96 int Pixel::line()
const {
102 int Pixel::sample()
const {
108 int Pixel::band()
const {
114 double Pixel::DN()
const {
127 unsigned char Pixel::To8Bit(
const double d) {
129 if(d == NULL8)
return NULL1;
130 else if(d == LOW_INSTR_SAT8)
return LOW_INSTR_SAT1;
131 else if(d == LOW_REPR_SAT8)
return LOW_REPR_SAT1;
132 else if(d == HIGH_INSTR_SAT8)
return HIGH_INSTR_SAT1;
133 else if(d == HIGH_REPR_SAT8)
return HIGH_REPR_SAT1;
134 else return LOW_REPR_SAT1;
137 if(d < VALID_MIN1 - 0.5)
return LOW_REPR_SAT1;
138 else if(d > VALID_MAX1 + 0.5)
return HIGH_REPR_SAT1;
141 int itemp = (int)(d + 0.5);
142 if(itemp < VALID_MIN1)
return LOW_REPR_SAT1;
143 else if(itemp > VALID_MAX1)
return HIGH_REPR_SAT1;
144 else return (
unsigned char)(d + 0.5);
156 unsigned char Pixel::To8Bit() {
168 short int Pixel::To16Bit(
const double d) {
170 if(d == NULL8)
return NULL2;
171 else if(d == LOW_INSTR_SAT8)
return LOW_INSTR_SAT2;
172 else if(d == LOW_REPR_SAT8)
return LOW_REPR_SAT2;
173 else if(d == HIGH_INSTR_SAT8)
return HIGH_INSTR_SAT2;
174 else if(d == HIGH_REPR_SAT8)
return HIGH_REPR_SAT2;
175 else return LOW_REPR_SAT2;
178 if(d < VALID_MIN2 - 0.5)
return LOW_REPR_SAT2;
179 else if(d > VALID_MAX2 + 0.5)
return HIGH_REPR_SAT2;
184 itemp = (int)(d - 0.5);
187 itemp = (int)(d + 0.5);
190 if(itemp < VALID_MIN2)
return LOW_REPR_SAT2;
191 else if(itemp > VALID_MAX2)
return HIGH_REPR_SAT2;
192 else if(d < 0.0)
return (
short)(d - 0.5);
193 else return (
short)(d + 0.5);
205 short int Pixel::To16Bit() {
206 return To16Bit(m_DN);
216 short unsigned int Pixel::To16UBit(
const double d) {
218 if(d == NULL8)
return NULLU2;
219 else if(d == LOW_INSTR_SAT8)
return LOW_INSTR_SATU2;
220 else if(d == LOW_REPR_SAT8)
return LOW_REPR_SATU2;
221 else if(d == HIGH_INSTR_SAT8)
return HIGH_INSTR_SATU2;
222 else if(d == HIGH_REPR_SAT8)
return HIGH_REPR_SATU2;
223 else return LOW_REPR_SATU2;
226 if(d < VALID_MIN2 - 0.5)
return LOW_REPR_SATU2;
227 else if(d > VALID_MAX2 + 0.5)
return HIGH_REPR_SATU2;
232 itemp = (int)(d - 0.5);
235 itemp = (int)(d + 0.5);
238 if(itemp < VALID_MIN2)
return LOW_REPR_SATU2;
239 else if(itemp > VALID_MAX2)
return HIGH_REPR_SATU2;
240 else if(d < 0.0)
return (
short)(d - 0.5);
241 else return (
short)(d + 0.5);
253 short unsigned int Pixel::To16Ubit() {
254 return To16UBit(m_DN);
264 float Pixel::To32Bit(
const double d) {
265 if(d < (
double) VALID_MIN8) {
266 if(d == NULL8)
return(NULL4);
267 else if(d == LOW_REPR_SAT8)
return(LOW_REPR_SAT4);
268 else if(d == LOW_INSTR_SAT8)
return(LOW_INSTR_SAT4);
269 else if(d == HIGH_INSTR_SAT8)
return(HIGH_INSTR_SAT4);
270 else if(d == HIGH_REPR_SAT8)
return(HIGH_REPR_SAT4);
271 else return(LOW_REPR_SAT4);
273 else if(d > (
double) VALID_MAX8)
return(HIGH_REPR_SAT8);
274 else return((
float) d);
283 float Pixel::To32Bit() {
284 return To32Bit(m_DN);
298 if(d == NULL1)
return(NULL8);
299 else if(d == LOW_REPR_SAT1)
return(LOW_REPR_SAT8);
300 else if(d == LOW_INSTR_SAT1)
return(LOW_INSTR_SAT8);
301 else if(d == HIGH_REPR_SAT1)
return(HIGH_REPR_SAT8);
302 else if(d == HIGH_INSTR_SAT1)
return(HIGH_INSTR_SAT8);
303 else return(LOW_REPR_SAT8);
305 else if(d > VALID_MAX1)
return(HIGH_REPR_SAT8);
306 else return((
double) d);
319 if(d == NULL2)
return(NULL8);
320 else if(d == LOW_REPR_SAT2)
return(LOW_REPR_SAT8);
321 else if(d == LOW_INSTR_SAT2)
return(LOW_INSTR_SAT8);
322 else if(d == HIGH_REPR_SAT2)
return(HIGH_REPR_SAT8);
323 else if(d == HIGH_INSTR_SAT2)
return(HIGH_INSTR_SAT8);
324 else return(LOW_REPR_SAT8);
326 else return((
double) d);
337 if(d < VALID_MINU2) {
338 if(d == NULLU2)
return(NULL8);
339 else if(d == LOW_REPR_SATU2)
return(LOW_REPR_SAT8);
340 else if(d == LOW_INSTR_SATU2)
return(LOW_INSTR_SAT8);
341 else if(d == HIGH_REPR_SATU2)
return(HIGH_REPR_SAT8);
342 else if(d == HIGH_INSTR_SATU2)
return(HIGH_INSTR_SAT8);
343 else return(LOW_REPR_SAT8);
345 else return((
double) d);
358 if(d == NULL4)
return(NULL8);
359 else if(d == LOW_REPR_SAT4)
return(LOW_REPR_SAT8);
360 else if(d == LOW_INSTR_SAT4)
return(LOW_INSTR_SAT8);
361 else if(d == HIGH_REPR_SAT4)
return(HIGH_REPR_SAT8);
362 else if(d == HIGH_INSTR_SAT4)
return(HIGH_INSTR_SAT8);
363 else return(LOW_REPR_SAT8);
365 else if(d > VALID_MAX4)
return(HIGH_REPR_SAT8);
366 else return((
double) d);
390 float Pixel::ToFloat(
const unsigned char t) {
391 if(t < (
double) VALID_MIN1) {
392 if(t == NULL1)
return(NULL4);
393 else if(t == LOW_REPR_SAT1)
return(LOW_REPR_SAT4);
394 else if(t == LOW_INSTR_SAT1)
return(LOW_INSTR_SAT4);
395 else if(t == HIGH_INSTR_SAT1)
return(HIGH_INSTR_SAT4);
396 else if(t == HIGH_REPR_SAT1)
return(HIGH_REPR_SAT4);
397 else return(LOW_REPR_SAT4);
399 else if(t > (
double) VALID_MAX1)
return(HIGH_REPR_SAT8);
400 else return((
float) t);
411 float Pixel::ToFloat(
const short int t) {
412 if(t < (
double) VALID_MIN2) {
413 if(t == NULL2)
return(NULL4);
414 else if(t == LOW_REPR_SAT2)
return(LOW_REPR_SAT4);
415 else if(t == LOW_INSTR_SAT2)
return(LOW_INSTR_SAT4);
416 else if(t == HIGH_INSTR_SAT2)
return(HIGH_INSTR_SAT4);
417 else if(t == HIGH_REPR_SAT2)
return(HIGH_REPR_SAT4);
418 else return(LOW_REPR_SAT4);
420 else if(t > (
double) VALID_MAX2)
return(HIGH_REPR_SAT8);
421 else return((
float) t);
432 float Pixel::ToFloat(
const short unsigned int t) {
433 if(t < (
double) VALID_MINU2) {
434 if(t == NULLU2)
return(NULL4);
435 else if(t == LOW_REPR_SATU2)
return(LOW_REPR_SAT4);
436 else if(t == LOW_INSTR_SATU2)
return(LOW_INSTR_SAT4);
437 else if(t == HIGH_INSTR_SATU2)
return(HIGH_INSTR_SAT4);
438 else if(t == HIGH_REPR_SATU2)
return(HIGH_REPR_SAT4);
439 else return(LOW_REPR_SAT4);
441 else if(t > (
double) VALID_MAXU2)
return(HIGH_REPR_SAT8);
442 else return((
float) t);
453 float Pixel::ToFloat(
const double t) {
454 if(t < (
double) VALID_MIN8) {
455 if(t == NULL8)
return(NULL4);
456 else if(t == LOW_REPR_SAT8)
return(LOW_REPR_SAT4);
457 else if(t == LOW_INSTR_SAT8)
return(LOW_INSTR_SAT4);
458 else if(t == HIGH_INSTR_SAT8)
return(HIGH_INSTR_SAT4);
459 else if(t == HIGH_REPR_SAT8)
return(HIGH_REPR_SAT4);
460 else return(LOW_REPR_SAT4);
462 else if(t > (
double) VALID_MAX8)
return(HIGH_REPR_SAT8);
463 else return((
float) t);
473 float Pixel::ToFloat() {
474 return ToFloat(m_DN);
487 if(IsNull(d))
return string(
"Null");
488 else if(IsLrs(d))
return string(
"Lrs");
489 else if(IsHrs(d))
return string(
"Hrs");
490 else if(IsHis(d))
return string(
"His");
491 else if(IsLis(d))
return string(
"Lis");
492 else return string(
"Invalid");
496 return result.setNum(d).toStdString();
const double Null
Value for an Isis Null pixel.
Namespace for the standard library.
bool IsSpecial(const double d)
Returns if the input pixel is special.
Store and/or manipulate pixel values.
double ToDouble(const T &value)
Helper function to convert values to doubles.
Namespace for ISIS/Bullet specific routines.
QString ToString(const T &value)
Helper function to convert values to strings.