Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何通过特定像素坐标显示连接的组件_Matlab_Image Processing_Grayscale_Connected Components - Fatal编程技术网

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

Matlab 如何通过特定像素坐标显示连接的组件,matlab,image-processing,grayscale,connected-components,Matlab,Image Processing,Grayscale,Connected Components,我有一个灰度图像add1,但是其中只有两个像素强度(0表示黑色,255表示白色)。我能够跟踪所考虑像素的坐标,即add1(I,j)。现在我想显示这个像素所属的连接组件。我已经用区域属性使用'PixelIdxList'和'pixelsist'进行了尝试,但没有成功。 有人能帮忙吗?提前谢谢。据我所知,您想要这个: clc clear all close all im = imread('labelPr

我有一个灰度图像
add1
,但是其中只有两个像素强度(0表示黑色,255表示白色)。我能够跟踪所考虑像素的坐标,即
add1(I,j)
。现在我想显示这个像素所属的连接组件。我已经用
区域属性
使用
'PixelIdxList'
'pixelsist'
进行了尝试,但没有成功。

有人能帮忙吗?提前谢谢。

据我所知,您想要这个:

            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,[])
上述执行的结果是:


如果我理解你的问题,你想要的是:给定一个特定的坐标
(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

请用一张样本图片解释你的问题,如果你不能附上图片,请为图片提供dropbox或google drive链接,除非很难给出任何建议。图像用部分红线标记(仅用于表示目的)。我想计算红线和最近连接的组件之间的距离。此:用红线标记的图像(用于表示)我想计算红线(层)和最近连接的组件之间的距离。显示此组件。我能够获得红色标记像素的像素坐标。我从这个层沿列反向传播,能够得到一个像素坐标,现在我想显示这个连接的组件,这个像素是其中的一部分。总结:我的主要目标是显示那些在红线附近小于10像素的连接组件:用红线标记的图像(用于表示)我想计算红线(层)和最近连接的组件之间的距离。显示此组件。我能够获得红色标记像素的像素坐标。我从这个层沿列反向传播,能够得到一个像素坐标,现在我想显示这个连接的组件,这个像素是其中的一部分。总结:我的主要目标是显示那些在红线层附近小于10个像素的连接组件。似乎我无法正确地解决我的问题。因为您可以找到离感兴趣像素最近(即10个像素远)的像素,您可以按照上述代码中描述的过程进行操作。从附加图像制作标签图像,现在按照与下面相同的步骤操作,当您获得第一个像素索引时,在标签图像的同一索引上找到标签编号,并按照代码(如我所写)仅保留这些标签;您正在获取的索引。我无法获取索引。例如,假设add=bwlabel(add1);图像add1(i,j)是感兴趣的像素,然后我做了rg=regionprop(add,'PixelIdxList');。现在,我应该如何访问索引并显示相应的完整连接组件。hi ema参考我在回答中发布的代码…请给它一些时间理解。出现错误:无法从非图形句柄创建使用图形的错误。显示的(第449行)图形中出现错误(imshow(add==lij,[]);%//仅选择相关标签错误可能在我的循环代码中,我正在查找它。将很快返回这里谢谢。它有点起作用了。感谢您的贡献。谢谢。再次感谢,它成功了,但我的循环中仍然存在一些错误。没有得到期望的结果,正在考虑使用其他方法。但是它成功了。谢谢分配..我目前无法投票。我将在获得结果后回来。再次感谢您。再次问候。如何将此特定标签保存在变量中,以便进一步将其用作图像并执行图像操作。我尝试过,但无法访问图像像素。然后我想用“imwrite”来写图像,然后用它,但这是最后一个选项。有更好的方法可以做到这一点。谢谢。@DrEma您可以将
lij
掩码保存到变量
mask_ij=(add==lij)中然后您可以
保存(文件名'maskij')将其写入mat文件并根据需要加载。如果将掩码保存到图像,请不要使用jpeg格式-它是一种有损格式。对索引图像使用png格式。