二次元画像のスタックの方法を教えていただきたいです。
Show older comments
大量の二次元画像を積み重ね、(stack)して3Dモデルとして表示したいと考えています。
イメージとしては、三次元のz軸方向をずらしながら画像を積み重ねるイメージです
画像の種類はJPEGです。
よろしくお願いします。
2 Comments
Kenta
on 25 Jul 2019
ちなみにですが、例となるようなデータなどはございますか。
イメージ的には、関数catなどで、4次元方向に積み重ねながら、下の例のようなデータを作って可視化すればよいのではないかと考えています。
I=imread('n-th_img.jpg');
s= cat(4,s,I);
Accepted Answer
More Answers (1)
virgo kk
on 26 Jul 2019
0 votes
13 Comments
Kenta
on 26 Jul 2019
[x y z]=size(td);
a=1;
for i=1:x
for j=1:y
for k=1:z
if td(x,y,z)>200
list(a,1)=x;
list(a,2)=y;
list(a,3)=z;
a=a+1;
end
end
end
end
figure;pcshow(pointCloud(list))
ありがとうございます。そのようなイメージなのですね、かなり平べったいようになると思いますが、3D点群のように見るのではどうでしょうか。はじめのコードでtdを作成したあとに、このコードを実行したら、3D表示がされませんでしょうか。対象は白く表示されるのでしょうか。ここでは輝度が200以上のボクセルのみを対象として拾っています。対象にあわせて閾値設定をしてください。
普通は、sub2indなどで、もう少し効率よく書くかと思いますが、見やすくするためにうえのように書いています。
Kenta
on 1 Aug 2019
どの行が実行できませんか?listは変数名で、関数ではありません。
pcshowが実行できないのでしょうか。もしかしたらこちらのコードが間違っている可能性もあります。詳しく状況をおしえてください
Kenta
on 1 Aug 2019
listを全てLにして、再度実行していただけますか?
virgo kk
on 1 Aug 2019
td(x,y,z)>0にしてみてはどうですか、ピクセル値は基本的に0以上ですよね?
Lが未定義です、というのは、多分ピクセル値が200以上のものはなくて、変数が作られなかったのだと思います。さきほどとはエラーの文が変わっていることから推測されます。
[x y z]=size(td);
a=1;
for i=1:x
for j=1:y
for k=1:z
if td(x,y,z)>=0
list(a,1)=x;
list(a,2)=y;
list(a,3)=z;
list(a,4)=td(x,y,z);
a=a+1;
end
end
end
end
figure;pcshow(pointCloud(list))
[x y z]=size(td);
a=1;
for i=1:x
for j=1:y
for k=1:z
if td(x,y,z)>=0
list(a,1)=i;
list(a,2)=j;
list(a,3)=k;
a=a+1;
end
end
end
end
figure;pcshow(pointCloud(list))
エラーに従い、M×3でやってみましたか?
ptCloudの変数を作って'color'で輝度値のベクトルを指定したら輝度も表示できますので
やってみてください
このリンクを見れば、輝度の表示もできます。
Kenta
on 2 Aug 2019
td(x,y,z)>=0の0という閾値を変えればよいです。今回は0以上なので全てが表示されます。実際は特定の輝度値以上のみを表示されるのですが、100くらいですかね?
virgo kk
on 2 Aug 2019
Kenta
on 2 Aug 2019
そうですね、例えば180・200・220などでもダメですか?
そのデータを扱ったことがないので、現状の情報だけではよくわかりません...
その値を変える・輝度もいれて見やすくするなど、いろいろと検討して教えてください!
Categories
Find more on Image Processing Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





