Segmentierungsergebnis automatisch speichern - Matlab Arabic OCR

Complete Segmentation code:

% Preprocessing + Segmentation
 % // Original Code of Segmentation by Soumyadeep Sinha with several modification by Ana//
 % Saving each  single segmented character as one file 
    function [s] = seg (a)

myFolder = 'D:\1. Thesis FINISH!!!\Simulasi I\Segmented Images';
% a = imread ('adv1.png');

% Binarization %
level = graythresh (a);
b = im2bw (a, level);

% Complement %
c = imcomplement (b);

% Morphological Operation - Dilation %
se = strel ('square', 1);
% se = strel('rectangle', [1 2]);
r = imerode(c, se); 

i=padarray(r,[0 10]);
% i=padarray(c,[0 10]);

% Morphological Operation - Dilation %
% se = strel('rectangle', [1 2]);
% se = strel ('square', 1);
% i = imerode(r, se); 

%VP
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;
t = verticalProjection;
t(t==0) = inf;
mayukh=min(t)
% 0 where there is background, 1 where there are letters
letterLocations = verticalProjection > mayukh; 
% Find Rising and falling edges
d = diff(letterLocations);
startingColumns = find(d>0);
endingColumns = find(d<0);

% Extract each region
y=1;
for k = 1 : length(startingColumns)
  % Get sub image of just one character...
  subImage = i(:, startingColumns(k):endingColumns(k)); 
   % im = subImage;
   s = subImage;
   % figure, imshow (s);

   % Normalization %
   [p] =  normalization (s); 

%  se = strel ('square', 1);
%  se = strel('rectangle', [2 1]);
%  im = imdilate(p, se); 

   % Morphological Operation - Thinning %
   im = bwmorph(p,'thin',Inf);

% Save %
[L,num] = bwlabel(im);
for z= 1 : num
    bw= ismember( L, z);
    % Construct filename for this particular image.
    baseFileName = sprintf('data.%d.png', y);
    y=y+1;
    % Prepend the folder to make the full file name.
    fullFileName = fullfile(myFolder, baseFileName);
    % Do the write to disk.
    imwrite(bw, fullFileName);
    subplot(2,2,4);
    pause(1);
    imshow(bw);
end
% y=y+1;
end;
s = (im);
Ich habe Bilder in den matlab-Arbeitsbereich geladen, um einen Zeichensegmentierungsprozess für Wortbilder durchzuführen. Beispiel: data (1) .png, data (2) .png und so weiter.Der Segmentierungsprozess gibt für jedes segmentierte Zeichen mehrere Bilder als Ausgabe aus. Wortbilder enthalten verschiedene Zeichenmengen, daher variiert auch die Ausgabe. Beispielsweise werden die Ausgabe des segmentierten Ergebnisses für image = data (1) .png zu data (1) _1.png, data (1) _2.png, data (1) _3.png und data (2) .png zu data (2) _1.png, data (2) _2.png und so weiter.

Wortbilder

In letzter Zeit habe ich es manuell gemacht, aber der Datensatz wird größer und es verschwendet so viel Zeit, die Segmentierung für eins nach dem anderen durchzuführen. Gibt es einen Vorschlag, wie ich es einfacher und effektiver machen soll? Holen Sie sich das Ergebnis für jedes segmentierte Zeichen (in Folge).

    % Save %
    [L,num] = bwlabel(im);
    for z= 1 : num
    bw= ismember( L, z);
    % Construct filename for this particular image.
    % Change basefilename for each word images %
    baseFileName = sprintf('data (1).%d.png', y);
    y=y+1;
    % Prepend the folder to make the full file name.
    fullFileName = fullfile(myFolder, baseFileName);
    % Do the write to disk.
    imwrite(bw, fullFileName);
    subplot(2,2,4);
    pause(1);
    imshow(bw);end

Nach der Verwendung dieses Codes wird ein gutes Ergebnis erzielt, aber nur für eine Daten werden die zuletzt verwendeten Daten durch die nächsten Daten ersetzt. Daher führe ich in letzter Zeit für jedes Wortbild den Segmentierungsprozess einzeln durch und ändere diesen Teil, um ein geeignetes Ergebnis zu erhalten. Ändern Sie sprintf ('data (1).% D.png', y) in sprintf ('data (2).% D.png', y); und so weiter

% Change basefilename for each word images %
    baseFileName = sprintf('data (1).%d.png', y);
    y=y+1;

Das Ergebnis, das ich hoffe. Ich hoffe, ich kann es automatisch bekommen.

Jede Hilfe wird sehr geschätzt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage