二次元画像のスタック​の方法を教えていただ​きたいです。

조회 수: 15 (최근 30일)
virgo kk
virgo kk 2019년 7월 25일
댓글: Kenta 2019년 8월 2일
大量の二次元画像を積み重ね、(stack)して3Dモデルとして表示したいと考えています。
イメージとしては、三次元のz軸方向をずらしながら画像を積み重ねるイメージです
画像の種類はJPEGです。
よろしくお願いします。
  댓글 수: 2
Kenta
Kenta 2019년 7월 25일
ちなみにですが、例となるようなデータなどはございますか。
イメージ的には、関数catなどで、4次元方向に積み重ねながら、下の例のようなデータを作って可視化すればよいのではないかと考えています。
I=imread('n-th_img.jpg');
s= cat(4,s,I);
virgo kk
virgo kk 2019년 7월 26일
편집: virgo kk 2019년 7월 26일
返信有難うございます。データは、持ち出し不可なので詳細だけお伝えさせていただきます。データは元々拡張子dicomです。CTのスライス画像であったものをトリミング処理するために一度jpegに変換してからトリミングを行っています。画像サイズは136*190です。
以下現在までに作成しているコードです。
よろしくお願い致します。
clear;
for i=1:5
% {} = cell array
images{i} = imread(sprintf('%d.jpg',i));
I{i} = (images{i});
end
%画像の番号順読み込みループ
td = zeros(136,190,5);   % 空の三次元配列データを追加
for i = 1:5
td(136,190,i) = I(i) %空の三次元配列にz軸をずらしながら代入していく
end
%エラーメッセージ
>> no1
cell から double に変換できません。
エラー: no1 (line 11)
td(136,190,i) = I(i)

댓글을 달려면 로그인하십시오.

채택된 답변

Kenta
Kenta 2019년 7월 26일
clear;clc
td = zeros(136,190,5);  
for i = 1:5
td(:,:,i)=imread(sprintf('%d.jpg',i))
end
対象画像は5枚で、グレースケールということで正しいですか。それならばこのようにすれば読み取れると思うのですがいかがでしょうか
  댓글 수: 2
virgo kk
virgo kk 2019년 7월 26일
返信有難うございます。
ご指摘通り、対象画像5枚グレースケール画像です。
上のコードで読み取りをすることができました。有難うございます。
問題はここからで、この読み取った画像を重ねて、三次元表示で表したいというのが本題です。
イメージをお伝えすると、四角形の二次元画像をz軸にずらしながら積み重ねていくと、角柱のような図形で表せると思います。この図形を表示したいということです。
Kenta
Kenta 2019년 7월 26일
ちょうど上のようなイメージでしょうか?ここのコードに習って試せば、似たようなものは見れると思うのですが、いかがでしょうか。

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

virgo kk
virgo kk 2019년 7월 26일
ct_img_02.jpg
返信有難うございます。
少しイメージと離れていて、
上のようなCTの画像を積み重ねていくと下のような不完全ではあると思いますが、円柱になると思います。
この円柱の体積を求めるために、画像をスタックしてモデルとして表示したいです。
thumbnail.png
  댓글 수: 13
virgo kk
virgo kk 2019년 8월 2일
有難うございます。
100以上にしても上と同様の3dイメージが表示されます。
144以上などコマンドプロンプトで表示されていた配列の中身の中央値も入れてみましたが、
同様のイメージでした。
Kenta
Kenta 2019년 8월 2일
そうですね、例えば180・200・220などでもダメですか?
そのデータを扱ったことがないので、現状の情報だけではよくわかりません...
その値を変える・輝度もいれて見やすくするなど、いろいろと検討して教えてください!

댓글을 달려면 로그인하십시오.

제품

Community Treasure Hunt

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

Start Hunting!