半径r1, 中心座標 (x1, y1, z1) の球体の内側のピクセルの値をゲットしたい。

2 ビュー (過去 30 日間)
Yusaku Ohta
Yusaku Ohta 2020 年 11 月 6 日
コメント済み: Yusaku Ohta 2020 年 11 月 7 日
3D画像 (xyz)内の半径r1, 中心座標 (x1, y1, z1) の球体の内側のピクセルの値をゲットしたいです。
個々のピクセルの値には興味はなく、球体内のピクセルの色強度の平均値・SDといった統計量をゲットしたいです。
球体は1つではなく数百以上あるため、効率的に定量する方法を求めています。
教えて下さい。
半径 (r1, r2, r3 ...)と中心座標 ((x1, y1, z1), (x2, y2, z2), (x3, y3, z3) ...)の値は持っています。
私の説明が不十分であればお尋ねください。
よろしくお願いします。
  2 件のコメント
Kenta
Kenta 2020 年 11 月 6 日
こんにちは、ここでいう「3D画像」とは、点群のことですか?それともボクセルやボリュームイメージ(「ピクセル」がz方向に積み重なった感じ)でしょうか?
Yusaku Ohta
Yusaku Ohta 2020 年 11 月 6 日
コメントありがとうございます。
ボクセルやボリュームイメージ(「ピクセル」がz方向に積み重なった感じ)の方です。
よろしくお願いします。

サインインしてコメントする。

採用された回答

Kenta
Kenta 2020 年 11 月 7 日
clear;clc;close all
load mri
D = squeeze(D);
volshow(D)
[x, y, z]=meshgrid([1:siz(1)],[1:siz(2)],[1:siz(3)]);
r1=10;
cx=100;
cy=50;
cz=13;
% obtain the index of the voxel, where (x-cx)^2+(y-cy)^2+(z-cz)^2<r1^2
idx=find((x(:)-cx).^2+(y(:)-cy).^2+(z(:)-cz).^2<r1^2);
% extract the values
values=D(idx);
%%%%%%%% your code %%%%%%%%
% display the ROI extraction
vol=zeros(size(D));
vol(idx)=1;
volROI=double(D).*vol;
figure;volshow(volROI)
こんにちは、上のように球の方程式をつかって、値を取り出すことができると思います。念のためコードのほうもご確認ください。
  1 件のコメント
Yusaku Ohta
Yusaku Ohta 2020 年 11 月 7 日
Kenta様
indexを作るのが鍵なのですね。
大変参考になりました。
ありがとうございます。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange3 次元ボリューム イメージの処理 についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!