运行此之后:
% Segment nodules
BW = im2bw(segM, 0.55);
您在 BW 图像中有结节。现在,要根据大小过滤掉结节,您可以在每个节点上拟合一个椭圆并检查主轴长度。为此,您可以使用regionprops并要求MajorAxisLength
.
Region props 将检测二进制图像的所有像素组(连接的组件),并在结构数组中返回有关每个组的信息。
尝试这样称呼它:
nodules = regionprops(BW, 'MajorAxisLength');
它将返回一个结构数组nodules
,您可以在其中访问每个结节,如下所示:
>> nodules(1)
ans =
MajorAxisLength: 4.6188
>> nodules(1).MajorAxisLength
ans =
4.6188
这意味着第一个结节的主要长度为 4.6188 像素。如果您知道图像与真实数据的比例,则可以将该尺寸转换为毫米。例如,假设您知道现实世界中的每个像素都等于 0.4 毫米。然后您只需将该值相乘MajorAxisLength
即可获得以 mm 为单位的值(并过滤您想要的结节)。
知道您刚刚过滤掉的结节在哪里也很有用。您可以要求regionprops
提供更多数据,例如Centroid
、 或BoundingBox
。也许看看MinorAxisLength
以避免将“线条”检测为结节,或者Eccentricity
告诉您“如何像圆形”一组像素的值也是一个好主意。查看文档以获取更多信息。
也看看this other question,它可能有用: