我正在Matlab中处理图像。我只想分割出恶性(癌性)肺结节。起初,我设法把肺和所有可能的结节都切掉了。

我使用了以下Matlab代码:
segM = % Segmented Lung
% Segment nodules
BW = im2bw(segM, 0.55);现在,我想应用一些过滤器来过滤所有良性(非癌变)结节。我很久以来一直在寻找解决方案,但我没有找到任何办法继续下去。
这是分割的肺:

更新:
以大于3mm的结节为恶性(癌变)。如何从图像中计算以毫米为单位的尺寸?
发布于 2014-04-19 15:36:36
在你运行这个之后:
% Segment nodules
BW = im2bw(segM, 0.55);你在BW图像中有结节。现在,为了根据大小筛选出结节,你可以在每个节点上加入一个椭圆,并检查长轴长度。要做到这一点,您可以使用区域道具并请求MajorAxisLength。
区域道具将检测二进制图像的所有像素组(连接组件),并返回结构数组中每个组的信息。
试着这样称呼它:
nodules = regionprops(BW, 'MajorAxisLength');它将返回一个struct数组nodules,您可以这样访问每个结核:
>> nodules(1)
ans =
MajorAxisLength: 4.6188
>> nodules(1).MajorAxisLength
ans =
4.6188这意味着第一个结节的主要长度为4.6188像素。如果你知道你的图像和真实数据的比例,你可以把这个尺寸转换成毫米。例如,假设您知道每个像素在现实世界中都等于0.4毫米。然后,您只需将该值乘以MajorAxisLength,即可获得mm值(并过滤所需的结节)。
知道,是你刚刚过滤掉的结节的位置也是有用的。您可以向regionprops查询更多数据,如Centroid或BoundingBox。也许看一看MinorAxisLength也是个好主意,以避免检测“线”为结节,或者Eccentricity值,它告诉您“有多像”一组像素。有关更多信息,请查看文档。
还请看一下另一个问题,它可能是有用的:
https://stackoverflow.com/questions/23168783
复制相似问题