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

6 次查看(过去 30 天)
沙也子 坂井
沙也子 坂井 2022-7-8
大腿骨の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 个评论
Akira Agata
Akira Agata 2022-8-20
はい、ある物体の一部を近似することも可能です。
ただしその場合、対象となる「ある物体の一部」を 3D 画像解析等によって抽出する必要があります。
どのような抽出手法が適しているかは対象データと抽出したい部分の特徴によりますが、各種 3D 画像解析法につきましては下記が参考になるかと思います。
沙也子 坂井
沙也子 坂井 2022-8-26
ありがとうございます。
参考にさせていただき検討してみます。

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 ライティング、透明度、およびシェーディング 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!