[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fwd: Pixel data]



One point of clarification.  

x = Dimension 0 of axis vector
y = Dimension 1 of axis vector
z = Dimension 2 of axis vector

I don't know what higher dimensions correspond to.  The order indicates
which axis is fastest, then next fastest, etc.  Order 0 is fastest,
order 1 next fast, order 2 next, etc.

For VIMS cubes, we have SAMPLE(x) BAND (z) LINE (y)

Assuming 3 samples, 2 bands, 4 lines

Stored as (x,y,z)
(0,0,0)(1,0,0)(2,0,0)(0,1,0)(1,1,0)(2,1,0)
(0,0,1)(1,0,1)(2,0,1)(0,1,1)(1,1,1)(2,1,1)
(0,0,2)(1,0,2)(2,0,2)(0,1,2)(1,1,2)(2,1,2)
(0,0,3)(1,0,3)(2,0,3)(0,1,3)(1,1,3)(2,1,3)

axes = 3;

// X axis = SAMPLE
axis[0].order = 0; // Fastest
axis[0].size = 63; // Maximum (0 based size) 64 pixels
axis[0].direction = '+'; // Goes across as expected

// Y axis = LINE
axis[1].order = 2; // Slowest
axis[1].size = 63; // Maximum (0 based size) 64 pixels
axis[1].direction = '+'; // Goes down as expected

// Z axis = BAND
axis[2].order = 1; // Second fastest
axis[0].size = 351; // Maximum (0 based size) 352 channels (96 vis + 256
ir)
axis[0].direction = '+'; // Goes back as expected

-- 
When I use a word it means just what | John Ivens
I choose it to mean - neither more   | Principal Programmer
nor less.                            | Cassini VIMS
-- Humpty Dumpty                     | (520) 621-7301
--- Begin Message ---
//Pixels have these attributes:

class Pixel_Data {
	unsigned short ID; 	Specific ID number 
	char code;		Code marker (CVS identifier)
	DataType data_type;	SUN_INTEGER, SUN_FLOAT, etc.
	byte_orders byte_order;	BIG_ENDIAN, LITTLE_ENDIAN, others
	int pixel_bits;		Number of bits in this pixel
	float pixel_bytes;	Number of bytes this pixel fits into
};

enum DataType { SUN_INTEGER, SUN_FLOAT, SUN_DOUBLE, etc. };

// The pixel_bytes field needs discussion
// I would like to discuss the ID and code also
// Not sure if data_type should be a seperate object which knows its
// byte_order and its pixel_bits or not.

//Pixels are stored together in this geometry:

class Pixel_Geometry {
	int axes; 		The number of axes in the data
	Axis_Vector axis[axes];	An array of axis information
};

class Axis_Vector {
	int order;		The order of this axis in the data
	int size;		How many pixels are in this dimension
	Direction direction;	Either positive or negative
}

enum Direction { '+', '-' };

// The order is relative to an assumed order of axes, namely 
// (0,0,0) at the uppermost left corner of the "cube"
// +x going "across"
// +y going "down"
// +z going "back"

// Hopefully noone will "mix axes" in the data.  

-- 
When I use a word it means just what | John Ivens
I choose it to mean - neither more   | Principal Programmer
nor less.                            | Cassini VIMS
-- Humpty Dumpty                     | (520) 621-7301
--- End Message ---