首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于FCM (标记)的脑MRI分割

基于FCM (标记)的脑MRI分割
EN

Stack Overflow用户
提问于 2014-05-01 08:01:02
回答 1查看 1.6K关注 0票数 0

我正在使用模糊C均值进行脑MRI分割,体积图像是n个切片,我对每个切片应用FCM,输出是每个图像4个标签(灰质、白质、CSF和背景),我如何为所有切片的每个材料提供相同的标签(颜色)我正在使用matlab

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-05-01 10:34:43

假设你的FCM函数工作正常,它应该为每个切片输出相同的4个标签值,例如[0 1 2 3]。实际上,这是一个显示问题,与实际的分割无关。如果标签被输出为不同的值,那就是另一个问题。正如文档所建议的那样,这可以使用label2rgb来完成。我可能会使用以下形式:

代码语言:javascript
复制
RGB = label2rgb(L, map)

其中,map是一个colormap。如果将相同的map传递给每个切片的label2rgb调用,则返回的标签将具有相同的颜色。这也可以相对容易地实现。假设您的标签是[0,1,2,3],并且您的标签图像有一个变量labels,您可以这样做:

代码语言:javascript
复制
% //define your own custom colormap to be whatever you like
cmap = [1 1 1; ...% //white
        1 0 0; ...% //red
        0 1 0; ...% //green
        0 0 1];   % //blue
 labelVisSlice = zeros(size(labels,1),size(labels,2),3); % //make mxnx3 array
 tmp1=labelVisSlice(:,:,1);
 tmp2=labelVisSlice(:,:,2);
 tmp3=labelVisSlice(:,:,3);
 % //now loop over all the labels and fill in the colors. 
 for label=1:length(unique(labels))
    labeledVoxels = labels==label;
    % //I'm sure there is a much faster way to do this but It's not coming to mind
    tmp1(labeledVoxels)=cmap(label+1,1);
    tmp2(labeledVoxels)=cmap(label+1,2);
    tmp3(labeledVoxels)=cmap(label+1,3);
 end
 labelVisSlice=cat(3,tmp1,tmp2,tmp3);
 imagesc(labelVisSlice);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23400099

复制
相关文章

相似问题

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