【问题标题】:How to segment part of moving image based on details from fixed image in MATLAB?如何在MATLAB中根据固定图像的细节分割部分运动图像?
【发布时间】:2014-02-01 03:42:47
【问题描述】:

我目前正在处理 MRI 图像,每个数据集都包含一系列图像。我需要做的就是根据提供的固定图像的细节,严格使用图像配准方法来分割部分运动图像。

我已经尝试了一些可用的代码并进行了一些调整,但我得到的只是一个基于固定图像特征的变形变换运动图像,这是正确的,但与我的预期不同。

为了帮助您实现这个想法,以下是其中一些 MRI 图像1

固定图像:

动态图像:

计划是根据固定图像的细节仅分割运动图像的总区域(股四头肌,内外骨部分),即根据固定图像边界在形态上扭曲运动图像的边界。

关于如何做到这一点的任何想法/建议?

1。作为新用户,我无法发布/附加超过 2 个链接/图片,但如果您需要更多图片,请告诉我。

【问题讨论】:

  • DE,您的帖子有点超出范围; SO 用于小响应。您有图像处理(分割)问题,您可以在 mathworks.com/matlabcentral 找到很多代码。例如尝试mathworks.com/matlabcentral/fileexchange/…。限制几种可能性的答案,然后伙计们会帮助你;目前这个问题太模糊了。
  • 感谢您的回复。在我去这里之前,我已经尝试了您发布的链接中的所有相关代码并相应地调整了它们,但仍然无济于事。如上所述,我试图通过首先创建和注册固定图像边界(白色边框)来分割部分运动图像。我的想法是算法应该能够将这个白色边框(也可以是任何颜色)的特征与运动图像的特征(或任何相关的细节)进行比较,并相应地进行分割(红色边框)。这是一个示例:imagesup.net/?di=1313896266994
  • 现在可能有点晚了,但我可以从赏金评论中判断现有答案是不够的。但是,如果不展示您从该答案中得到了什么并准确指出您想要与众不同的地方,就很难对其进行改进。

标签: image matlab image-processing image-segmentation


【解决方案1】:

'我所要做的就是分割运动图像的一部分',这当然不是一件小事。它被称为可变形模型的分割,并且有很多关于该主题的文献。此外,您的固定图像与移动图像有很大不同,这无济于事。

这里有一些想法可供开始,但您可能需要了解更多关于您的应用程序的细节。

I1=imread('fixed.png');
I2=imread('moving.png');

model=im2bw(I1,0.54);

imshowpair(I1,Model);

这是一个简单的阈值分割,用于隔离图像中间的那个斑点。 0.54的值是通过摆弄得到的,你当然可以更好地分割你的固定图像。

这是分割后的固定图像,紫色在里面,绿色在外面。

现在,让我们变形这个蒙版以适应移动的图像:

masked = activecontour(I2,model, 20, 'Chan-Vese');
imshowpair(I2,masked);

结果:

您可以在所有图像的循环中自动执行此操作,将每个后续蒙版变形到下一帧。也可以试试activecontour 的不同参数。

在这里编辑是我能想到的另一种方式:

在以下代码中,Istart 是原始固定图像,Mask 是该图像上的分段区域(您在问题中称为“固定”的区域),Istep 是移动图像。

我先把分割区域变成二值掩码,这不是绝对必要的:

t=graythresh(Mask);
BWmask=im2bw(Mask, t);

让我们显示蒙版的原始图像:

imshowpair(BWmask, Istart)

下一步是计算起始图像和步骤图像之间基于强度的配准:

[optimizer, metric] = imregconfig('monomodal');
optimizer.MaximumIterations = 300;

Tform=imregtform(Istart, Istep, 'affine', optimizer, metric);

并根据此变换扭曲蒙版:

WarpedMask=imwarp(BWmask, Tform, 'bicubic', 'Outputview', imref2d(size(Istart)));

现在让我们看看结果:

imshowpair(WarpedMask, Istep);

这并不完美,但它是一个开始。我认为你的主要问题是你的面具包含彼此不同的元素(中间的斑点与中间较暗的软组织)如果我在你的位置,我会尝试分别分割这些结构。

祝你好运!

【讨论】:

  • 感谢您的努力 jigg。我的查询对读者来说可能很模糊,但这里有另一个最终算法应该能够做到的例子:imagesup.net/?di=1313896332618
  • 1) 提取固定图像边界(根据上面链接中的第一张图像)并将边界混合或重叠到运动图像(第二张图像)。 2)根据固定图像的细节分割运动图像的ROI
  • 为了有效降低计算/迭代成本,我使用数据集中的一张图像作为模板(或固定图像),因为该模板中的空间信息在分割其他运动图像之前可能很有用数据集。这个固定图像也是我的 ROI,是半自动分割的,但是由于时间和精力的限制,运动图像的 ROI 应该根据固定图像的细节自动分割。这是另一个例子:imagesup.net/?di=3138970090110
  • @user3177422 是的,我完全理解你想要做什么。变形初始形状以分割其他图像。如果activecontour 不能解决您的问题,您可能需要研究区域增长算法。
  • 感谢 jigg 的输入,但我也尝试过那个(区域增长方法),可能唯一可以做到这一点的技术是通过图像配准方法,我很不擅长。
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 2017-04-20
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-21
  • 1970-01-01
相关资源
最近更新 更多