image representation and manipulation
Download
Skip this Video
Download Presentation
Image Representation and Manipulation

Loading in 2 Seconds...

play fullscreen
1 / 22

Image Representation and Manipulation - PowerPoint PPT Presentation


  • 128 Views
  • Uploaded on

Image Representation and Manipulation. CS302 Data Structures Prof. George Bebis http://www.cse.unr.edu/CVL. 0. 255. How are images represented?. 8 bits/pixel. Color images. A Simple model of image formation. The scene is illuminated by a single source.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Image Representation and Manipulation' - faith


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
image representation and manipulation

Image Representation and Manipulation

CS302 Data Structures

Prof. George Bebis

http://www.cse.unr.edu/CVL

a simple model of image formation
A Simple model of image formation
  • The scene is illuminated by a single source.
  • The scene reflects radiation towards the camera.
  • The camera senses the light (i.e., through solid state cells for CCD cameras)
ccd charged coupled device cameras
CCD (Charged-Coupled Device) cameras
  • Tiny solid state cells convert light energy into electric charge which is then digitized (A/D conversion).
image file formats
Image file formats
  • Many image formats adhere to the following simple model:
    • Header
    • Data (line by line, no breaks between lines)
image file formats cont
Image file formats (cont.)
  • Header contains at least:
    • A signature or “magic number” (i.e., a short sequence of bytes for identifying the file format).
    • The width and height of the image.
common image file formats
Common image file formats
  • PGM (Portable Gray Map)
  • PNG (Portable Network Graphics)
  • GIF (Graphic Interchange Format) -
  • JPEG (Joint Photographic Experts Group)
  • TIFF (Tagged Image File Format)
  • FITS (Flexible Image Transport System)
pgm format
PGM format
  • A popular format for grayscale images (8 bits/pixel)
  • Closely-related formats are:
    • PBM (Portable Bitmap), for binary images (1 bit/pixel)
    • PPM (Portable Pixelmap), for color images (24 bits/pixel)
          • ASCII or binary (raw) storage

ASCII

Binary

image class
Image Class
  • class ImageType {
  • public:
  • ImageType(); // constructor
  • ~ImageType(); // destructor
  • void getImageInfo(int&, int&, int&);
  • void setImageInfo(int, int, int);
  • void setPixelVal(int, int, int);
  • void getPixelVal(int, int, int&);
  • // more functions ...
  • private:
  • int N, M, Q; //N: # rows, M: # columns
  • int **pixelValue;
  • };
input output functions
Input / Output Functions
  • C++ routine to read the header of a PGM image:

ReadImageHeader.cpp

  • C++ routine to read a PGM image:

ReadImage.cpp

  • C++ routine to write a PGM image:

WriteImage.cpp

an example threshold cpp
An example - Threshold.cpp
  • void readImageHeader(char[], int&, int&, int&, bool&);
  • void readImage(char[], ImageType&);
  • void writeImage(char[], ImageType&);
  • void main(int argc, char *argv[])
  • {
  • int i, j, M, N, Q;
  • bool type;
  • int val, thresh;
  • // read image header
  • readImageHeader(argv[1], N, M, Q, type);
  • // allocate memory for the image array
  • ImageType image(N, M, Q);
threshold cpp cont d
Threshold.cpp (cont’d)
  • // read image
  • readImage(argv[1], image);

cout << "Enter threshold: ";

  • cin >> thresh;
  • // threshold image

for(i=0; i<N; i++)

  • for(j=0; j<M; j++) {
  • image.getVal(i, j, val);
  • if(val < thresh)
  • image.setVal(i, j, 255);
  • else
  • image.setVal(i, j, 0);
  • }
  • // write image
  • writeImage(argv[2], image);
  • }
reading writing pgm images
Reading/Writing PGM images

(2D array of int)

(1D array of unsigned char)

Use “write”

(1D array of unsigned char)

(2D array of int)

Use “read”

writing a pgm image to a file
Writing a PGM image to a file
  • void writeImage(char fname[], ImageType& image)
  • int N, M, Q;
  • unsigned char *charImage;
  • ofstream ofp;
  • image.getImageInfo(N, M, Q);
  • charImage = (unsigned char *) new unsigned char [M*N];
  • // convert integer values to unsigned char
  • int val;
  • for(i=0; i<N; i++)
  • for(j=0; j<M; j++)
  • image.getVal(i, j, val);
  • charImage[i*M+j]=(unsigned char)val;
  • }
writing a pgm image cont d
Writing a PGM image... (cont’d)
  • ofp.open(fname, ios::out | ios::binary);
  • if (!ofp) { cout << "Can\'t open file: " << fname << endl; exit(1); }
  • ofp << "P5" << endl;
  • ofp << M << " " << N << endl;
  • ofp << Q << endl;
  • ofp.write( reinterpret_cast<char *>(charImage), (M*N)*sizeof(unsigned char));
  • if (ofp.fail()) { cout << "Can\'t write image " << fname << endl; exit(0); }
  • ofp.close();
  • }
reading a pgm image from a file
Reading a PGM image from a file
  • void readImage(char fname[], ImageType& image)
  • {
  • int i, j;
  • int N, M, Q;
  • unsigned char *charImage;
  • char header [100], *ptr;
  • ifstream ifp;
  • ifp.open(fname, ios::in | ios::binary);
  • if (!ifp) {
  • cout << "Can\'t read image: " << fname << endl;
  • exit(1);
  • }
reading a pgm image from a file1
Reading a PGM image from a file
  • // read header
  • ifp.getline(header,100,\'\n\');
  • if ( (header[0]!=80) || // \'P\'
  • (header[1]!=53) ) { // \'5\'
  • cout << "Image " << fname << " is not PGM" << endl;
  • exit(1);
  • }
  • ifp.getline(header,100,\'\n\'); // skip comments
  • while(header[0]==\'#\')
  • ifp.getline(header,100,\'\n\');
  • M=strtol(header,&ptr,0); // read M, N
  • N=atoi(ptr);
reading a pgm image cont d
Reading a PGM image …. (cont’d)
  • ifp.getline(header,100,\'\n\');
  • Q=strtol(header,&ptr,0);
  • charImage = (unsigned char *) new unsigned char [M*N];
  • ifp.read( reinterpret_cast<char *>(charImage), (M*N)*sizeof(unsigned char));
  • if (ifp.fail()) {
  • cout << "Image " << fname << " has wrong size" << endl;
  • exit(1);
  • }
  • ifp.close();
reading a pgm image cont d1
Reading a PGM image…(cont’d)
  • // Convert unsigned characters to integers
  • int val;
  • for(i=0; i<N; i++)
  • for(j=0; j<M; j++) {
  • val = (int)charImage[i*M+j];
  • image.setVal(i, j, val);
  • }
  • }
how do i see images on my computer
How do I “see” images on my computer?
  • Unix/Linux: xv, gimp
  • Windows: Photoshop

Irfanview

ad