Title: Image Processing
1Image Processing
2What is Image Processing ?
- Image Processing is any form of signal
processing for which our input is an image, such
as photographs or frames of video and our output
can be either an image or a set of
characteristics or parameters related to the
image. -
3- Image Processing generally refers to processing
of two dimensional picture and by two dimensional
picture we implies a digital image. - A digital image is an array of real or complex
numbers represented by a finite number of bits. - But now in these days optical and analog image
processing is also possible.
4Applications
- Â Face detection
- Feature detection
- Non-photorealistic rendering
- Medical image processing
- Microscope image processing
- Morphological image processing
- Remote sensing
- Automated Sieving Procedures
- Finger print recognization
5How image processing is done ?
- Image processing can be done using various
softwares and languages such as- - Software
- Matlab
- Adobe photoshop
- Irfan view
- Language
- VHDL
- C/C
6Image processing using MATLAB
7MATLAB
- The name MATLAB stands for matrix laboratory .
It is a high-performance language for technical
computing. It is an interactive system whose
basic data element is an array which does not
require any dimensioning. This allows us to solve
many technical computing problems, especially
those with matrix and vector formulations, in a
fraction of the time.
8- MATLAB features a family of add-on
application-specific solutions called toolboxes.
These toolboxes are comprehensive collections of
matlab functions (M-files) that extend the matlab
environment to solve particular classes of
problems. Areas in which toolboxes are available
include image processing, signal processing,
control systems, neural networks, fuzzy logic,
wavelets, simulation, and many others..
9Image Processing Toolbox
10Image processing toolbox
- The Image Processing Toolbox is a collection of
functions that extend the capability of the
Matlab numeric computing environment. These
functions are written on M-files and further we
can extend the capabilities of the Image
Processing Toolbox by writing our own M-files.
This toolbox supports a wide range of image
processing operations such as..
11Operations of image processing
- Color corrections such as brightness and contrast
adjustments, quantization, or color translation
to a different color space. - Image registration, the alignment of two or more
images. - Image segmentation.
12- Neighborhood and block operations.
- Linear filtering and filter design.
- Transforms.
- High dynamic range imaging by combining multiple
images. - Deblurring.
13Image formats supported by Matlab
- The following image formats are supported by
Matlab - Â
- BMP
- HDF
- JPEG
- PCX
- TIFF
- XWB
14Types of images
- Intensity image
- This is the equivalent to a "gray scale image .
It represents an image as a matrix where every
element has a value corresponding to how
bright/dark (each element represent intensities).
- Binary image
- This image format also stores an image as a
matrix but can only color a pixel black or white
(and nothing in between). It assigns a 0 for
black and a 1 for white.
15- Indexed image
- This is a practical way of representing color
images. An indexed image stores an image as two
matrices. The first matrix has the same size as
the image and one number for each pixel. The
second matrix is called the color map and its
size may be different from the image. The numbers
in the first matrix is an instruction of what
number to use in the color map matrix.
16- RGB image
- It represents an image with three matrices of
sizes matching the image format. Each matrix
corresponds to one of the colors red, green or
blue and gives an instruction of how much of each
of these colors a certain pixel should use. A
pixel whose color components are (255,255,255) is
displayed as White. And whose color components
are (0,0,0) is displayed as Black.
17Commands for intensity Adjustment
- Histeq( ) This command is used to improve the
contrast in the image. This function spreads the
intensity values over the full range of the
image, and this process is known as histogram
equalization. - Syntax
- histeq(Image_name.format)
After
Before
18- Imadjust( ) This command is used to adjust the
contrast of the image. Imadjust increases the
contrast of the image by saturating 1 of the
data at both low and high intensities of Image
and by stretching the intensity. - Syntax
- Imadjust(image_name.format)
19Examples of imadjust
20- Adapthisteq( ) This command is used to perform
contrast-limited adaptive histogram equalization
(CLAHE). It is an alternative to function
histeq, While histeq works on the entire image,
adapthisteq operates on small regions in the
image, called tiles. - Syntax
- adapthisteq(Image_name.format)
Before
After
21Commands used for various file operations in
image processing toolbox.
- Imread( ) This command is used to read that
image on which the operation has to be done.
Imread returns the image data in the array. If
the file contains a grayscale image, then it will
return a two-dimensional (M-by-N) array and if
the file contains a color image, it will return a
three-dimensional (M-by-N-by-3) array. The class
of the returned array depends on the data type
used by the file format. - Syntax
- Imread(image_name.format)
22- Imview( ) This command is used to view the image
on the screen. And this command is always used
with the imread and imwrite command, because, it
views only that image which is under process. - Syntax
- Imview(image_name.format)
23- Result of above explained commands.
24- Imwrite( , ) This command is used to change the
format of read file. By using this command we can
change the file formats from one to another. - Syntax
- Imwrite(image_name.format2,
image_name.format1) - Imfinfo( ) This command is used to obtain the
information about the image under process. It is
used to obtain information such as size, position
of pixels, number of rows and columns etc. - Syntax
- Iminfo(image_name.format)
25- Imsubtract( , ) This command is used to create a
more uniform background, by subtracting the
background image from the original image. - To estimate the background image, we use
following command - backgroundimopen(Image_name.format,strel('dis
k',15)) - To see the estimated background image, type
imview(background) - Now subtract the background image from the
original image, type - imsubtract(image_name.format,background)
26- Result of the above used commands
27- Imresize( , ) This command is used to
resize the processed image. To enlarge an image,
specify a magnification factor greater than 1 in
the command. To reduce an image, specify a
magnification factor between 0 and 1 in the
command. - Syntax
- imresize(Image_name.format, value)
-
28- Image Rotation( , ) This command is used to
rotate the given image. This command accepts two
primary arguments, one is the image to be rotated
and other one is rotation angle. We have to
specify the rotation angle in degrees. If a
positive value is specified then imrotate rotates
the image counterclockwise and if a negative
value then imrotate rotates the image clockwise. - Syntax
- imrotate(Image_name.format, angle_in_degree)
29Result of the above used commands
30- Imcrop( , ) This command is used to crop the
particular image. It accepts two primary
arguments - The image to be cropped.
- The coordinates of a rectangle that defines the
crop area. - If we call imcrop without specifying the crop
rectangle, we can specify the crop rectangle
interactively. In this case, the cursor changes
to crosshairs when it is over the image. Position
the crosshairs over a corner of the crop region
and press and hold the left mouse button. When we
drag the crosshairs over the image we specify the
rectangular crop region. imcrop draws a rectangle
around the area we are selecting. When we release
the mouse button, imcrop creates a new image from
the selected region.
31Â
Syntax Imcrop(image_name.format)
After
Before
If we call imcrop with specifying the crop
rectangle, imcrop operates on the image in the
current axes.Syntax Imcrop(Image_name.format
, rect)
32- Imerode( , ) This command is used to erode the
image. This function accepts two primary
arguments - The input image to be processed (grayscale,
binary image), - A structuring element object, returned by the
strel function, or a binary matrix defining the
neighborhood of a structuring element. - Syntax
- Imerode(binary_image.format , strel)
Before
After
33- Im2bw This command is used to convert the given
image in to binary image. This command is mainly
followed by one another command i.e.
levelgraythresh(image_name.format). - Syntax
- Levelgraythresh(image_name.format)
- Bwim2bw(image_name.format, level)
-
Before
After
34- Duller This command is used to fade the image,
so that, other image on which it is overlapped
can be easily viewed. - Syntax
- Duller image_name.format
- This is the amount by which the fading is
done. - Combine This command is used to combine or
overlap the two images. This is the command on
which over all project stands. - Syntax
- Combine image1 image2.
0.5
35Image Conversions
- We can convert images in any of formats/types
described above using the following commands. - Intensity format to Indexed format. gray2ind(
)
Gray
Indexed
36- indexed format to intensity format.
ind2gray()
Indexed
Gray
37- RGB format to intensity format. rgb2gray( )
RGB
Gray
38- RGB format to indexed format. rgb2ind( )
RGB
Indexed
39IMAGE ANALYSIS
- Image analysis return information about the
structure of an image. This section describes
toolbox functions that we can use for these image
analysis techniques which includes - Edge Detection
- Boundary Tracing
- Quadtree Decomposition
40Edge Detection
- We can use the edge function to detect edges,
which are those places in an image that
correspond to object boundaries. To find edges,
this function looks for places in the image where
the intensity changes rapidly. Edge takes an
intensity image I as its input, and returns a
binary image BW of the same size as I, with 1's
where the function finds edges in I and 0's
elsewhere.
41- Canny Method
- The most powerful edge-detection method that
edge provides is the Canny method. The Canny
method differs from the other edge-detection
methods in that it uses two different thresholds
(to detect strong and weak edges), and includes
the weak edges in the output only if they are
connected to strong edges. This method is
therefore less likely than the others to be
fooled by noise, and more likely to detect true
weak edges. - Syntax
- Edge (image_name.fomat,'canny')
Before
After
42Boundary Tracing
-
- The toolbox includes two functions you can use
to find the boundaries of objects in a binary
image - Bwtraceboundary
- Bwboundaries
43- Bwtraceboundary
- The bwtraceboundary function returns the row
and column coordinates of all the pixels on the
border of an object in an image. We must specify
the location of a border pixel on the object as
the starting point for the trace. - Syntax
- boundary bwtraceboundary(binary_image,row,
col,'N')
44- Bwboundaries
- The bwboundaries function returns the row and
column coordinates of border pixels of all the
objects in an image. - Syntax
- binary_image _filled imfill(binary_image,'holes'
) - boundaries bwboundaries(binary_image _filled)
45Example of above explained commands
46Quadtree Decomposition
- Quadtree decomposition is an analysis technique
that involves subdividing an image into blocks
that are more homogeneous than the image itself.
This technique reveals information about the
structure of the image. - Syntax
- qtdecomp(Image_name.format,threshold)
-
Before
After
47Noise Removal
- Digital images are prone to a variety of types
of noise. There are several ways that noise can
be introduced into an image, depending on how the
image is created. For example - If the image is scanned from a photograph made
on film, the film grain is a source of noise.
Noise can also be the result of damage to the
film, or be introduced by the scanner itself. - If the image is acquired directly in a digital
format, the mechanism for gathering the data
(such as a CCD detector) can introduce
noise.Electronic transmission of image data can
introduce noise. - The Image Processing toolbox provides a number
of different ways to remove or reduce noise in an
image. Different methods are better for different
kinds of noise. The method which is used mostly
to remove noise is Filtering.
48Filtering
- Filtering is a technique for modifying or
enhancing an image. It is a neighborhood
operation, in which the value of any given pixel
in the output image is determined by applying
some algorithm to the values of the pixels in the
neighborhood of the corresponding input pixel. A
pixel's neighborhood is some set of pixels,
defined by their locations relative to that
pixel. Filtering is further categories as
following - Linear Filtering
- Median Filtering
- Adaptive Filtering
49Image Histogram
- An image histogram is a chart that shows the
distribution of intensities in an indexed or
intensity image. The image histogram function
imhist creates this plot by making n equally
spaced bins, each representing a range of data
values. It then calculates the number of pixels
within each range. - Syntax
- Imhist(Image_name.format)
50Histogram of a given image
51Project fingerprint Recognition
52Project Fingerprint Recognition
- Fingerprint Recognition or Fingerprint
Authentication refers to the automated method of
verifying a match between two human fingerprints.
Fingerprints are one of many forms of biometrics
used to identify an individual and verify their
identity. - Fingerprint Recognition touches on two major
classes of algorithms, one is based upon PATTERNS
and other one is based upon MINUTIA.
53Patterns of Fingerprints
- The basic patterns of fingerprint ridges
includes - - Arch pattern An arch is a pattern where the
ridges enter from one side of the finger, rise in
the center forming an arc, and then exit the
other side of the finger as shown in following
figure..
54- Loop Pattern It is a pattern where the ridges
enter from one side of a finger, form a curve,
and tend to exit from the same side they enter as
shown in the following figure..
55- Whirl Pattern It is completely different from
others. In this ridges form circularly around a
central point on the finger as shown in the
following figure..
56Minutia Features
- The major Minutia features of fingerprint ridges
includes - Ridge Ending The ridge ending is the point at
which a ridge terminates and this could be better
explained with the help of image, which is shown
below..
57- Bifurcations These are the points at which a
single ridge splits into two ridges as shown in
the following image..
58- Short ridges (or dots) These are ridges which
are significantly shorter than the average ridge
length on the fingerprint as shown in the
following image..
Short Ridge (or Dot)
59Methods of Fingerprint Recognition
- There are various methods of fingerprint
recognization using MATLAB which includes- - Overlapping or Combining.
- Comparing slopes of ridges.
- Other methods.
60Overlapping or Combining Method
61- Overlapping or Combining Method
- It is the one of the oldest technique of
fingerprint matching. In this the two images of
known fingerprints and unknown fingerprints are
overlapped and checked for similarities. Also for
recognization the position of the pixels of
combined image is matched with the other images
for the better result.
62- Basically for overlapping the images, firstly
they are converted into the binary images and
then they are overlapped. Also for improving the
results some other operation are also done like
normalization, thinning etc.. according to the
requirements.
63Program for overlapping
64- Program
- iimread('fp1.bmp')
- imview(i)
- levelgraythresh(i)
- bwim2bw(i,level)
- imview(bw)
- imview(bw)
- imshow(bw,1 0 0 0 0 1)
65- Result of the above used commands
66- i2imread('fp2.bmp')
- imview(i2)
- levelgraythresh(i)
- bw2im2bw(i2,level)
- imview(bw2)
- imview(bw2)
- imshow(bw2,1 0 0 0 0 1)
67Result of the above used commands
68- duller bw2 0.5
- imview(duller)
- combinebwduller
- imview(combine)
69Result
- From the above program, we come to know that
whether two finger prints are similar or not. - As it is clear from the above program that two
fingerprints does not overlap each other
completely. Hence these finger prints are of two
different persons.
70- Advantages
- It is the simplest method for fingerprint
authentication. - It is less time consuming method.
- It is comparatively easy to implement.
- It is an interactive method for recognizing
fingerprints. - Disadvantages
- It does not give us accurate result everytime
because it does not relates the minutia features. - We can only overlap the pictures having same
dimensions.
71Comparing slopes of ridges
72Comparing slopes of ridges
- This method is mainly used in these days for
fingerprint authentication. In this method we
compare the slopes of the ridges of two images of
fingerprints. This method is mainly based upon
matching minutia.
73Program for comparing slopes
74- Program
- Step 1 Load Image
- RGB imread('fingerprint.bmp')
- imshow(RGB)
- imview(RGB)
Original image
75- Step 2 Extract The Region Of Interest
- Â
- start_row 73
- start_col 105
- cropRGB RGB(start_row134, start_col233, )
- figure, imshow(cropRGB)
- imview(RGB)
- offsetX start_col-1
- offsetY start_row-1
Cropped image
76- Step 3 Threshold The Image
- Convert the image to black and white for
subsequent extraction of the edge coordinates
using bwtraceboundary routine. - I rgb2gray(cropRGB)
- threshold graythresh(I)
- BW im2bw(I,threshold)
- BW BW
- Figure, imshow(BW)
- i2edge(BW, 'canny')
- figure, imshow(i2)
- imview(i2)
Binary image
Canny image
77- Step 4 Find Initial Point On Each Boundary
- The bwtraceboundary routine requires that you
specify a single point on a boundary. This point
is used as the starting location for the boundary
tracing process. - dim size(i2)
- col1 40
- row1 min(find(i2(,col1)))
- row2 30
- col2 min(find(i2(row2,)))
78- Step 5 Trace The Boundaries
- boundary1 bwtraceboundary(BW, row1, col1,
'N', 8, 70) - boundary2 bwtraceboundary(i2, row2, col2,
'E', 8, 90,'counter') - figure, imshow(RGB)
- Â
- Â
-
-
- Â
- imview(RGB)
- plot(offsetXboundary1(,2),offsetYboundary1(,1)
,'g','LineWidth',2) - plot(offsetXboundary2(,2),offsetYboundary2(,1)
,'g','LineWidth',2)
Marked image
79- Step 6 Fit Lines To The Boundaries
- ab1 polyfit(boundary1(,2), boundary1(,1), 1)
- ab2 polyfit(boundary2(,2), boundary2(,1), 1)
80- Step 7 Find The Angle Of Intersection
- Use the dot product to find the angle.
- vect1 1 ab1(1)
- vect2 1 ab2(1)
- dp dot(vect1, vect2)
- length1 sqrt(sum(vect1.2))
- length2 sqrt(sum(vect2.2))
- angle 180-acos(dp/(length1length2))180/pi
81Result of all used command in program
82Result
- Angle between the marked ridges of image is
142.0786 .
83- Advantages
- This one is more accurate than the overlapping
method because it is based upon minutia. - It is an interactive method for recognizing
fingerprints. - Disadvantages
- It is more time consuming as compared to the
former. - More complex program.