2015-07-01 3 views
3

Я пытаюсь разбить изображение на components.This мой image- enter image description hereСоотношение сторон компонентов изображения в MATLAB

Это код-

image=imread('compo1.jpg'); 
image=imresize(image,[394 464]); 
image = im2bw(image); 
image=imcomplement(image); 

[imx imy]=size(image); 
new1=zeros(imx,imy); 
compo = bwlabel(image,8) ; 
mx=max(max(compo)); 

for i=1:mx 
    [r,c] = find(compo==i); 
    new1=zeros(imx,imy); 
    rc = [r c]; 
    [sx sy]=size(rc); 


    for j=1:sx 
     x1=rc(j,1); 
     y1=rc(j,2); 
     new1(x1,y1)=1; 
    end 
    imshow(new1); 
    s = regionprops(new1, 'BoundingBox'); 
    A =(s.BoundingBox(4)/s.BoundingBox(3)) 
end 

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

+4

Вы не можете использовать 'bwlabel', поскольку он представляет собой один отдельный компонент. Что делать, если вы сначала идентифицируете все строки, например, преобразовываете Hough, а затем обрабатываете сегменты, просматривая переходы или что-то в этом роде. – kkuilla

+0

Я бы предложил вам попробовать сделать частичные производные на изображении с использованием разных масок. Первым шагом может быть разделение вертикальных горизонтальных и диагональных компонентов (с использованием разных масок). Второй шаг можно выполнить с помощью простого обнаружения края. Это идея, попробуйте разобраться. –

ответ

0

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

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