computer graphics - University of Engineering and Technology, Taxila

advertisement
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
COMPUTER GRAPHICS
&
IMAGE PROCESSING
LAB MANUAL 3
PREPARED BY:: ENGR. ALI JAVED
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
DIGITAL IMAGE FUNDAMENTALS
LAB OBJECTIVE:
The objective of this lab is to understand
1. How to read images in MATLAB
2. How to write images in MATLAB
3. How to convert images of different formats.
4. Mirror Image generation.
5. Flipped Image generation.
6. Binary image generation depending upon intensity levels
BACKGROUND MATERIAL:
Images in MATLAB and the Image Processing Toolbox
The basic data structure in MATLAB is the array, an ordered set of real or complex elements. This
object is naturally suited to the representation of images, real-valued ordered sets of color or
intensity data. MATLAB stores most images as two-dimensional arrays (i.e., matrices), in which
each element of the matrix corresponds to a single pixel in the displayed image. (Pixel is derived
from picture element and usually denotes a single dot on a computer display.)
For example, an image composed of 200 rows and 300 columns of different colored dots would
be stored in MATLAB as a 200-by-300 matrix. Some images, such as RGB, require a threedimensional array, where the first plane in the third dimension represents the red pixel intensities,
the second plane represents the green pixel intensities, and the third plane represents the blue
pixel intensities. This convention makes working with images in MATLAB similar to working with any
other type of matrix data, and makes the full power of MATLAB available for image processing
applications.
For example, you can select a single pixel from an image matrix using normal matrix
subscripting. I(2,15)
This command returns the value of the pixel at row 2, column 15 of the image I
Working with Images in MATLAB
Images are most commonly stored in MATLAB using the logical, uint8, uint16 and double data
types. You can perform many standard MATLAB array manipulations on uint8 and uint16 image
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
data, including Basic arithmetic operations, such as addition, subtraction, and multiplication.
Indexing, including logical indexing Reshaping, reordering, and concatenating Reading from and
writing to MAT-files Using relational operators Certain MATLAB functions, including the find, all,
any, conv2, convn, fft2, fftn, and sum functions, accept uint8 or uint16 data but return data in
double-precision format. Storage Classes in the Toolbox. By default, MATLAB stores most data in
arrays of class double. The data in these arrays is stored as double-precision (64-bit) floating-point
numbers. All MATLAB functions work with these arrays. For image processing, however, this data
representation is not always ideal. The number of pixels in an image can be very large; for
example, a 1000-by-1000 image has a million pixels. Since each pixel is represented by at least
one array element, this image would require about 8 megabytes of memory. To reduce memory
requirements, MATLAB supports storing image data in arrays as 8-bit or 16-bit unsigned integers,
class uint8 and uint16. These arrays require one eighth or one fourth as much memory as double
arrays.
Image Types in the Toolbox
The Image Processing Toolbox supports four basic types of images:




Indexed images
Intensity images
Binary images
RGB images
Indexed Images
An indexed image consists of a data matrix, X, and a colormap matrix, map. The data matrix can be of
class uint8, uint16, or double. The colormap matrix is an m-by-3 array of class double containing
floating-point values in the range [0,1]. Each row of map specifies the red, green, and blue
components of a single color. An indexed image uses direct mapping of pixel values to colormap
values. The color of each image pixel is determined by using the corresponding value of X as an index
into map. The value 1 points to the first row in map, the value 2 points to the second row, and so on.
A colormap is often stored with an indexed image and is automatically loaded with the image
when you use the imread function. However, you are not limited to using the default colormap--you
can use any colormap that you choose. The figure below illustrates the structure of an indexed image.
The pixels in the image are represented by integers, which are pointers (indices) to color values stored
in the colormap.
The following figure depicts an indexed image.
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
Intensity Images
An intensity image is a data matrix, I, whose values represent intensities within some range. MATLAB
stores an intensity image as a single matrix, with each element of the matrix corresponding to one
image pixel. The matrix can be of class double, uint8, or uint16.While intensity images are rarely saved
with a colormap, MATLAB uses a colormap to display them. The elements in the intensity matrix
represent various intensities, or gray levels, where the intensity 0 usually represents black and the
intensity 1, 255, or 65535 usually represents full intensity, or white.
The figure below depicts an intensity image of class double.
Binary Images
In a binary image, each pixel assumes one of only two discrete values. Essentially, these two values
correspond to on and off. A binary image is stored as a logical array of 0's (off pixels) and 1's (on
pixels). The figure below depicts a binary image.
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
RGB Images
An RGB image, sometimes referred to as a true-color image, is stored in MATLAB as an m-by-n-by-3
data array that defines red, green, and blue color components for each individual pixel. RGB images do
not use a palette. The color of each pixel is determined by the combination of the red, green, and blue
intensities stored in each color plane at the pixel's location. Graphics file formats store RGB images as
24-bit images, where the red, green, and blue components are 8 bits each. This yields a potential of 16
million colors. The precision with which a real-life image can be replicated has led to the commonly
used term true-color image.
An RGB array can be of class double, uint8, or uint16. In an RGB array of class double, each
color component is a value between 0 and 1. A pixel whose color components are (0,0,0) is displayed
as black, and a pixel whose color components are (1,1,1) is displayed as white. The three color
components for each pixel are stored along the third dimension of the data array.
For example, the red, green, and blue color components of the pixel (10,5) are stored in
RGB(10,5,1), RGB(10,5,2), and RGB(10,5,3), respectively. The following figure depicts an RGB
image of class double.
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
How to convert between different formats
The following table shows how to convert between the different formats given above.
Image
format
conversion
(Within the parenthesis you type the name of the image you wish to
convert.)
Operation:
Matlab command:
Convert between intensity/indexed/RGB format to binary format.
dither()
Convert between intensity format to indexed format.
gray2ind()
Convert between indexed format to intensity format.
ind2gray()
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
Convert between indexed format to RGB format.
ind2rgb()
Convert a regular matrix to intensity format by scaling.
mat2gray()
Convert between RGB format to intensity format.
rgb2gray()
Convert between RGB format to indexed format.
rgb2ind()
How to convert between double and uint8
When you store an image, you should store it as a uint8 image since this requires far less memory than
double. When you are processing an image (that is performing mathematical operations on an image)
you should convert it into a double. Converting back and forth between these classes is easy.
I=im2double(I);
converts an image named I from uint8 to double.
I=im2uint8(I);
converts an image named I from double to uint8.
IMPLEMENTATION DETAILS WITH RESULTS:
1. Reading Image Data
To import an image from any supported graphics image file format, in any of the
supported bit depths, use the imread function.
Syntax
A = imread(filename,fmt)
Description
A = imread(filename,fmt) reads a greyscale or color image from the file specified by the string
filename, where the string fmt specifies the format of the file. If the file is not in the current
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
directory or in a directory in the MATLAB path, specify the full pathname of the location on your
system.
2. Writing Image Data
imwrite Write image to graphics file
Syntax
imwrite(A,filename,fmt)
Example::
a=imread('pout.tif');
imwrite(a,gray(256),'b.bmp');
imshow('b.bmp')% imshow is used to display image
3. How to get no. of rows and columns of image
Function size gives the rows and columns dimension of image
[r,c]=size(a)
r=
291
c=
240
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
4. Image Display
imshow(f,g)
% f is an image array & g is no of intensity levels used to display it
imshow('pout.tif') % here by default intensity level is 256
pixval % displays the Euclidean distance between the initial and current cursor conditions
imshow(f,[low high])
Displays as black all values less than or equal to low and as white all values greater than or equal to
high
Example::
imshow(a,[100 150])
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
MIRROR IMAGE GENERATION
% this program produces mirror image of the image passed to it n also
% displays both the original and mirror image
a=imread('pout.tif');
[r,c]=size(a);
for i=1:1:r
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
k=1;
for j=c:-1:1
temp=a(i,k);
result(i,k)=a(i,j);
result(i,j)=temp;
k=k+1;
end
end
imshow(a)
figure,imshow(result)
ORIGINAL IMAGE
MIRROR IMAGE
******************************************************************
TASK 1
Write a MATLAB code that reads a gray scale image and generates the flipped image of original iamge.
Your output should be like the one given below
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA
FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING
SOFTWARE ENGINEERING DEPARTMENT
******************************************************************
ORIGINAL IMAGE
FLIPPED IMAGE
******************************************************************
TASK 2
Write a
1.
2.
3.
MATLAB code that will do the following
Read any gray scale image.
Display that image.
Again display the image such that the pixels having intensity values below than 50 will display
as black and pixels having intensity values above than 150 will display as white. And the pixels
between these will display as it is.
******************************************************************
Computer Graphics & Image Processing
7 th Term-SE
UET Taxila
Download