MPR-CTを読み込​んで3Dとし、一部を​球近似することはでき​ますか?

9 views (last 30 days)
沙也子 坂井
沙也子 坂井 on 8 Jul 2022
Commented: 沙也子 坂井 on 26 Aug 2022
大腿骨のMPR-CT画像から3Dモデルを作成し、内外側の後顆を球近似して、それぞれの球中心を結んだGCA (geometric center axis) を算出したいのですが、可能でしょうか。近似球をモデル上に描出し、また球中心の座標も求めたいです。ご教示いただけると幸甚です。

Answers (1)

Akira Agata
Akira Agata on 8 Jul 2022
Edited: Akira Agata on 8 Jul 2022
MPR-CT画像から既に 3D モデルは作成済みだと想定します。
3D モデルが 3次元のバイナリイメージの形で利用可能だとすると、regionprops3 関数を使ってそれぞれの重心座標を算出できます。また、この関数でボリュームサイズも取得できますので、「近似球」を「体積が等しい球」と解釈すれば、球の公式からその半径を算出できます。すると、たとえば以下のようになりますが @沙也子 坂井 様のイメージと合ってますでしょうか?
% 3Dモデルを摸擬したサンプルデータ
V = false(200, 200, 200);
V(20:50, 30:80, 40:60) = true;
V(120:150, 140:160, 130:160) = true;
% 2つの物体を球で近似するための準備(重心座標と体積を取得)
tROI = regionprops3(V);
% 体積の等しい球の半径を計算
tROI.Radius = ((3*tROI.Volume)./(4*pi)).^(1/3);
% 可視化してみる
s = isosurface(V, 0.5);
figure
p = patch(s);
p.FaceColor = 'c';
p.EdgeColor = 'none';
p.FaceAlpha = 0.3;
view(3)
hold on
[x,y,z] = sphere;
for kk = 1:2
xt = x*tROI.Radius(kk) + tROI.Centroid(kk, 1);
yt = y*tROI.Radius(kk) + tROI.Centroid(kk, 2);
zt = z*tROI.Radius(kk) + tROI.Centroid(kk, 3);
h = surf(xt, yt, zt,...
'EdgeColor','none',...
'FaceColor','m',...
'FaceAlpha',0.3);
end
f = plot3(...
tROI.Centroid(:,1),tROI.Centroid(:,2),tROI.Centroid(:,3),...
'bo-','LineWidth',2);
legend([p,h,f], {'3Dモデル','球近似','GCA'})
grid on
axis equal
camlight
lighting gouraud
  3 Comments
沙也子 坂井
沙也子 坂井 on 26 Aug 2022
ありがとうございます。
参考にさせていただき検討してみます。

Sign in to comment.

Products

Community Treasure Hunt

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

Start Hunting!