AIR BORNE CHARACTER RECOGNITION SYSTEM
Project Guide
Mrs.Sundari Tribhuvanam
Project Guide Mrs.Sundari Tribhuvanam
Nithin Chandra Bharadwaj N
1AT08EC066
Naveen Kumar S 1AT08EC069
Praveen G 1AT08EC075
Srikanth N S 1AT08EC100
Abstract Character recognition system is a new concept which has
been introduced lately due to the growing demand for security
Digital imaging allows the operator to post-process the image that allows the operator to manipulate the pixel shades
Just by the movement of the hand, the characters written in plain air are identified
Introduction Computers still receive input from traditional low
bandwidth devices such as a keyboard or a mouse
These devices are inconvenient for providing high degrees-of-freedom inputs
Growing interest on Human-Computer Interaction (HCI) to develop a machine that can understand audio and visual based information
Flow Chart
Start
Initialization of Camera
Writing the character
A
A
Acquiring Frames
Frames Acquired
=42
No
A
Add Frames
A
Noise Elimination
Character Mapping
Display Character
Stop
Requirements
Dark Room for character capture
Black Screen
Hardware tools
12 MP iBall Web Camera
650nm hand-held LASER( Helium-Neon LASER admissible)
Software tools
Windows 7/Vista 32/64 operating system
Matlab 2009/2011 editions with Image Processing tool box
Webcam software to configure the device outside Matlab(only if necessary)
Image Acquisition
Properties of camera:
Frame Rate = 15 fps
Frames Per Trigger = 40
Backlight Compensation = off
Color Space = RGB
Compression=None
Capture video from camera
Convert video to frames
Obtain the number of frames
Write the frames into a structural array
S=struct('field1',values1,'field2',values2,...)
Creates a Structure array with the specified fields and values
Combine frames to form a single image
Concatenating strings
Combinedstr = strcat(s1, s2, ..., sn) horizontally concatenates strings in arrays s1, s2, ..., sn
Image Acquisition(Bright Background)
Noise Reduction Histogram Processing
Histogram of a digital image with intensity levels in the range [0,L-1] is a discrete function h(rk)=nk ,where rk is the kth intensity value and nk is the number of pixels in the image with the intensity rk.
Median Filter
The median, x, of a set of values is such that half the values in the set are less than or equal to x and half are greater than or equal to x.
The median represents the 50th percentile of a ranked set of numbers.
Noise Reduction
Line width increased using 3*3 window
Image Mapping
Read the Noise reduced image and threshold the size of the image
D = SIZE(X), for m-by-n matrix X, returns the two-element row vector D = [M,N] containing the number of rows and columns in the matrix
Convert the RGB image into a GRAY scale image
Elimination of residue noise using a 2-D median filter
B = MEDFILT2(A,[M N]) performs median filtering of the matrix A in two dimensions. Each output pixel contains the median value in the M-by-N neighborhood around the corresponding pixel in the input image
Calculate connected components
Label connected components in 2-D binary image
L = BWLABEL(BW,N) returns a matrix L, of the same size as BW containing labels for the connected components in BW
Resize the image to 42*24 pixels for character identification
Read the letter from the image and store the letter in a text document
Display the letter in the text document
Sobel operator:
z1 z2 z3
z4 z5 z6
z7 z8 z9
Gx = (z1+2z2+z3)-(z7+2z8+z9)Gy =(z1+2z4+z7)-(z3+2z6+z9)
Sobel masks
-1 -2 -1
0 0 0
1 2 1
-1 0 1
-2 0 2
-1 0 1
0 1 2
-1 0 1
-2 -1 0
BW = EDGE(I,'sobel') specifies the Sobel method.
BW = EDGE(I,'sobel',THRESH) specifies the sensitivity threshold for the Sobel method. EDGE ignores all edges that are not stronger than THRESH. If you do not specify THRESH, or if THRESH is empty ([]), EDGE chooses the value automatically.
BWLABEL Label connected components in 2-D binary image. L = BWLABEL(BW,N) returns a matrix L, of the same size as BW, containing labels for the connected components in BW. N can have a value of either 4 or 8, where 4 specifies 4-connected objects and 8 specifies 8-connected objects; if the argument is omitted, it defaults to 8.
CALCULATING THE CONNECTED COMPONENTS
BW = logical([1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 0]); L = bwlabel(BW,4) [r,c] = find(L == 2)
L =
1 1 1 0 0 0 0 0 1 1 1 0 2 2 0 0 1 1 1 0 2 2 0 0 1 1 1 0 0 0 3 0 1 1 1 0 0 0 3 0 1 1 1 0 0 0 3 0 1 1 1 0 0 3 3 0 1 1 1 0 0 0 0 0
r =
2 3 2 3
c =
5 5 6 6
text1.txt
Conclusion
Future Developments Identifying words with atleast two characters
Interfacing the final character on to a DSP processor and observing the character on an LCD Display