Download - Image Formation Fundamentals
![Page 1: Image Formation Fundamentals](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/1.jpg)
Image Formation Fundamentals
CS491E/791E
![Page 2: Image Formation Fundamentals](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/2.jpg)
How are images represented in the computer?
![Page 3: Image Formation Fundamentals](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/3.jpg)
Color images
![Page 4: Image Formation Fundamentals](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/9.jpg)
Image distortion
![Page 10: Image Formation Fundamentals](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/19.jpg)
Image digitization (cont’d)
![Page 20: Image Formation Fundamentals](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/25.jpg)
Comparison of image formats
![Page 26: Image Formation Fundamentals](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/31.jpg)
Reading/Writing PGM images
![Page 32: Image Formation Fundamentals](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/37.jpg)
How do I “see” images on the computer?
• Unix: xv, gimp• Windows: Photoshop
![Page 38: Image Formation Fundamentals](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/40.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062308/56812bdb550346895d904a68/html5/thumbnails/41.jpg)
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