Row by Row character extraction

吃可爱长大的小学妹 提交于 2019-12-02 05:30:38

问题


I am working on handwritten character recognition from input image. Here is the code which extracts characters from input image

  %% Label connected components
  [L Ne]=bwlabel(Ifill);
  disp(Ne);
  %% Measure properties of image regions
  propied=regionprops(L,'BoundingBox');
  hold on

  %% Plot Bounding Box
  for n=1:size(propied,1)
  rectangle('Position',propied(n).BoundingBox,'EdgeColor','g','LineWidth',2)
  end
  hold off

  %% Characters being Extracted
  figure
  for n=1:Ne
  [r,c] = find(L==n);
  n1=imagen(min(r):max(r),min(c):max(c));
  imshow(~n1);
  end

But this code is extracting characters randomly from the input image. Can anyone please tell me how to extract the characters row by row?

Original code


回答1:


Assumption: There is enough separation between rows of characters, such that there is at least one image row that is completely blank between two rows of characters.

Code

%%// Input binary image
BW = Ifill;

%%// Label connected blobs
[L,NUM] = bwlabel(BW);

%%// Find centroid points for each blob
cc = bwconncomp(BW);
stats = regionprops(cc, 'Centroid');
cent_rowcol = vertcat(stats.Centroid);

%%// Find transitions of characters starts and ends along the rows
trans1 = [0 ;diff(sum(BW,2)>0)]; 

%%// Find row midpoints for each row
row_midpts = (find(trans1==1) + find(trans1==-1))/2;

%%// Find the new labels based on row by row sorting
[~,row_id] = min(abs(bsxfun(@minus,cent_rowcol(:,2),row_midpts')),[],2); %%//'
[~,sortedInd] = sort((row_id-1)*size(BW,1)+cent_rowcol(:,1));

%%// Assign the new labels
L1 = zeros(size(L));
for k=1:numel(sortedInd)
    L1(L==sortedInd(k))=k;
end

%%// Testing: Show all the characters one by one row by row
figure,
for k=1:numel(sortedInd)
    imshow(L1==k);
    pause(0.2);
end

How to use the output, L1: You can get the first character with L1==1, second with L1==2 and so on, as shown in the Testing section at the end of code.



来源:https://stackoverflow.com/questions/22922747/row-by-row-character-extraction

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!