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

9 ビュー (過去 30 日間)
沙也子 坂井
沙也子 坂井 2022 年 7 月 8 日
コメント済み: 沙也子 坂井 2022 年 8 月 26 日
大腿骨のMPR-CT画像から3Dモデルを作成し、内外側の後顆を球近似して、それぞれの球中心を結んだGCA (geometric center axis) を算出したいのですが、可能でしょうか。近似球をモデル上に描出し、また球中心の座標も求めたいです。ご教示いただけると幸甚です。

回答 (1 件)

Akira Agata
Akira Agata 2022 年 7 月 8 日
編集済み: Akira Agata 2022 年 7 月 8 日
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 件のコメント
沙也子 坂井
沙也子 坂井 2022 年 8 月 26 日
ありがとうございます。
参考にさせていただき検討してみます。

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

製品

Community Treasure Hunt

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

Start Hunting!