MATLAB Answers

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

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

Sign in to comment.

Accepted Answer

Kenta
Kenta on 7 Nov 2020
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 Comment
Yusaku Ohta
Yusaku Ohta on 7 Nov 2020
Kenta様
indexを作るのが鍵なのですね。
大変参考になりました。
ありがとうございます。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!