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();
77 m_line = other.
line();
79 m_band = other.
band();
90 int Pixel::line()
const {
96 int Pixel::sample()
const {
102 int Pixel::band()
const {
108 double Pixel::DN()
const {
121 unsigned char Pixel::To8Bit(
const double d) {
123 if(d == NULL8)
return NULL1;
124 else if(d == LOW_INSTR_SAT8)
return LOW_INSTR_SAT1;
125 else if(d == LOW_REPR_SAT8)
return LOW_REPR_SAT1;
126 else if(d == HIGH_INSTR_SAT8)
return HIGH_INSTR_SAT1;
127 else if(d == HIGH_REPR_SAT8)
return HIGH_REPR_SAT1;
128 else return LOW_REPR_SAT1;
131 if(d < VALID_MIN1 - 0.5)
return LOW_REPR_SAT1;
132 else if(d > VALID_MAX1 + 0.5)
return HIGH_REPR_SAT1;
135 int itemp = (int)(d + 0.5);
136 if(itemp < VALID_MIN1)
return LOW_REPR_SAT1;
137 else if(itemp > VALID_MAX1)
return HIGH_REPR_SAT1;
138 else return (
unsigned char)(d + 0.5);
150 unsigned char Pixel::To8Bit() {
162 short int Pixel::To16Bit(
const double d) {
164 if(d == NULL8)
return NULL2;
165 else if(d == LOW_INSTR_SAT8)
return LOW_INSTR_SAT2;
166 else if(d == LOW_REPR_SAT8)
return LOW_REPR_SAT2;
167 else if(d == HIGH_INSTR_SAT8)
return HIGH_INSTR_SAT2;
168 else if(d == HIGH_REPR_SAT8)
return HIGH_REPR_SAT2;
169 else return LOW_REPR_SAT2;
172 if(d < VALID_MIN2 - 0.5)
return LOW_REPR_SAT2;
173 else if(d > VALID_MAX2 + 0.5)
return HIGH_REPR_SAT2;
178 itemp = (int)(d - 0.5);
181 itemp = (int)(d + 0.5);
184 if(itemp < VALID_MIN2)
return LOW_REPR_SAT2;
185 else if(itemp > VALID_MAX2)
return HIGH_REPR_SAT2;
186 else if(d < 0.0)
return (
short)(d - 0.5);
187 else return (
short)(d + 0.5);
199 short int Pixel::To16Bit() {
200 return To16Bit(m_DN);
210 short unsigned int Pixel::To16UBit(
const double d) {
212 if(d == NULL8)
return NULLU2;
213 else if(d == LOW_INSTR_SAT8)
return LOW_INSTR_SATU2;
214 else if(d == LOW_REPR_SAT8)
return LOW_REPR_SATU2;
215 else if(d == HIGH_INSTR_SAT8)
return HIGH_INSTR_SATU2;
216 else if(d == HIGH_REPR_SAT8)
return HIGH_REPR_SATU2;
217 else return LOW_REPR_SATU2;
220 if(d < VALID_MIN2 - 0.5)
return LOW_REPR_SATU2;
221 else if(d > VALID_MAX2 + 0.5)
return HIGH_REPR_SATU2;
226 itemp = (int)(d - 0.5);
229 itemp = (int)(d + 0.5);
232 if(itemp < VALID_MIN2)
return LOW_REPR_SATU2;
233 else if(itemp > VALID_MAX2)
return HIGH_REPR_SATU2;
234 else if(d < 0.0)
return (
short)(d - 0.5);
235 else return (
short)(d + 0.5);
247 short unsigned int Pixel::To16Ubit() {
248 return To16UBit(m_DN);
258 float Pixel::To32Bit(
const double d) {
259 if(d < (
double) VALID_MIN8) {
260 if(d == NULL8)
return(NULL4);
261 else if(d == LOW_REPR_SAT8)
return(LOW_REPR_SAT4);
262 else if(d == LOW_INSTR_SAT8)
return(LOW_INSTR_SAT4);
263 else if(d == HIGH_INSTR_SAT8)
return(HIGH_INSTR_SAT4);
264 else if(d == HIGH_REPR_SAT8)
return(HIGH_REPR_SAT4);
265 else return(LOW_REPR_SAT4);
267 else if(d > (
double) VALID_MAX8)
return(HIGH_REPR_SAT8);
268 else return((
float) d);
277 float Pixel::To32Bit() {
278 return To32Bit(m_DN);
290 double Pixel::ToDouble(
const unsigned char d) {
292 if(d == NULL1)
return(NULL8);
293 else if(d == LOW_REPR_SAT1)
return(LOW_REPR_SAT8);
294 else if(d == LOW_INSTR_SAT1)
return(LOW_INSTR_SAT8);
295 else if(d == HIGH_REPR_SAT1)
return(HIGH_REPR_SAT8);
296 else if(d == HIGH_INSTR_SAT1)
return(HIGH_INSTR_SAT8);
297 else return(LOW_REPR_SAT8);
299 else if(d > VALID_MAX1)
return(HIGH_REPR_SAT8);
300 else return((
double) d);
311 double Pixel::ToDouble(
const short int d) {
313 if(d == NULL2)
return(NULL8);
314 else if(d == LOW_REPR_SAT2)
return(LOW_REPR_SAT8);
315 else if(d == LOW_INSTR_SAT2)
return(LOW_INSTR_SAT8);
316 else if(d == HIGH_REPR_SAT2)
return(HIGH_REPR_SAT8);
317 else if(d == HIGH_INSTR_SAT2)
return(HIGH_INSTR_SAT8);
318 else return(LOW_REPR_SAT8);
320 else return((
double) d);
330 double Pixel::ToDouble(
const short unsigned int d) {
331 if(d < VALID_MINU2) {
332 if(d == NULLU2)
return(NULL8);
333 else if(d == LOW_REPR_SATU2)
return(LOW_REPR_SAT8);
334 else if(d == LOW_INSTR_SATU2)
return(LOW_INSTR_SAT8);
335 else if(d == HIGH_REPR_SATU2)
return(HIGH_REPR_SAT8);
336 else if(d == HIGH_INSTR_SATU2)
return(HIGH_INSTR_SAT8);
337 else return(LOW_REPR_SAT8);
339 else return((
double) d);
350 double Pixel::ToDouble(
const float d) {
352 if(d == NULL4)
return(NULL8);
353 else if(d == LOW_REPR_SAT4)
return(LOW_REPR_SAT8);
354 else if(d == LOW_INSTR_SAT4)
return(LOW_INSTR_SAT8);
355 else if(d == HIGH_REPR_SAT4)
return(HIGH_REPR_SAT8);
356 else if(d == HIGH_INSTR_SAT4)
return(HIGH_INSTR_SAT8);
357 else return(LOW_REPR_SAT8);
359 else if(d > VALID_MAX4)
return(HIGH_REPR_SAT8);
360 else return((
double) d);
369 double Pixel::ToDouble() {
384 float Pixel::ToFloat(
const unsigned char t) {
385 if(t < (
double) VALID_MIN1) {
386 if(t == NULL1)
return(NULL4);
387 else if(t == LOW_REPR_SAT1)
return(LOW_REPR_SAT4);
388 else if(t == LOW_INSTR_SAT1)
return(LOW_INSTR_SAT4);
389 else if(t == HIGH_INSTR_SAT1)
return(HIGH_INSTR_SAT4);
390 else if(t == HIGH_REPR_SAT1)
return(HIGH_REPR_SAT4);
391 else return(LOW_REPR_SAT4);
393 else if(t > (
double) VALID_MAX1)
return(HIGH_REPR_SAT8);
394 else return((
float) t);
405 float Pixel::ToFloat(
const short int t) {
406 if(t < (
double) VALID_MIN2) {
407 if(t == NULL2)
return(NULL4);
408 else if(t == LOW_REPR_SAT2)
return(LOW_REPR_SAT4);
409 else if(t == LOW_INSTR_SAT2)
return(LOW_INSTR_SAT4);
410 else if(t == HIGH_INSTR_SAT2)
return(HIGH_INSTR_SAT4);
411 else if(t == HIGH_REPR_SAT2)
return(HIGH_REPR_SAT4);
412 else return(LOW_REPR_SAT4);
414 else if(t > (
double) VALID_MAX2)
return(HIGH_REPR_SAT8);
415 else return((
float) t);
426 float Pixel::ToFloat(
const short unsigned int t) {
427 if(t < (
double) VALID_MINU2) {
428 if(t == NULLU2)
return(NULL4);
429 else if(t == LOW_REPR_SATU2)
return(LOW_REPR_SAT4);
430 else if(t == LOW_INSTR_SATU2)
return(LOW_INSTR_SAT4);
431 else if(t == HIGH_INSTR_SATU2)
return(HIGH_INSTR_SAT4);
432 else if(t == HIGH_REPR_SATU2)
return(HIGH_REPR_SAT4);
433 else return(LOW_REPR_SAT4);
435 else if(t > (
double) VALID_MAXU2)
return(HIGH_REPR_SAT8);
436 else return((
float) t);
447 float Pixel::ToFloat(
const double t) {
448 if(t < (
double) VALID_MIN8) {
449 if(t == NULL8)
return(NULL4);
450 else if(t == LOW_REPR_SAT8)
return(LOW_REPR_SAT4);
451 else if(t == LOW_INSTR_SAT8)
return(LOW_INSTR_SAT4);
452 else if(t == HIGH_INSTR_SAT8)
return(HIGH_INSTR_SAT4);
453 else if(t == HIGH_REPR_SAT8)
return(HIGH_REPR_SAT4);
454 else return(LOW_REPR_SAT4);
456 else if(t > (
double) VALID_MAX8)
return(HIGH_REPR_SAT8);
457 else return((
float) t);
467 float Pixel::ToFloat() {
468 return ToFloat(m_DN);
479 string Pixel::ToString(
double d) {
481 if(IsNull(d))
return string(
"Null");
482 else if(IsLrs(d))
return string(
"Lrs");
483 else if(IsHrs(d))
return string(
"Hrs");
484 else if(IsHis(d))
return string(
"His");
485 else if(IsLis(d))
return string(
"Lis");
486 else return string(
"Invalid");
490 return result.setNum(d).toStdString();
498 string Pixel::ToString() {
499 return ToString(m_DN);
const double Null
Value for an Isis Null pixel.
int band() const
Returns the band coordinate of the Pixel.
double DN() const
Returns the DN of the Pixel.
int line() const
Returns the line coordinate of the Pixel.
bool IsSpecial(const double d)
Returns if the input pixel is special.
Store and/or manipulate pixel values.
int sample() const
Returns the sample coordinate of the Pixel.