Image Formation Fundamentals

41
Image Formation Fundamentals CS491E/791E

description

Image Formation Fundamentals. CS491E/791E. How are images represented in the computer?. Color images. Image formation. There are two parts to the image formation process: - PowerPoint PPT Presentation

Transcript of Image Formation Fundamentals

Page 1: Image Formation Fundamentals

Image Formation Fundamentals

CS491E/791E

Page 2: Image Formation Fundamentals

How are images represented in the computer?

Page 3: Image Formation Fundamentals

Color images

Page 4: Image Formation Fundamentals

Image formation

• There are two parts to the image formation process:

– The geometry of image formation, which determines where in the image plane the projection of a point in the scene will be located.

– The physics of light, which determines the brightness of a point in the image plane as a function of illumination and surface properties.

Page 5: Image Formation Fundamentals

A Simple model of image formation

• The scene is illuminated by a single source.

• The scene reflects radiation towards the camera.

• The camera senses it via chemicals on film.

Page 6: Image Formation Fundamentals

Pinhole camera• This is the simplest device to form an image of a 3D scene

on a 2D surface.

• Straight rays of light pass through a “pinhole” and form an inverted image of the object on the image plane.

fXx

Z

fYy

Z

Page 7: Image Formation Fundamentals

Camera optics

• In practice, the aperture must be larger to admit more light.

• Lenses are placed to in the aperture to focus the bundle of rays from each scene point onto the corresponding point in the image plane

Page 8: Image Formation Fundamentals

Image formation (cont’d)

• Optical parameters of the lens– lens type

– focal length

– field of view

• Photometric parameters– type, intensity, and direction of illumination

– reflectance properties of the viewed surfaces

• Geometric parameters– type of projections

– position and orientation of camera in space

– perspective distortions introduced by the imaging process

Page 9: Image Formation Fundamentals

Image distortion

Page 10: Image Formation Fundamentals

What is light?

• The visible portion of the electromagnetic (EM) spectrum.

• It occurs between wavelengths of approximately 400 and 700 nanometers.

Page 11: Image Formation Fundamentals

Short wavelengths

• Different wavelengths of radiation have different properties.

• The x-ray region of the spectrum, it carries sufficient energy to penetrate a significant volume or material.

Page 12: Image Formation Fundamentals

Long wavelengths

• Copious quantities of infrared (IR) radiation are emitted from warm objects (e.g., locate people in total darkness).

Page 13: Image Formation Fundamentals

Long wavelengths (cont’d)

• “Synthetic aperture radar” (SAR) imaging techniques use an artificially generated source of microwaves to probe a scene.

• SAR is unaffected by weather conditions and clouds (e.g., has provided us images of the surface of Venus).

Page 14: Image Formation Fundamentals

Range images

• An array of distances to the objects in the scene.

• They can be produced by sonar or by using laser rangefinders.

Page 15: Image Formation Fundamentals

Sonic images

• Produced by the reflection of sound waves off an object.

• High sound frequencies are used to improve resolution.

Page 16: Image Formation Fundamentals

CCD (Charged-Coupled Device) cameras• Tiny solid state cells convert light energy into electrical

charge.

• The image plane acts as a digital memory that can be read row by row by a computer.

Page 17: Image Formation Fundamentals

Frame grabber• Usually, a CCD camera plugs into a computer board

(frame grabber).

• The frame grabber digitizes the signal and stores it in its memory (frame buffer).

Page 18: Image Formation Fundamentals

Image digitization

• Sampling means measuring the value of an image at a finite number of points.

• Quantization is the representation of the measured value at the sampled point by an integer.

Page 19: Image Formation Fundamentals

Image digitization (cont’d)

Page 20: Image Formation Fundamentals

Image quantization(example)• 256 gray levels (8bits/pixel) 32 gray levels (5 bits/pixel) 16 gray levels (4 bits/pixel)

• 8 gray levels (3 bits/pixel) 4 gray levels (2 bits/pixel) 2 gray levels (1 bit/pixel)

Page 21: Image Formation Fundamentals

Image sampling (example) original image sampled by a factor of 2

sampled by a factor of 4 sampled by a factor of 8

Page 22: Image Formation Fundamentals

Digital image• An image is represented by a rectangular array of integers.

• An integer represents the brightness or darkness of the image at that point.

• N: # of rows, M: # of columns, Q: # of gray levels– N = , M = , Q = (q is the # of bits/pixel)– Storage requirements: NxMxQ (e.g., N=M=1024, q=8, 1MB)

(0,0) (0,1) ... (0, 1)

(1,0) (1,1) ... (1, 1)

... ... ... ...

( 1,0) ( 1,1) ... ( 1, 1)

f f f M

f f f M

f N f N f N M

2 n 2m 2 q

Page 23: Image Formation Fundamentals

Image file formats

• Many image formats adhere to the simple model shown below (line by line, no breaks between lines).

• The header contains at least the width and height of the image.

• Most headers begin with a signature or “magic number” - a short sequence of bytes for identifying the file format.

Page 24: Image Formation Fundamentals

Common image file formats

• GIF (Graphic Interchange Format) - • PNG (Portable Network Graphics)• JPEG (Joint Photographic Experts Group)• TIFF (Tagged Image File Format)• PGM (Portable Gray Map)• FITS (Flexible Image Transport System)

Page 25: Image Formation Fundamentals

Comparison of image formats

Page 26: Image Formation Fundamentals

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

Page 27: Image Formation Fundamentals

ASCII vs Raw format

• ASCII format has the following advantages:– Pixel values can be examined or modified very easily using a standard text editor.

– Files in raw format cannot be modified in this way since they contain many unprintable characters.

• Raw format has the following advantages:– It is much more compact compared to the ASCII format.

– Pixel values are coded using only a single character !

Page 28: Image Formation Fundamentals

Image Class

class ImageType { public: ImageType(); ~ImageType(); // more functions ...

private: int N, M, Q; //N: # rows, M: # columns int **pixelValue; };

Page 29: Image Formation Fundamentals

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; int M, N, Q; bool type; int val; int thresh;

// read image header readImageHeader(argv[1], N, M, Q, type);

// allocate memory for the image array ImageType image(N, M, Q);

// read image readImage(argv[1], image);

Page 30: Image Formation Fundamentals

Threshold.cpp (cont’d)

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);

}

Page 31: Image Formation Fundamentals

Reading/Writing PGM images

Page 32: Image Formation Fundamentals

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 the 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; }

Page 33: Image Formation Fundamentals

Writing a PGM image... (cont’d)

ofp.open(fname, ios::out);

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();

}

Page 34: Image Formation Fundamentals

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); if (!ifp) { cout << "Can't read image: " << fname << endl; exit(1); }

// 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); }

Page 35: Image Formation Fundamentals

Reading a PGM image …. (cont’d)

ifp.getline(header,100,'\n');

while(header[0]=='#')

ifp.getline(header,100,'\n');

M=strtol(header,&ptr,0);

N=atoi(ptr);

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();

Page 36: Image Formation Fundamentals

Reading a PGM image…(cont’d)

// // Convert the 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); }

}

Page 37: Image Formation Fundamentals

How do I “see” images on the computer?

• Unix: xv, gimp• Windows: Photoshop

Page 38: Image Formation Fundamentals

How do I display an image from within my C++ program?

• Save the image into a file with a default name (e.g., tmp.pgm) using the WriteImage function.

• Put the following command in your C++ program:

system(“xv tmp.pgm”);

• This is a system call !!

• It passes the command within the quotes to the Unix operating system.

• You can execute any Unix command this way ….

Page 39: Image Formation Fundamentals

How do I convert an image from one format to another?

• Use xv’s “save” option• It can also convert images

Page 40: Image Formation Fundamentals

How do I print an image?

• Load the image using “xv”

• Save the image in “postscript” format

• Print the postscript file (e.g., lpr -Pname image.ps)

Page 41: Image Formation Fundamentals

Image processing software

• CVIPtools (Computer Vision and Image Processing tools)• Intel Open Computer Vision Library• Microsoft Vision SDL Library• Matlab• Khoros

• For more information, see– http://www.cs.unr.edu/~bebis/CS791E– http://www.cs.unr.edu/CRCD/ComputerVision/cv_resources.html