100 likes | 238 Views
CSE 803 Using images in C++. Computing with images Applications & Methods 2D arrays in C++ Programming project 4. Memory organizations. Raster storage of 2D array 2D array using pointers to rows PGM image file format. 1D array via a pointer. P is base address of array in memory
E N D
CSE 803 Using images in C++ Computing with images Applications & Methods 2D arrays in C++ Programming project 4
Memory organizations • Raster storage of 2D array • 2D array using pointers to rows • PGM image file format
1D array via a pointer • P is base address of array in memory • Array has N cells • Cells 0, 1, …, N-1 • double* P; • P = new double[N]; • P[k] located at P + k * size of cell
2D array via pointers • int** P; • Need to acquire dynamic memory for row pointers and for rows of integers
Point to array of row pointers typedef int* integerPointer; integerPointer P; P = new integerPointer [5]; // allocate 3 columns in each row for ( int k=0; k<5; k++ ) P[k] = new int [3]; // now have 5 rows of 3 integers each
Referencing 5 rows of 3 ints // put i + j in P[i][j] for ( int i=0; i<5; i++) for ( int j=0; j<3; j++) (P[i])[j] = i+j; // don’t need () // P points to a 1D array of pointers to int // P[i] is the pointer offset +i from P // (P[i])[j] is the int offset +j from P[I ]
“raster” storage of 2D array • One continguous block of memory for double A[3][4]; • 3 rows of 4 columns • 8 bytes for each cell • Row 0 first, then row 1, then row 2 • Easy formula locates any cell in same time
Issues with 2D arrays • Images can be different sizes; R x C • Size unknown until image file opened • Image history usually needed • Program must keep collection of data items – R, C, comments, I[r][c] • Object class is a good solution
PGM is simple image file form • See Fig. 2.12 of Shapiro and Stockman • P2 is “magic number” for gray image • # indicates comment line • Width, height, max gray value next • ASCII values for width x height pixels in row major order
PGM image with ASCII info. • P2 means ASCII gray • Comments • W=16; H=8 • 192 is max intensity • Can be made with editor