Clear Filters
Clear Filters

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

7 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
Akira Agata
Akira Agata on 20 Aug 2022
はい、ある物体の一部を近似することも可能です。
ただしその場合、対象となる「ある物体の一部」を 3D 画像解析等によって抽出する必要があります。
どのような抽出手法が適しているかは対象データと抽出したい部分の特徴によりますが、各種 3D 画像解析法につきましては下記が参考になるかと思います。
沙也子 坂井
沙也子 坂井 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!