首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Matlab中分割肺结节的最佳方法

在Matlab中分割肺结节的最佳方法
EN

Stack Overflow用户
提问于 2014-04-19 10:20:56
回答 1查看 3.8K关注 0票数 1

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

我使用了以下Matlab代码:

代码语言:javascript
复制
segM = % Segmented Lung 
% Segment nodules
BW = im2bw(segM, 0.55);

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

这是分割的肺:

更新:

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

EN

回答 1

Stack Overflow用户

发布于 2014-04-19 15:36:36

在你运行这个之后:

代码语言:javascript
复制
% Segment nodules
BW = im2bw(segM, 0.55);

你在BW图像中有结节。现在,为了根据大小筛选出结节,你可以在每个节点上加入一个椭圆,并检查长轴长度。要做到这一点,您可以使用区域道具并请求MajorAxisLength

区域道具将检测二进制图像的所有像素组(连接组件),并返回结构数组中每个组的信息。

试着这样称呼它:

代码语言:javascript
复制
nodules = regionprops(BW, 'MajorAxisLength');

它将返回一个struct数组nodules,您可以这样访问每个结核:

代码语言:javascript
复制
>> nodules(1)

ans = 

    MajorAxisLength: 4.6188

>> nodules(1).MajorAxisLength

ans =

    4.6188

这意味着第一个结节的主要长度为4.6188像素。如果你知道你的图像和真实数据的比例,你可以把这个尺寸转换成毫米。例如,假设您知道每个像素在现实世界中都等于0.4毫米。然后,您只需将该值乘以MajorAxisLength,即可获得mm值(并过滤所需的结节)。

知道是你刚刚过滤掉的结节的位置也是有用的。您可以向regionprops查询更多数据,如CentroidBoundingBox。也许看一看MinorAxisLength也是个好主意,以避免检测“线”为结节,或者Eccentricity值,它告诉您“有多像”一组像素。有关更多信息,请查看文档

还请看一下另一个问题,它可能是有用的:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23168783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档