1

Я уже изменил код для процесса сегментации. Код выглядит следующим образом:Как сохранить точное изображение результата сегментации (сегментация с использованием метода вертикальной проекции)?

% Preprocessing + Segmentation (VP with secondary element) 
% // Original Code of Vertical Projection for Segmentation by Soumyadeep Sinha // 
% // Modified by Ana Ainul S. : [email protected], Last modified : 14/07/16 // 
% Saving each single segmented character as one file 

function [ss] = segment (a) 
myFolder = 'D:\1. Thesis FINISH!!!\Data set'; 

%% Binarization %% 
level = graythresh (a); 
b = im2bw (a, level); 
%% Complement % 
c = imcomplement (b); 
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; 
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)); 
    s = subImage; 
    figure, imshow (s); 

    % Save each segmented characters % 
    [L,num] = bwlabel(s); 
    for z = 1 : num 
    bw= ismember(L, z); 
    % Construct filename for this particular image. 
    baseFileName = sprintf('data1.%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); 
    end 
end; 
ss = (s); 

Это дало хороший результат, но у меня есть некоторые проблемы, когда мне нужно, чтобы сохранить его в виде одного файла для каждого сегментированного изображения.

enter image description here

сегментированных символов в процессе.

Это дает мне другой результат, когда я его сохраняю.

enter image description here

Вторичный элемент, который должен быть соединиться с основной частью характера была отделена, когда я пытаюсь сохранить его. Я попытался изменить код, но до сих пор не получил решения. Мне нужно сохранить точно те же изображения, что и в программе.

Любая помощь, была бы очень признательна.

Большое вам спасибо.

+0

вы могли бы найти [этот ответ] (http://stackoverflow.com/a/37938764/1714410) связаны между собой. – Shai

ответ

1

У вас есть два различных процесса сегментирования символов в коде:
один является цикл for k = 1 : length(startingColumns) где вы правильно сегментировать по колонкам,
И второй разные сегментация подключенными компонентами (bwlabel) в верхней части Предыдущая.

Если я правильно понимаю ваши потребности, вам не нужна вторая обработка bwlabel.

for k = 1 : length(startingColumns) 
    % Get sub image of just one character... 
    subImage = i(:, startingColumns(k):endingColumns(k)); 
    s = subImage; 
    figure, imshow (s); 
    imwrite(s, fullfile(baseFolder, sprintf('data.%d.png', k))); 
end 

PS,
Удачи с тезисом;)

+1

Он работает, большое спасибо за объяснение. Это помогает. и удачи тоже, за то, что вы делаете сейчас. @Shai –

Смежные вопросы