2016-06-04 1 views
1

я хочу сегмента горизонтальной строки символов из образа, как показано на изображениисегментация символов строки с помощью Горизонтальный профиль гистограммы

input image that i have taken histogram of taken image

clear all; 
cd('C:\Users\IFIM\Desktop\New folder\KANND_HAND_SET'); 
myFolder = 'C:\Users\IFIM\Desktop\segment'; 
[filename, pathname] = uigetfile('*.bmp','Select image to be read.'); 
i= imread(fullfile(pathname,filename)); 
i=padarray(i,[0 10]); 
verticalProjection = sum(i, 1); 
set(gcf, 'Name', 'DEMO BY SOUMYADEEP', '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)); 
[L,num] = bwlabel(subImage); 
for z= 1 : num 
bw= ismember(L, z); 
% Construct filename for this particular image. 
baseFileName = sprintf('curvedimage %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(2); 
imshow(bw); 
end; 
y=y+1; 
end; 

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

ответ

2

Вам нужно сначала немного почистить ваше изображение, чтобы упростить ситуацию. Воспользуйтесь следующим подходом:

  1. Small opening (удалите небольшие изолированные компоненты). Result
  2. Small closing (повторно подключите компоненты). Result
  3. (опционально) Связные компоненты маркировки для того, чтобы отделить каждую букву (вы, конечно, понадобится позже)
  4. Затем вы можете использовать гистограмму проекцию, которая будет гораздо легче анализировать. Вы должны увидеть столько пиков, сколько строк в вашем сигнале.
  5. (необязательно) Если гистограмма недостаточно чистая, используйте медианный фильтр, соединенный с гауссовым фильтром, чтобы смягчить и сгладить сигнал.
+0

, пожалуйста, обновите этот код так, как вам, потому что я не понимаю, что вы говорите мне, чтобы делать правильно – ayushibhatnagar

+2

Я добавил ссылки на операции MatLab и ссылки на результаты. – FiReTiTi

+0

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

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