Автоматическое сохранение результата сегментации - Matlab Arabic OCR

Полный код сегментации:

% 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);
Я загрузил изображения в рабочую область Matlab, чтобы сделать процесс сегментации символов для изображений слов. Пример: data (1) .png, data (2) .png и т. Д.Процесс сегментации даст несколько изображений в качестве вывода для каждого сегментированного символа. Изображения Word содержат различное количество символов, поэтому вывод также будет различным. Например, вывод сегментированного результата для image = data (1) .png становится data (1) _1.png, data (1) _2.png, data (1) _3.png и data (2) .png становятся data (2) _1.png, data (2) _2.png и так далее.

Слово изображения

В последнее время я делал это вручную, но набор данных будет больше, и это тратило время на сегментацию для одного изображения. Есть ли какие-то предложения, как мне сделать это проще и эффективнее? Получите результат для каждого сегментированного символа (по порядку).

    % 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

после использования этого кода он создает хороший результат, но только для одних данных последующие данные заменят последние. Поэтому в последнее время для каждого изображения слова я запускаю процесс сегментации один за другим и изменяю эту часть, чтобы получить соответствующий результат. Измените sprintf ('data (1).% D.png', y), чтобы он стал sprintf ('data (2).% D.png', y); и так далее.

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

Результат, на который я надеюсь. Я надеюсь, я могу получить это автоматически.

Любая помощь будет очень ценится.

Ответы на вопрос(1)

Ваш ответ на вопрос