如何根据MATLAB中固定图像的细节分割部分运动图像?

时间:2014-01-13 11:48:58

标签: image matlab image-processing image-segmentation

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

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

为了帮助实现这个想法,这里有一些MRI图像 1

修正图片:

http://www.imagesup.net/?di=813896074669

动态影像:

http://www.imagesup.net/?di=16138960757914

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

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

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

1 个答案:

答案 0 :(得分:4)

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

以下是一些想法,但您可能需要了解应用程序的更多详细信息。

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

model=im2bw(I1,0.54);

imshowpair(I1,Model);

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

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

Segmented fixed

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

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

结果:

enter image description here

您可以沿着所有图像循环自动化,将每个后续蒙版变形到下一帧。尝试使用activecontour的不同参数。

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

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

我首先将分段区域转换为二进制掩码,这不是绝对必要的:

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

让我们显示蒙面原始图像:

imshowpair(BWmask, Istart)

masked start

下一步是计算开始和步骤图像之间基于强度的注册:

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

masked step

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

祝你好运!