MATLAB Answers

0

oversegmentation of printed arabic writing

Asked by yamina jafri on 13 Apr 2017
Latest activity Commented on by Tehmina Kakar on 14 Jul 2018 at 7:08

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

  1 Comment

so, did you get your answer?

Sign in to comment.

0 Answers