1

我正在使用 Matlab 进行图像处理。我正在尝试仅分割出恶性(癌性)肺结节。最初,我设法分割出肺和所有可能的结节。

在此处输入图像描述

我使用了以下 Matlab 代码:

segM = % Segmented Lung 
% Segment nodules
BW = im2bw(segM, 0.55);

现在,我想应用一些过滤器来过滤所有良性(非癌性)结节。我一直在寻找解决方案,但我还没有找到任何方法来继续它。

这是分段的肺:

在此处输入图像描述

更新:

认为大于 3 毫米的结节是恶性的(癌性的)。如何从图像中计算以毫米为单位的尺寸?

4

1 回答 1

1

运行此之后:

% 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,它可能有用:

于 2014-04-19T15:36:36.890 回答