<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-15924893</id><updated>2011-06-06T16:45:18.786-07:00</updated><title type='text'>Bangla OCR :: Analysis &amp; Findings</title><subtitle type='html'>This part of the blog contains our analysis and findings regarding the thesis so far&lt;br&gt;&lt;br&gt;
&lt;a href="http://banglaocr.blogspot.com"&gt;Bangla OCR :: Home&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bocranalysis.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bocranalysis.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>team, Bangla OCR</name><uri>http://www.blogger.com/profile/14441761596811699080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15924893.post-113273174830513267</id><published>2005-11-22T23:16:00.000-08:00</published><updated>2005-11-22T23:46:04.153-08:00</updated><title type='text'>skew report</title><content type='html'>please download the pdf file &lt;a href="http://geocities.com/noornawsher/archive/banglaocr/ReportofSkew.pdf"&gt;Report of Skew&lt;/a&gt; to take a look at the skew updates.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15924893-113273174830513267?l=bocranalysis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bocranalysis.blogspot.com/feeds/113273174830513267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15924893&amp;postID=113273174830513267' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/113273174830513267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/113273174830513267'/><link rel='alternate' type='text/html' href='http://bocranalysis.blogspot.com/2005/11/skew-report.html' title='skew report'/><author><name>nAwsher</name><uri>http://www.blogger.com/profile/08540113179242644261</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15924893.post-112855263761681536</id><published>2005-10-05T14:48:00.000-07:00</published><updated>2005-10-05T16:40:07.476-07:00</updated><title type='text'>Training neural network for bangla character recognition</title><content type='html'>&lt;div align="justify"&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;[::] Background:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;A network is to be designed and trained to recognize the 4 letters of the bangla alphabet (&lt;b&gt;aw&lt;/b&gt;, &lt;b&gt;ba&lt;/b&gt;, &lt;b&gt;ka&lt;/b&gt;, &lt;b&gt;ra&lt;/b&gt;).&lt;br /&gt;&lt;br /&gt;Each letter is represented as a &lt;b&gt;15 by 21&lt;/b&gt; grid of boolean values. A matrix &lt;b&gt;ALPHABET&lt;/b&gt; contains the bit maps of 4 letters of the bangla alphabet (aw, ba, ka, ra).&lt;br /&gt;&lt;br /&gt;The network receives the 315&gt; Boolean values as a &lt;b&gt;315-element input vector&lt;/b&gt;. It is then required to identify the letter by responding with a &lt;b&gt;4-element output vector&lt;/b&gt;. The 4 elements of the output vector each represent a letter.&lt;br /&gt;&lt;br /&gt;Target vectors &lt;b&gt;TARGETS&lt;/b&gt; for each letter is defined. Each target vector has 4 elements with all zeros, except for a single 1. 'aw' has a 1 in the first element, 'ba' in the second, etc.&lt;br /&gt;&lt;br /&gt;Used a &lt;b&gt;feed-forward network&lt;/b&gt; to train to recognize bangla character bit maps, in the presence of noise.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The neural network needs 315 inputs and 4 neurons in its output layer to identify the letters. The network is a &lt;b&gt;two-layer log-sigmoid / log-sigmoid network&lt;/b&gt;. The log-sigmoid transfer function was picked because its output range (0 to 1) is perfect for learning to output boolean values. The hidden (first) layer has 10 neurons. This number was picked by guesswork.&lt;br /&gt;&lt;br /&gt;The network is trained to output a 1 in the correct position of the output vector and to fill the rest of the output vector with 0’s. However, noisy input vectors may result in the network not creating perfect 1’s and 0’s. After the network is trained the output is passed through the competitive transfer function &lt;b&gt;compet&lt;/b&gt;. This makes sure that the output corresponding to the letter most like the noisy input vector takes on a value of 1, and all others have a value of 0. The result of this post-processing is the output that is actually used.&lt;br /&gt;&lt;br /&gt;To create a network that can handle noisy input vectors it had to be trained on both ideal and noisy vectors. To do this, the network was first trained on ideal vectors until it had a low sum-squared error. Then, the network was trained on 10 sets of ideal and noisy vectors. The network was trained on two copies of the noise-free alphabet at the same time as it was trained on noisy vectors. The two copies of the noise-free alphabet were used to maintain the network’s ability to classify ideal input vectors. Unfortunately, after the training described above the network might have learned to classify some difficult noisy vectors at the expense of properly classifying a noise-free vector. Therefore, the network was again trained on just ideal vectors. This ensured that the network would respond perfectly when presented with an ideal letter. All training was done using backpropagation with both adaptive learning rate and momentum with the function &lt;b&gt;trainbpx&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To test the system, all the 4 letters with noise were created and presented to the network.&lt;br /&gt;&lt;br /&gt;Script files used are:&lt;br /&gt;1) imagePreprocess2.m&lt;br /&gt;2) bocrProb2.m&lt;br /&gt;3) nnBOCR2.m&lt;br /&gt;4) vector2array.m&lt;br /&gt;5) recognitionTest.m&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;[::] Source Code:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;// imagePreprocess2.m // begin of code&lt;/b&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;%read images&lt;br /&gt;Iaw = imread('J:\MatLabWork\nn-bocr2\testImages\aw.bmp');&lt;br /&gt;Iba = imread('J:\MatLabWork\nn-bocr2\testImages\ba.bmp');&lt;br /&gt;Ika = imread('J:\MatLabWork\nn-bocr2\testImages\ka.bmp');&lt;br /&gt;Ira = imread('J:\MatLabWork\nn-bocr2\testImages\ra.bmp');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;level = graythresh(Iaw);&lt;br /&gt;bwIaw = im2bw(Iaw,level);&lt;br /&gt;&lt;br /&gt;level = graythresh(Iba);&lt;br /&gt;bwIba = im2bw(Iba,level);&lt;br /&gt;&lt;br /&gt;level = graythresh(Ika);&lt;br /&gt;bwIka = im2bw(Ika,level);&lt;br /&gt;&lt;br /&gt;level = graythresh(Ira);&lt;br /&gt;bwIra = im2bw(Ira,level);&lt;br /&gt;&lt;br /&gt;%imview(Iaw)&lt;br /&gt;%Iaw --&gt; 79x65&lt;br /&gt;&lt;br /&gt;%imview(Iba)&lt;br /&gt;%Iba --&gt; 56x64&lt;br /&gt;&lt;br /&gt;%imview(Ika)&lt;br /&gt;%Ika --&gt; 70x72&lt;br /&gt;&lt;br /&gt;%imview(Ira)&lt;br /&gt;%Ira --&gt; 56x64&lt;br /&gt;&lt;br /&gt;row = 15;&lt;br /&gt;col = 21;&lt;br /&gt;letterCount = 4;&lt;br /&gt;elements = row * col;&lt;br /&gt;&lt;br /&gt;%imresize(bwIaw,0.25);&lt;br /&gt;Jaw = imresize( bwIaw, [col row], 'bilinear');&lt;br /&gt;&lt;br /&gt;%imresize(bwIba,0.25);&lt;br /&gt;Jba = imresize( bwIba, [col row], 'bilinear' );&lt;br /&gt;&lt;br /&gt;%imresize(bwIka,0.25);&lt;br /&gt;Jka = imresize( bwIka, [col row], 'bilinear' );&lt;br /&gt;&lt;br /&gt;%imresize(bwIra,0.25);&lt;br /&gt;Jra = imresize( bwIra, [col row], 'bilinear' );&lt;/span&gt;&lt;br /&gt;&lt;b&gt;// imagePreprocess2.m // end of code&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;// bocrProb2.m // begin of code&lt;/b&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;function [alphabet,targets] = bocrProb2()&lt;br /&gt;%BOCRPROB2 Character recognition problem definition&lt;br /&gt;%&lt;br /&gt;% [ALHABET,TARGETS] = bocrProb()&lt;br /&gt;% Returns:&lt;br /&gt;% ALPHABET - 315x4 matrix of 15x21 bit maps for each letter.&lt;br /&gt;% TARGETS - 4x4 target vectors.&lt;br /&gt;&lt;br /&gt;% nAwsher&lt;br /&gt;&lt;br /&gt;letterAw = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 0 1 1 0 0 0 0 1 1 0 1 1 1 ...&lt;br /&gt;1 1 0 1 1 0 0 0 0 1 1 0 1 1 1 ...&lt;br /&gt;1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 0 1 0 0 0 1 0 1 0 1 1 1 ...&lt;br /&gt;1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 ...&lt;br /&gt;1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]';&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;letterBa = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 0 0 0 0 1 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]';&lt;br /&gt;&lt;br /&gt;letterKa = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 0 0 1 1 0 1 0 0 1 1 1 ...&lt;br /&gt;1 1 1 0 0 1 1 1 0 1 1 0 1 1 1 ...&lt;br /&gt;1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 ...&lt;br /&gt;1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 0 0 1 1 1 0 1 0 0 0 1 1 ...&lt;br /&gt;1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 0 1 0 1 0 0 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]';&lt;br /&gt;&lt;br /&gt;letterRa = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 ...&lt;br /&gt;1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...&lt;br /&gt;1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]';&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;alphabet = [letterAw,letterBa,letterKa,letterRa];&lt;br /&gt;&lt;br /&gt;targets = eye(4);&lt;/span&gt;&lt;br /&gt;&lt;b&gt;// bocrProb2.m // end of code&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;// nnBOCR2.m // begin of code&lt;/b&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;% NEWFF - Inititializes feed-forward networks.&lt;br /&gt;% TRAINGDX - Trains a feed-forward network with faster backpropagation.&lt;br /&gt;% SIM - Simulates feed-forward networks.&lt;br /&gt;&lt;br /&gt;% CHARACTER RECOGNITION:&lt;br /&gt;&lt;br /&gt;% Using the above functions a feed-forward network is trained&lt;br /&gt;% to recognize character bit maps, in the presence of noise.&lt;br /&gt;&lt;br /&gt;fprintf('% Strike any key to continue...\n');&lt;br /&gt;pause % Strike any key to continue...&lt;br /&gt;&lt;br /&gt;% DEFINING THE MODEL PROBLEM&lt;br /&gt;% ==========================&lt;br /&gt;&lt;br /&gt;% The script file bocrProb1 defines a matrix ALPHABET&lt;br /&gt;% which contains the bit maps of 4 letters of the&lt;br /&gt;% bangla alphabet (aw, ba, ka, ra).&lt;br /&gt;&lt;br /&gt;% This file also defines target vectors TARGETS for&lt;br /&gt;% each letter. Each target vector has 4 elements with&lt;br /&gt;% all zeros, except for a single 1. Aw has a 1 in the&lt;br /&gt;% first element, Ba in the second, etc.&lt;br /&gt;&lt;br /&gt;[alphabet,targets] = bocrProb2;&lt;br /&gt;%[alphabet,targets] = bocrProb2(Jaw,Jba,Jka,Jra);&lt;br /&gt;[R,Q] = size(alphabet);&lt;br /&gt;[S2,Q] = size(targets);&lt;br /&gt;&lt;br /&gt;fprintf('% Strike any key to define the network...\n');&lt;br /&gt;pause % Strike any key to define the network...&lt;br /&gt;&lt;br /&gt;% DEFINING THE NETWORK&lt;br /&gt;% ====================&lt;br /&gt;&lt;br /&gt;% The character recognition network will have 25 TANSIG&lt;br /&gt;% neurons in its hidden layer.&lt;br /&gt;&lt;br /&gt;S1 = 10;&lt;br /&gt;net = newff(minmax(alphabet),[S1 S2],{'logsig' 'logsig'},'traingdx');&lt;br /&gt;net.LW{2,1} = net.LW{2,1}*0.01;&lt;br /&gt;net.b{2} = net.b{2}*0.01;&lt;br /&gt;&lt;br /&gt;fprintf('% Strike any key to train the network...\n');&lt;br /&gt;pause % Strike any key to train the network...&lt;br /&gt;&lt;br /&gt;% TRAINING THE NETWORK WITHOUT NOISE&lt;br /&gt;% ==================================&lt;br /&gt;&lt;br /&gt;net.performFcn = 'sse'; % Sum-Squared Error performance function&lt;br /&gt;net.trainParam.goal = 0.1; % Sum-squared error goal.&lt;br /&gt;net.trainParam.show = 20; % Frequency of progress displays (in epochs).&lt;br /&gt;net.trainParam.epochs = 5000; % Maximum number of epochs to train.&lt;br /&gt;net.trainParam.mc = 0.95; % Momentum constant.&lt;br /&gt;&lt;br /&gt;% Training begins...please wait...&lt;br /&gt;&lt;br /&gt;P = alphabet;&lt;br /&gt;T = targets;&lt;br /&gt;&lt;br /&gt;[net,tr] = train(net,P,T);&lt;br /&gt;&lt;br /&gt;% ...and finally finishes.&lt;br /&gt;&lt;br /&gt;fprintf('% Strike any key to train the network with noise...\n');&lt;br /&gt;pause % Strike any key to train the network with noise...&lt;br /&gt;&lt;br /&gt;% TRAINING THE NETWORK WITH NOISE&lt;br /&gt;% ===============================&lt;br /&gt;&lt;br /&gt;% A copy of the network will now be made. This copy will&lt;br /&gt;% be trained with noisy examples of letters of the alphabet.&lt;br /&gt;&lt;br /&gt;netn = net;&lt;br /&gt;&lt;br /&gt;netn.trainParam.goal = 0.6; % Mean-squared error goal.&lt;br /&gt;netn.trainParam.epochs = 300; % Maximum number of epochs to train.&lt;br /&gt;&lt;br /&gt;% The network will be trained on 10 sets of noisy data.&lt;br /&gt;&lt;br /&gt;fprintf('% Strike any key to begin training...\n');&lt;br /&gt;pause % Strike any key to begin training...&lt;br /&gt;&lt;br /&gt;% Training begins...please wait...&lt;br /&gt;&lt;br /&gt;T = [targets targets targets targets];&lt;br /&gt;for pass = 1:10&lt;br /&gt;fprintf('Pass = %.0f\n',pass);&lt;br /&gt;P = [alphabet, alphabet, ...&lt;br /&gt;(alphabet + randn(R,Q)*0.1), ...&lt;br /&gt;(alphabet + randn(R,Q)*0.2)];&lt;br /&gt;&lt;br /&gt;[netn,tr] = train(netn,P,T);&lt;br /&gt;echo off&lt;br /&gt;end&lt;br /&gt;echo on&lt;br /&gt;&lt;br /&gt;% ...and finally finishes.&lt;br /&gt;&lt;br /&gt;fprintf('% Strike any key to finish training the network...\n');&lt;br /&gt;pause % Strike any key to finish training the network...&lt;br /&gt;&lt;br /&gt;% TRAINING THE SECOND NETWORK WITHOUT NOISE&lt;br /&gt;% =========================================&lt;br /&gt;&lt;br /&gt;% The second network is now retrained without noise to&lt;br /&gt;% insure that it correctly categorizes non-noizy letters.&lt;br /&gt;&lt;br /&gt;netn.trainParam.goal = 0.1; % Mean-squared error goal.&lt;br /&gt;netn.trainParam.epochs = 500; % Maximum number of epochs to train.&lt;br /&gt;net.trainParam.show = 5; % Frequency of progress displays (in epochs).&lt;br /&gt;&lt;br /&gt;% Training begins...please wait...&lt;br /&gt;&lt;br /&gt;P = alphabet;&lt;br /&gt;T = targets;&lt;br /&gt;&lt;br /&gt;[netn,tr] = train(netn,P,T);&lt;br /&gt;&lt;br /&gt;% ...and finally finishes.&lt;br /&gt;&lt;br /&gt;fprintf('% Strike any key to test the networks...\n');&lt;br /&gt;pause % Strike any key to test the networks...&lt;br /&gt;&lt;br /&gt;% TRAINING THE NETWORK&lt;br /&gt;% ====================&lt;br /&gt;&lt;br /&gt;% SET TESTING PARAMETERS&lt;br /&gt;noise_range = 0:.05:.5;&lt;br /&gt;max_test = 100;&lt;br /&gt;network1 = [];&lt;br /&gt;network2 = [];&lt;br /&gt;T = targets;&lt;br /&gt;&lt;br /&gt;% PERFORM THE TEST&lt;br /&gt;&lt;br /&gt;for noiselevel = noise_range&lt;br /&gt;fprintf('Testing networks with noise level of %.2f.\n',noiselevel);&lt;br /&gt;errors1 = 0;&lt;br /&gt;errors2 = 0;&lt;br /&gt;&lt;br /&gt;for i=1:max_test&lt;br /&gt;P = alphabet + randn(elements,letterCount)*noiselevel;&lt;br /&gt;&lt;br /&gt;% TEST NETWORK 1&lt;br /&gt;A = sim(net,P);&lt;br /&gt;AA = compet(A);&lt;br /&gt;errors1 = errors1 + sum(sum(abs(AA-T)))/2;&lt;br /&gt;&lt;br /&gt;% TEST NETWORK 2&lt;br /&gt;An = sim(netn,P);&lt;br /&gt;AAn = compet(An);&lt;br /&gt;errors2 = errors2 + sum(sum(abs(AAn-T)))/2;&lt;br /&gt;echo off&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;% AVERAGE ERRORS FOR 100 SETS OF 4 TARGET VECTORS.&lt;br /&gt;network1 = [network1 errors1/letterCount/100];&lt;br /&gt;network2 = [network2 errors2/letterCount/100];&lt;br /&gt;end&lt;br /&gt;echo on&lt;br /&gt;&lt;br /&gt;fprintf('% Strike any key to display the test results...\n');&lt;br /&gt;pause % Strike any key to display the test results...&lt;br /&gt;&lt;br /&gt;% DISPLAY RESULTS&lt;br /&gt;% ===============&lt;br /&gt;&lt;br /&gt;% Here is a plot showing the percentage of errors for&lt;br /&gt;% the two networks for varying levels of noise.&lt;br /&gt;&lt;br /&gt;clf&lt;br /&gt;plot(noise_range,network1*100,'--',noise_range,network2*100);&lt;br /&gt;title('Percentage of Recognition Errors');&lt;br /&gt;xlabel('Noise Level');&lt;br /&gt;ylabel('Network 1 - - Network 2 ---');&lt;br /&gt;&lt;br /&gt;% Network 1, trained without noise, has more errors due&lt;br /&gt;% to noise than does Network 2, which was trained with noise.&lt;br /&gt;&lt;br /&gt;echo off&lt;br /&gt;disp('End of nnBOCR2')&lt;/span&gt;&lt;br /&gt;&lt;b&gt;// nnBOCR2.m // end of code&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;// vector2array.m // begin of code&lt;/b&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;function [letterArray] = vector2array(letterVector, row, col)&lt;br /&gt;&lt;br /&gt;%letterVector = letterVector';&lt;br /&gt;&lt;br /&gt;k = 1;&lt;br /&gt;for i = 1 : col&lt;br /&gt;for j = 1 : row&lt;br /&gt;letterArray(i, j) = letterVector(k);&lt;br /&gt;k = k + 1;&lt;br /&gt;end&lt;br /&gt;end&lt;/span&gt;&lt;br /&gt;&lt;b&gt;// vector2array.m // end of code&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;// recognitionTest.m // begin of code&lt;/b&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;function recognitionTest(net, row, col, alphabet, letterNum)&lt;br /&gt;&lt;br /&gt;elements = row * col;&lt;br /&gt;&lt;br /&gt;[letterArray] = vector2array(alphabet(:,letterNum), row, col);&lt;br /&gt;imshow(letterArray)&lt;br /&gt;fprintf('imshow(..) ... original letter\n');&lt;br /&gt;fprintf('% Strike any key to continue...\n');&lt;br /&gt;pause&lt;br /&gt;&lt;br /&gt;noisyLetter = alphabet(:,letterNum) + randn(elements,1) * 0.2;&lt;br /&gt;[letterArray] = vector2array(noisyLetter, row, col);&lt;br /&gt;imshow(letterArray)&lt;br /&gt;%plotchar(noisyAw);&lt;br /&gt;fprintf('imshow(..) ... noisy letter\n');&lt;br /&gt;fprintf('% Strike any key to continue...\n');&lt;br /&gt;pause&lt;br /&gt;&lt;br /&gt;A2 = sim(net,noisyLetter);&lt;br /&gt;A2 = compet(A2);&lt;br /&gt;answer = find(compet(A2) == 1);&lt;br /&gt;[letterArray] = vector2array(alphabet(:,answer), row, col);&lt;br /&gt;fprintf('imshow(..) ... recognized letter\n');&lt;br /&gt;imshow(letterArray)&lt;br /&gt;disp('End of recognitionTest')&lt;/span&gt;&lt;br /&gt;&lt;b&gt;// recognitionTest.m // end of code&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;[::] Test Cases &amp;amp; Results:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/aw3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/aw3.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;original 'aw'&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/ba2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/ba2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;original 'ba'&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/ka2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/ka2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;original 'ka'&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/ra2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/ra2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;original 'ra'&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/noisyAw.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/noisyAw.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;noisy 'aw'&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/noisyBa.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/noisyBa.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;noisy 'ba'&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/noisyKa.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/noisyKa.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;noisy 'ka'&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/noisyRa.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/noisyRa.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;noisy 'ra'&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/training%20with%20traingdx4.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/training%20with%20traingdx4.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;training with traingdx&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/percentage%20of%20recognition%20errors2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/percentage%20of%20recognition%20errors2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;percentage of error recognition&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;[::] Observation:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The training was successful. The system was able to recognize the 4 letters with noise.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;[::] Software used:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Matlab 7&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;[::] References:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;-1]&lt;br /&gt;Neural Network Toolbox&lt;br /&gt;(For Use with MATLAB)&lt;br /&gt;Howard Demuth&lt;br /&gt;Mark Beale&lt;br /&gt;Martin Hagan&lt;br /&gt;(User’s Guide Version 4) &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15924893-112855263761681536?l=bocranalysis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bocranalysis.blogspot.com/feeds/112855263761681536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15924893&amp;postID=112855263761681536' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112855263761681536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112855263761681536'/><link rel='alternate' type='text/html' href='http://bocranalysis.blogspot.com/2005/10/training-neural-network-for-bangla.html' title='Training neural network for bangla character recognition'/><author><name>nAwsher</name><uri>http://www.blogger.com/profile/08540113179242644261</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15924893.post-112574345829786362</id><published>2005-09-03T03:25:00.000-07:00</published><updated>2005-09-03T03:30:58.300-07:00</updated><title type='text'>Segmentation Test 1</title><content type='html'>test using the &lt;a href="http://bocranalysis.blogspot.com/2005/09/sample-code-segmentation.html"&gt;segmentation code&lt;/a&gt;&lt;br /&gt;MATLAB version 7.0.0&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/ittefaq1.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/ittefaq1.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: source&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/ittefaq1_histogram.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/ittefaq1_histogram.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: histogram&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/line1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/line1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: extracted line&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/line1_hist.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/line1_hist.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: histogram of extracted line&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/word1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/word1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: extracted word&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15924893-112574345829786362?l=bocranalysis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bocranalysis.blogspot.com/feeds/112574345829786362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15924893&amp;postID=112574345829786362' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112574345829786362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112574345829786362'/><link rel='alternate' type='text/html' href='http://bocranalysis.blogspot.com/2005/09/segmentation-test-1.html' title='Segmentation Test 1'/><author><name>nAwsher</name><uri>http://www.blogger.com/profile/08540113179242644261</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15924893.post-112574287892348962</id><published>2005-09-03T03:17:00.000-07:00</published><updated>2005-09-03T03:23:14.160-07:00</updated><title type='text'>Histogram Test 3</title><content type='html'>using MATLAB version 7.0.0&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/test3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/test3.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: source&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/test3_histogram.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/test3_histogram.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: histogram&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15924893-112574287892348962?l=bocranalysis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bocranalysis.blogspot.com/feeds/112574287892348962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15924893&amp;postID=112574287892348962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112574287892348962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112574287892348962'/><link rel='alternate' type='text/html' href='http://bocranalysis.blogspot.com/2005/09/histogram-test-3.html' title='Histogram Test 3'/><author><name>nAwsher</name><uri>http://www.blogger.com/profile/08540113179242644261</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15924893.post-112574216348755770</id><published>2005-09-03T02:59:00.000-07:00</published><updated>2005-09-03T03:16:51.536-07:00</updated><title type='text'>Histogram Test 2</title><content type='html'>using MATLAB version 7.0.0&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/test22.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/test22.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: source&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/test2_histogram2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/test2_histogram2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: histogram&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15924893-112574216348755770?l=bocranalysis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bocranalysis.blogspot.com/feeds/112574216348755770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15924893&amp;postID=112574216348755770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112574216348755770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112574216348755770'/><link rel='alternate' type='text/html' href='http://bocranalysis.blogspot.com/2005/09/histogram-test-2.html' title='Histogram Test 2'/><author><name>nAwsher</name><uri>http://www.blogger.com/profile/08540113179242644261</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15924893.post-112574089627311856</id><published>2005-09-03T02:41:00.000-07:00</published><updated>2005-09-03T03:15:12.993-07:00</updated><title type='text'>Histogram Test 1</title><content type='html'>using MATLAB version 7.0.0&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/test11.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/test11.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: source&lt;/p&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/3507/451/1600/test1_histogram.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/3507/451/320/test1_histogram.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;p align="center"&gt;test image: histogram&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15924893-112574089627311856?l=bocranalysis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bocranalysis.blogspot.com/feeds/112574089627311856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15924893&amp;postID=112574089627311856' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112574089627311856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112574089627311856'/><link rel='alternate' type='text/html' href='http://bocranalysis.blogspot.com/2005/09/histogram-test-1.html' title='Histogram Test 1'/><author><name>nAwsher</name><uri>http://www.blogger.com/profile/08540113179242644261</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15924893.post-112573999616567729</id><published>2005-09-03T02:12:00.000-07:00</published><updated>2005-09-03T02:33:16.170-07:00</updated><title type='text'>Sample Code: Segmentation</title><content type='html'>&lt;div align="justify"&gt;Below is the sample code we used for line &amp; word segmentation just to get a kick start of the OCR segmentation process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;%---------------------------------------------------------&lt;br /&gt;% line segmentation&lt;br /&gt;%---------------------------------------------------------&lt;br /&gt;&lt;br /&gt;I = imread('imageFileName');&lt;br /&gt;level = graythresh(I);&lt;br /&gt;bwI = im2bw(I,level);&lt;br /&gt;&lt;br /&gt;[rows cols] = size(bwI);&lt;br /&gt;&lt;br /&gt;rowI1 = sum(bwI')';&lt;br /&gt;&lt;br /&gt;for i=1:size(rowI1)&lt;br /&gt;   rowI1(i) = cols - rowI1(i);&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;plot(rowI1)&lt;br /&gt;&lt;br /&gt;[rowL, colL] = size(rowI1);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;%---------P(1,:) --&gt; row 1, all column&lt;br /&gt;l = 1;&lt;br /&gt;bool = 1;&lt;br /&gt;for k = 1 : rowL-1&lt;br /&gt;    if bool == 1&lt;br /&gt;        if rowI1(k,1) == 0 &amp; rowI1( k+1, 1) &gt; 0&lt;br /&gt;           startI(l) = k;&lt;br /&gt;           bool = 0;&lt;br /&gt;        end&lt;br /&gt;    else&lt;br /&gt;        if rowI1(k,1) &gt; 0 &amp; rowI1( k+1, 1) == 0&lt;br /&gt;            endL(l) = k;&lt;br /&gt;            bool = 1;&lt;br /&gt;            l = l + 1;&lt;br /&gt;       end&lt;br /&gt;&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clear line&lt;br /&gt;lineNo = 5;&lt;br /&gt;for i = startI(lineNo) : endL(lineNo)&lt;br /&gt;   for j = 1 : cols&lt;br /&gt;      line(i-startI(lineNo)+1,j) = bwI(i,j);&lt;br /&gt;    end    &lt;br /&gt;end&lt;br /&gt;imshow(line)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;%---------------------------------------------------------&lt;br /&gt;% word segmentation&lt;br /&gt;%---------------------------------------------------------&lt;br /&gt;&lt;br /&gt;[lineRow lineCol] = size(line);&lt;br /&gt;linePix = sum(line);&lt;br /&gt;&lt;br /&gt;for i=1:lineCol&lt;br /&gt;   linePix(i) = lineRow - linePix(i);&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;l = 1;&lt;br /&gt;bool = 1;&lt;br /&gt;for k = 1 : lineCol - 1&lt;br /&gt;    if bool == 1&lt;br /&gt;        if linePix(1,k) == 0 &amp; linePix(1,k+1) &gt; 0&lt;br /&gt;           wordStart(l) = k;&lt;br /&gt;           bool = 0;&lt;br /&gt;        end&lt;br /&gt;    else&lt;br /&gt;        if linePix(1,k) &gt; 0 &amp; linePix(1,k+1) == 0&lt;br /&gt;           wordEnd(l) = k;&lt;br /&gt;           bool = 1;&lt;br /&gt;           l = l + 1;&lt;br /&gt;        end&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;clear word&lt;br /&gt;wordNo = 2;&lt;br /&gt;for i = 1 : lineRow &lt;br /&gt;   for j = wordStart(wordNo) : wordEnd(wordNo)&lt;br /&gt;      word(i, j-wordStart(wordNo)+1) = line(i,j);&lt;br /&gt;    end    &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;imshow(word)&lt;br /&gt;&lt;br /&gt;%---------------------------------------------------------&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15924893-112573999616567729?l=bocranalysis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bocranalysis.blogspot.com/feeds/112573999616567729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15924893&amp;postID=112573999616567729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112573999616567729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15924893/posts/default/112573999616567729'/><link rel='alternate' type='text/html' href='http://bocranalysis.blogspot.com/2005/09/sample-code-segmentation.html' title='Sample Code: Segmentation'/><author><name>nAwsher</name><uri>http://www.blogger.com/profile/08540113179242644261</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
