下面是两幅图像:图像1是原始图像的二进制图像,而图像2是“蒙面”图像。图像2是我为了分割目的而提取的斑点的中心部分(核)。
我的问题是,图像2中的一个斑点被移除(如移除的斑点上的灰色箭头所示),我如何让原始图像知道缺席对象因此完全删除图像1中的整个blob(用灰色箭头指出的blob)?这就像“没有核心,所以你不需要”这种去除方式。图像2是图像1的某种“种子”图像。
两幅图像中的斑点与图像1中斑点的大小不同,图像2中的斑点实际上是这些细胞的核心。
我在两张图片上使用bwconncomp
,NumObjects
在两张图片中都不同(当然是)。我如何使用该信息去那里?
请帮我一把。非常感谢!!
(我正在使用MATLAB R2013a)
答案 0 :(得分:0)
幸运的是,由于逻辑索引,这很简单。
%# label image 1
lblOne = bwlabel(image1);
%# identify labels overlapping with the seed
%# ">0" not needed if image2 is of class logical
labelsInSeed = lblOne(image2>0);
%# remove all labels not overlappign with the seed from image 1
%# ensure we're not accidentially pick up label 0 (the background)
image1cleanedUp = ismember(lblOne, labelsInSeed(labelsInSeed>0));
请注意,此方法可能会隐式执行" bwareaopen"在图像1上,因为它可能不会拾取单元外围的孤立像素。如果您不希望这种情况发生,请事先使用imclose
。