三次元行列をslic​e関数でイメージ表示​させたのですが、中を​透過させたいです。

15 次查看(过去 30 天)
thuru
thuru 2017-1-26
评论: thuru 2017-2-4
添付画像のように三次元行列をslice関数でイメージ表示させたのですが、強度が上面しか見えなくて、中の強度が知りたいのですが透過させる方法が分かりません。AlphaDataを使用するコードが分かりません。下記のコードで作成しました。 67×67×67 uint8の画像です。
fileFolder = fullfile(pwd,'Series1'); % 画像の読込み (67枚の断面画像)
tifFiles = dir(fullfile(fileFolder,'*.tif'));
numfiles = length(tifFiles);
for k = 1:numfiles
eval(strcat('img', num2str(k),'= imread(tifFiles(k).name)'));
eval(strcat('a = img', num2str(k),';'));
eval(strcat('imgR', num2str(k),'= a(58:124, 110:176)'));
eval(strcat('b = imgR', num2str(k),';'));
eval(strcat('imgE', num2str(k), '=im2uint8(b)'));
end
for k = 1:numfiles
eval(strcat('a = imgE', num2str(k),';'));
grayscale(:,:,k) = a;
end
h = slice(double(grayscale),[1,67],[1,67],[1,67]);
h(1).EdgeColor = 'none';
h(2).EdgeColor = 'none';
h(3).EdgeColor = 'none';
h(4).EdgeColor = 'none';
h(5).EdgeColor = 'none';
h(6).EdgeColor = 'none';

采纳的回答

michio
michio 2017-1-26
おそらく描画されたいのは下記で表示されるような3D表示でしょうか。
slice 関数では特定の面だけを描画していますので、そのまま AlphaData の値を操作して透過させても内部には何もありません。ですので、例えば各軸方向に100毎のスライス表示を行い、それぞれを半透明表示にすることで、内部の分布状態も見ることができるような表示にすることができるかもしれません。
冒頭のリンク先の3D描画にはこちらの関数( File Exchange: pcolor3) を使用していますが、まさに前述の複数のスライス画像を重ねて半透明表示にするという操作をやっています。ただ、R2014b 以降のバージョンでは正しく動かないとの記載も見られますが参考まで。
  21 个评论
michio
michio 2017-1-31
色はおそらくカラーマップの変更が有効です。 下記キャプチャ画像の矢印部分で示される部分で他のカラーマップを選択してみてください。
thuru
thuru 2017-2-4
ありがとうございます! やはりNが67だとかなり重くなってしまいますね。。。

请先登录,再进行评论。

更多回答(2 个)

Yoshio
Yoshio 2017-1-27
簡単にお試しになるなら、これではどうでしょうか。
[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [.8,2];
yslice = 2;
zslice = [-2,0];
h = slice(x,y,z,v,xslice,yslice,zslice);
xlabel('X'),ylabel('Y'),zlabel('Z')
set(h,'EdgeColor','none','FaceColor','interp',...
'FaceAlpha','interp')
alpha color
alpha scaled
alpha関数に関するヘルプが https://jp.mathworks.com/help/matlab/ref/alpha.html にありますので、参考になさってください。
なお、ユーザ作成のpcolor3 関数に関しましては、こちら http://jp.mathworks.com/matlabcentral/fileexchange/49985-pcolor3/content/pcolor3/pcolor3.m からソースコードが見られますので、中身をご自身で解析するか、 http://jp.mathworks.com/matlabcentral/fileexchange/49985-pcolor3/content/pcolor3/html/pcolor3_documentation.html を介して質問する、直接作者にメールする等でご対応願います。
  1 个评论
thuru
thuru 2017-1-27
ありがとうございます、上記のコードを自身のgrayscaleで試してみたのですが、側面しか表示されませんでした。。
pcolor3関数に関しまして、ありがとうございます!試してみます。

请先登录,再进行评论。


Takuji Fukumoto
Takuji Fukumoto 2017-1-26
  1 个评论
thuru
thuru 2017-1-26
回答ありがとうございます。スライス離すことで中が見えそうですね、試してみます。

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Lighting, Transparency, and Shading 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by