ファジー C 平均法を使用して脳 MRI セグメンテーションを行っています。ボリューム画像は n スライスで、各スライスに FCM を適用します。出力は画像ごとに 4 つのラベル (グレー マター、ホワイト マター、CSF、および背景) です。すべてのスライスの各マテリアルに同じラベル (色) を付けることができます) 私は matlab を使用しています
前もって感謝します
ファジー C 平均法を使用して脳 MRI セグメンテーションを行っています。ボリューム画像は n スライスで、各スライスに FCM を適用します。出力は画像ごとに 4 つのラベル (グレー マター、ホワイト マター、CSF、および背景) です。すべてのスライスの各マテリアルに同じラベル (色) を付けることができます) 私は matlab を使用しています
前もって感謝します
FCM 関数が正しく機能していると仮定すると、各スライスに対して同じ 4 つのラベル値が出力されます (例: ) [0 1 2 3]
。これは表示上の問題であり、実際のセグメンテーションとは関係ありません。ラベルが別の問題である異なる値として出力されている場合。これは、ドキュメントがここでlabel2rgb
示唆しているように実現できます。私はおそらくこのフォームを使用します:
RGB = label2rgb(L, map)
map はcolormapです。map
各スライスのラベルへの呼び出しに同じものを渡すlabel2rgb
と、同じ色で返されます。これも比較的簡単に実装できます。[0,1,2,3]
ラベルがあり、ラベル画像を含む変数があると仮定すると、次のlabels
ことができます。
% //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);