bwboundaries - в MATLAB-, предварительная обработка - PullRequest
0 голосов
/ 16 января 2011

Я просто хочу проследить границы на моем сером изображении.У меня проблема с получением границы региона два раза.Как я могу получить только одну границу и в центре края пикселя.В следующем примере я получил две области 4, 30. Но мне нужно только (4).Какая предварительная обработка изображения требуется для этого.

пример: см. Регион 4, 30

BW = imread('blobs.png');

[B,L,N,A] = bwboundaries(BW);

figure, imshow(BW); hold on;

colors=['b' 'g' 'r' 'c' 'm' 'y'];


for k=1:length(B)

    boundary = B{k};
    cidx = mod(k,length(colors))+1;

    plot(boundary(:,2), boundary(:,1),...

         colors(cidx),'LineWidth',2);

    %randomize text position for better visibility

    rndRow = ceil(length(boundary)/(mod(rand*k,7)+1));

    col = boundary(rndRow,2); row = boundary(rndRow,1);

    h = text(col+1, row-1, num2str(L(row,col)));

    set(h,'Color',colors(cidx),...

        'FontSize',14,'FontWeight','bold');
end

figure; spy(A);

1 Ответ

1 голос
/ 16 января 2011

Позвоните bwboundaries с опцией noholes.Это удаляет внутренние границы объектов.

Другими словами:

[B,L,N,A] = bwboundaries(BW,8,'noholes'); %# 8 is for 8-connected pixels
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...