如何在MATLAB中基于固定图像的细节分割移动图像的一部分?

4
我目前正在处理MRI图像,每个数据集由一系列图像组成。我需要做的就是根据提供的固定图像的细节,严格使用图像配准方法分割移动图像的一部分。
我尝试过一些可用代码并进行了一些调整,但得到的只是基于固定图像的特征的扭曲变换移动图像,这是正确的,但不是我期望的结果。
为了帮助理解,这里有一些MRI图像:
固定图像: http://www.imagesup.net/?di=813896074669 移动图像: http://www.imagesup.net/?di=16138960757914 计划只将移动图像的总面积(股四头肌,内外骨部分)按照固定图像的细节进行分割,即根据固定图像边界形态地扭曲移动图像边界。
对于如何完成此操作,有什么想法/建议吗?

1
您的帖子有些超出范围;SO是用于小型响应的。您有一个图像处理(分割)问题,您可以在http://www.mathworks.com/matlabcentral找到很多代码。例如,请尝试http://www.mathworks.com/matlabcentral/fileexchange/25257-color-image-segmentation。将答案边界限制在几种可能性,然后大家会帮助您;目前问题太模糊了。 - venergiac
感谢您的回复venergiac。在来这里之前,我已经尝试了您发布链接中的所有相关代码,并进行了相应的调整,但仍然没有成功。如上所述,我正在尝试通过首先创建和注册固定图像边界(白色边框)来分割移动图像的一部分。我的想法是算法应该能够将来自这个白色边框(也可以是任何颜色)的特征与移动图像的特征(或任何相关细节)进行比较,并相应地进行分割(红色边框)。这是一个例子:http://www.imagesup.net/?di=1313896266994 - Dante
现在可能有点晚了,但我可以从赏金评论中判断出现有的答案并不足够。然而,如果您不展示您从那个答案中得到了什么,并明确指出您想要改变的具体内容,那么很难对其进行改进。 - Dennis Jaheruddin
1个回答

4

我需要做的就是分割移动图像的一部分,这绝对不是一件简单的事情。这被称为可变形模型分割,并且有很多相关文献。此外,您的固定图像与移动图像非常不同,这并没有帮助。

以下是一些初始想法,但您可能需要更详细的内容来适用于您的应用程序。

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);

结果:

enter image description here

您可以通过循环自动化处理所有图像,使每个后续的掩模变形到下一个帧。同时尝试不同的 activecontour 参数。

以下是我能想到的另一种方法:

在以下代码中,Istart 是原始固定图像,Mask 是该图像上的分割区域(您在问题中称之为“fixed”),而 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);

遮罩步骤

虽然并不完美,但这是一个开始。我认为你的主要问题在于你的遮罩包含了不同于彼此的元素(中间的那个 blob 与中间的较暗软组织)。如果我是你,我会尝试将这些结构分别分割。

祝好运!


感谢您的努力,jigg。我的问题可能对读者来说相当模糊,但这里有另一个例子,说明最终算法应该具备的能力:http://www.imagesup.net/?di=1313896332618 - Dante
@user3177422,我完全理解你想做的事情。通过改变初始形状来分割其他图像。如果activecontour无法解决您的问题,您可能需要研究区域生长算法。 - Cape Code
感谢jigg的建议,但我已经尝试过区域生长法,可能唯一能够正确完成这项任务的技术是图像配准方法,而我在这方面非常薄弱。 - Dante
@user3177422,你能提供一下你分割后的固定图像所来自的完整原始图像吗?我想我可能有一个想法。 - Cape Code
@user3177422,看到我的修改了吗?希望对你有所帮助,但我恐怕无法再在这个问题上投入更多时间了。 - Cape Code
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接