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

15 visualizzazioni (ultimi 30 giorni)
thuru
thuru il 26 Gen 2017
Commentato: thuru il 4 Feb 2017
添付画像のように三次元行列を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';

Risposta accettata

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

Accedi per commentare.

Più risposte (2)

Yoshio
Yoshio il 27 Gen 2017
簡単にお試しになるなら、これではどうでしょうか。
[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 Commento
thuru
thuru il 27 Gen 2017
ありがとうございます、上記のコードを自身のgrayscaleで試してみたのですが、側面しか表示されませんでした。。
pcolor3関数に関しまして、ありがとうございます!試してみます。

Accedi per commentare.


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

Accedi per commentare.

Categorie

Scopri di più su Lighting, Transparency, and Shading in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by