week02-imagesInCPP.ppt

Download Report

Transcript week02-imagesInCPP.ppt

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