oversegmentation of printed arabic writing

2 views (last 30 days)
yamina jafri
yamina jafri on 13 Apr 2017
Commented: Tehmina Kakar on 14 Jul 2018
Hello, Iam work in Matlab Arabic OCR.. in the segmentation phase, i segmente word to characters using Vertical projection method but it's suffer from over segmentation problem in some characters! any suggest of how can i solve this problem please help!
% // Original Code of Vertical Projection for Segmentation by Ana Ainul S.
%//last modofication by yamina_os
y =1;
a = imread ('text9.png');
myFolder = 'C:\Users\Aicha\Desktop\images';
%%Binarization %%
level = graythresh (a);
b = im2bw (a, level);
%%Complement %%
c = imcomplement (b);
% se = strel ('square', 1);
% c = imclose(com, se);
%%PadArray %%
i=padarray(c,[0 10]);
%%Vertical Projecttion for Character Segmentation
verticalProjection = sum(i, 1);
set(gcf, 'Name', 'Segmentation Trial', 'NumberTitle', 'Off')
subplot(2,2,1);imshow(i);
subplot(2,2,3);
plot(verticalProjection, 'b-');
grid on;
% *Defining the threshold to determine baseline area* %
threshold=max(verticalProjection)/3;
% threshold = 0;
% threshold=min(verticalProjection)/3;
% threshold = 5; % Threshold >0 used to detect the baseline of cursive characters
thresholdedProjection=verticalProjection > threshold;
count=0;
startingColumns = [];
startingColumnsIndex=0;
for j =1:length(thresholdedProjection)
if thresholdedProjection(j)
if(count>0)
startingColumnsIndex=startingColumnsIndex+1;
startingColumns(startingColumnsIndex)= j-floor(count/2);
count=0;
end
else
count=count+1;
end
end
endingColumns=[startingColumns(2:end)-1 j-floor(count/2)];
y=1;
% *Extract each region, result of segmentation process*
for k = 1 : length(startingColumns)
% Get sub image of just one character
subImage = i(:, startingColumns(k):endingColumns(k));
% im = subImage;
s = subImage;
p = bwmorph(s,'thin',Inf);
% Normalization using algorithm 2%
% p = normalization2 (t);
subplot(2,2,2);
imagesc (p);
axis equal off;
pause (0.5);
% figure,
imshow (p);
% Morphological Operation - Thinning %
% t = bwmorph(p,'thin',Inf);
n =1;
z=1
for n = 1 : length (z)
formatSpec = 'data.%d.%d.png';
baseFileName = sprintf(formatSpec, z, k);
fullFileName = fullfile(myFolder, baseFileName);
% Do the write to disk.
imwrite(p, fullFileName);
end
end

Answers (0)

Categories

Find more on Deep Learning Toolbox in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!