| |
|
Slide 1 :
|
Image Processing Fundamentals CS308 Data Structures
Fall 2001 |
|
|
Slide 2 :
|
How are images represented in the computer? |
|
|
|
|
Slide 4 :
|
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. |
|
|
Slide 5 :
|
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. |
|
|
Slide 6 :
|
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. |
|
|
Slide 7 :
|
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 |
|
|
Slide 8 :
|
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 |
|
|
Slide 9 :
|
Image distortion |
|
|
Slide 10 :
|
What is light? The visible portion of the electromagnetic (EM) spectrum.
It occurs between wavelengths of approximately 400 and 700 nanometers. |
|
|
Slide 11 :
|
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. |
|
|
Slide 12 :
|
Long wavelengths Copious quantities of infrared (IR) radiation are emitted from warm objects (e.g., locate people in total darkness). |
|
|
Slide 13 :
|
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). |
|
|
Slide 14 :
|
Range images An array of distances to the objects in the scene.
They can be produced by sonar or by using laser rangefinders. |
|
|
Slide 15 :
|
Sonic images Produced by the reflection of sound waves off an object.
High sound frequencies are used to improve resolution. |
|
|
Slide 16 :
|
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. |
|
|
Slide 17 :
|
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).
|
|
|
Slide 18 :
|
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. |
|
|
Slide 19 :
|
Image digitization (cont’d) |
|
|
Slide 20 :
|
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) |
|
|
Slide 21 :
|
Image sampling (example) original image sampled by a factor of 2
sampled by a factor of 4 sampled by a factor of 8
|
|
|
Slide 22 :
|
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) |
|
|
Slide 23 :
|
Image coordinate system |
|
|
Slide 24 :
|
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. |
|
|
Slide 25 :
|
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) |
|
|
Slide 26 :
|
Comparison of image formats |
|
|
Slide 27 :
|
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 |
|
|
Slide 28 :
|
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 !
|
|
|
Slide 29 :
|
Image Class class ImageType {
public:
ImageType();
~ImageType();
// more functions ...
private:
int N, M, Q; //N: # rows, M: # columns
int **pixelValue;
};
|
|
|
Slide 30 :
|
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);
|
|
|
Slide 31 :
|
Threshold.cpp (cont’d) cout << "Enter threshold: ";
cin >> thresh;
// threshold image
for(i=0; i
|
|
|
Slide 32 :
|
Reading/Writing PGM images |
|
|
Slide 33 :
|
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
|
|
|
Slide 34 :
|
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(charImage), (M*N)*sizeof(unsigned char));
if (ofp.fail()) {
cout << "Can't write image " << fname << endl;
exit(0);
}
ofp.close();
} |
|
|
Slide 35 :
|
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);
} |
|
|
Slide 36 :
|
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(charImage), (M*N)*sizeof(unsigned char));
if (ifp.fail()) {
cout << "Image " << fname << " has wrong size" << endl;
exit(1);
}
ifp.close();
|
|
|
Slide 37 :
|
Reading a PGM image…(cont’d) //
// Convert the unsigned characters to integers
//
int val;
for(i=0; i
|
|
|
Slide 38 :
|
How do I “see” images on the computer?
Unix: xv, gimp
Windows: Photoshop |
|
|
Slide 39 :
|
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 …. |
|
|
Slide 40 :
|
How do I convert an image from one format to another?
Use xv’s “save” option
It can also convert images |
|
|
Slide 41 :
|
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) |
|
|
Slide 42 :
|
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
|
|