Effacer les filtres
Effacer les filtres

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

8 vues (au cours des 30 derniers jours)
thuru
thuru le 26 Jan 2017
Commenté : thuru le 4 Fév 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';
  1 commentaire
michio
michio le 26 Jan 2017

Connectez-vous pour commenter.

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (2)

Yoshio
Yoshio le 27 Jan 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 commentaire
thuru
thuru le 27 Jan 2017
ありがとうございます、上記のコードを自身のgrayscaleで試してみたのですが、側面しか表示されませんでした。。
pcolor3関数に関しまして、ありがとうございます!試してみます。

Connectez-vous pour commenter.


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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Contour Plots dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by