Write two functions to load and store binary (types P5 and P6) “*.pnm” image files in your favorite language/package out of C++, Java, Python or Matlab. Load function should generate an Image structure (or an object). The image structure should contain following.
Image
type : an integer value specifying the image type. Values Gray = 0 and RGB = 1
width : an integer value specifying the width of the image.
height : an integer value specifying the width of the image.
data : a byte array of image data (stored in row major order).
For simplicity you can assume second header line is always a comment. And max value is always 255 (i.e. 8 bit images).
For full pnm file format specification, refer
[login to view URL]
Following software can be used to view pnm images. Also it allows you to convert any image to pnm format (for testing purposes). [login to view URL]
In addition to ImageJ, the open source software GIMP also can open PNM format image files.
For example following C++ code shows the headers of required functions.
struct Image {
int type; // an integer value specifying the image type. Values // Gray = 0 and RGB = 1
int width; // an integer value specifying the width of the image.
int height; // an integer value specifying the height of the image.
char* data; // an 8-bit array of image data (row major).
};
Image loadImage(string fileName);
void storeImage(string fileName, Image img);