Image ismember找不到bwlabel生成的数字
以下是steve的帖子: 我想把它应用到一个非常简单的案例中。这是我的逻辑图像,它显然有三个对象: 这是我使用的代码:Image ismember找不到bwlabel生成的数字,image,matlab,image-processing,image-segmentation,Image,Matlab,Image Processing,Image Segmentation,以下是steve的帖子: 我想把它应用到一个非常简单的案例中。这是我的逻辑图像,它显然有三个对象: 这是我使用的代码: [L_t,n_t] = bwlabel(logical_image); iii = find(L_t == 2); bbb = ismember(L_t,iii); imshow(bbb); 但是我得到的是一个空矩阵。i、 e.与原始图像大小相同但完全由0组成的逻辑图像 n\u t显示找到的3个对象。L\u t的最大值为3。那么为什么ismember找不到2呢?它不起作用,
[L_t,n_t] = bwlabel(logical_image);
iii = find(L_t == 2);
bbb = ismember(L_t,iii);
imshow(bbb);
但是我得到的是一个空矩阵。i、 e.与原始图像大小相同但完全由0
组成的逻辑图像
n\u t
显示找到的3个对象。L\u t
的最大值为3
。那么为什么ismember
找不到2呢?它不起作用,因为iii
是一个索引列表(在L\u t
中的位置L\u t==2
),而L\u t
是一个从1到3的数字。这与原始示例中的操作不同:
idx = find((100 <= area_values) & (area_values <= 1000))
在您的例子中,iii
是像素索引的列表,而不是它们的值。因此,这些值都不是1、2或3(即使在查找等于2的值时也是如此),因为它们是图像前三个像素的索引。因此,L\u t
中的任何值都与iii
中的任何值不匹配
如果您想要的只是一张仅显示第二个对象的图像,那么这就足够了:
bbb = L_t==2;
imshow(bbb)
bbb = L_t==2;
imshow(bbb)