三次元行列をslice関数でイメージ表示させたのですが、中を透過させたいです。
16 ビュー (過去 30 日間)
古いコメントを表示
添付画像のように三次元行列を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
2017 年 1 月 26 日
おそらく描画されたいのは下記で表示されるような3D表示でしょうか。
slice 関数では特定の面だけを描画していますので、そのまま AlphaData の値を操作して透過させても内部には何もありません。ですので、例えば各軸方向に100毎のスライス表示を行い、それぞれを半透明表示にすることで、内部の分布状態も見ることができるような表示にすることができるかもしれません。
冒頭のリンク先の3D描画にはこちらの関数( File Exchange: pcolor3) を使用していますが、まさに前述の複数のスライス画像を重ねて半透明表示にするという操作をやっています。ただ、R2014b 以降のバージョンでは正しく動かないとの記載も見られますが参考まで。
その他の回答 (2 件)
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
なお、ユーザ作成の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 を介して質問する、直接作者にメールする等でご対応願います。
参考
カテゴリ
Help Center および File Exchange で Lighting, Transparency, and Shading についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!