MATLAB Answers

0

自分で指定した数の三次元配列の三次元表示

virgo kohei さんによって質問されました 2019 年 8 月 1 日
最新アクティビティ Yoshio
さんによって 編集されました 2019 年 8 月 26 日 17:16
同じ大きさ136*190の5枚の画像を読み込んでから空の三次元配列に読み込んだ画像の値を代入してz軸の値をずらしながら、三次元行列を作りました。
この三次元を表示したいのですが、エラーを吐いてしまい前に進めない状況です。本来は自分の設定した画像枚数で表示できると思うのですが、z軸を3で指定されている状況です。エラーは3で実行すれば消えますが自分のしたいことができないです。どなたか助けて頂きたいです。宜しくお願いします。
clear;clc
td = zeros(136,190,5);
for i = 1:5
td(:,:,i) =imread(sprintf('%d.jpg',i));
end
figure;
pcshow(td);
以下エラーメッセージです。
エラー: pcshow
xyzPointsの実際のサイズは 136x190x5 ですが、サイズは MxNx3 にする必要があります。
エラー: vision.internal.pc.validateAndParseInputsXYZC (line 19)
validateattributes(xyzPoints,{'numeric'}, {'real','size',[NaN,NaN,3]},filename,'xyzPoints');
エラー: pcshow>validateAndParseInputs (line 151)
[X, Y, Z, C] = vision.internal.pc.validateAndParseInputsXYZC(mfilename, varargin{1});
エラー: pcshow (line 99)
validateAndParseInputs(varargin{:});
エラー: no1 (line 13)
pcshow(td);

  0 件のコメント

サインイン to comment.

2 件の回答

回答者: Toshinobu Shintai 2019 年 8 月 1 日
 採用された回答

pcshowはカラー画像(width, height, color)を対象としているので
うまくいかないのではないでしょうか。
imshowを用いると、それぞれの行列を白黒の画像として表示できます。
また、単にそれぞれの行列の要素を数値で見たい場合はbar3, mesh, surfなどを用いてはどうでしょうか。
添付にサンプルを作成しましたのでご確認ください。

  5 件のコメント

virgo kohei 2019 年 8 月 2 日
お世話になります。
詳しくお伝えします。
512*512の2DCTのdcmデータを切り取り部分だけで積み重ねて、3Dモデルとして表示させようと考えました。
しかし、DCMファイルでは切り取りができず、一度jpegに画像を変換してから、トリミングを行いました。
今回は、トリミングした画像を積み重ねて三次元表示する際に発生したエラーを解消したく質問をした次第です。
Toshinobu Shintai 2019 年 8 月 2 日
詳細について教えてくださいまして、ありがとうございます。
自分から関わってきておいて何なのですが、私ではもう分かりませんので他の方に期待します。
virgo kohei 2019 年 8 月 2 日
わかりました。
お答え頂いて有難うございました。

サインイン to comment.


Yoshio
回答者: Yoshio
2019 年 8 月 26 日 16:44
編集済み: Yoshio
2019 年 8 月 26 日 17:16

こちらに参考となる例があると思います。
MRIの画像表示も例もありますので、読んだ上で検討してみてください。

  0 件のコメント

サインイン to comment.