如何通过特定像素坐标显示连接的组件

时间:2015-10-30 09:19:34

标签: matlab image-processing grayscale connected-components

我有一个灰度图像add1,但它只有两个像素强度(0表示黑色,255表示白色)。我能够跟踪我的考虑像素的坐标,即add1(i,j)。现在我想显示这个像素所属的连通分量。我已使用regionprop使用'PixelIdxList''PixelList'无效地尝试了它 请有人帮帮忙。谢谢。

2 个答案:

答案 0 :(得分:2)

据我所知,你想要这个:

            clc
            clear all
            close all

            im = imread('labelProb.png');
            im = im2bw(im);

            labelIm = bwlabel(im);
            rg = regionprops(im,'PixelIdxList','Centroid');

            figure,imshow(labelIm,[]),hold on
            for i = 1:length(rg)
                cc = rg(i).Centroid;
                text(cc(1),cc(2),['label: ',num2str(i)],'Color','b','FontSize',9)
            end
            f = getframe();
            lab = frame2im(f);
            hold off

            % suppose you want label number 3 only.

            cc = rg(3).Centroid; % this is your pixel index;
            % Extract label number through this index.
            cc = round(cc);
            labelNumber = labelIm(cc(2),cc(1));

            % create a new blank image.
            blankImage = false(size(im));

            for i = 1:length(rg)
                if i == labelNumber
                    blankImage(rg(i).PixelIdxList) = true;
                end
            end
            figure,imshow(blankImage,[])

以上执行的结果是:

enter image description here

enter image description here

enter image description here

答案 1 :(得分:1)

如果我理解你的问题,你想要的是:给定一个特定的坐标(i,j)什么是标签,以及(i,j)所属的连接组件的掩码。

add = bwlabel( add1 ); %// convert to label mask
lij = add(i,j); %// get the label to which i,j belongs to
figure;
imshow( add == lij, [] ); %// select only the relevant label