ボリュームデータから骨のモデル化を行う方法.
Ältere Kommentare anzeigen
matlab環境内で,100枚のdicom画像 二次元の骨のスライス画像(グレースケール画像)512*512を使用して,以下のモデルを作成しようとしています

自分が行ったことは,二次元スライス画像のスタックを行い,ボリュームデータを作成し,等値面を生成した後、三次元表示を行いました。しかし,望んでいるモデルとはかけ離れたものが出力され,手も足もでない状況です.どうすれば上図のように出力が可能になるのでしょうか?ご教授していただけると幸いです.宜しくお願いします.
以下に,作成したプログラムと,出力結果を以下に示します.
clear; clc; close all; % 初期化
fileFolder = fullfile(pwd); % 画像の読込み (フォルダ内の数枚の断面画像)
dcmFiles = dir(fullfile(fileFolder,'*.dcm'));
numfiles = length(dcmFiles);
dcm = dicomread(dcmFiles(1).name);
grayscale = zeros(size(dcm,1),size(dcm,2),numfiles);% 三次元配列への拡張
for k = 2:numfiles
grayscale(:,:,k) = dicomread(dcmFiles(k).name); %格納
end
data = cast(grayscale,'uint8');
vol = isosurface(data,100)%任意の輝度の値で等値面を作成
figure;
patch(vol, 'FaceColor','red', 'EdgeColor','none');
view(-40,24) % 視点の位置
daspect([1 1 0.3]) % X,Y,Z方向のアスペクト比の設定
colormap(gray); box on; camlight; lighting gouraud; % 照明等各種設定
sec = isocaps(data, 5); % 等値断面(等値面を作ったときの端の切断面)
patch(sec, 'FaceColor','interp', 'EdgeColor','none'); shg; % 等値断面の表示

Akzeptierte Antwort
Weitere Antworten (1)
Hiroyuki Hishida
am 14 Feb. 2020
1 Stimme
こんにちは。
どういうデータを読み込んでいるかわかりませんが、閾値の選び方の問題のように感じます。
簡単のために、骨が写っているスライス画像を1枚読み込んでみて、その画像データを histogram で輝度値の分布をみてみるのはいかがでしょうか?真っ白になっている部分≒骨の部分 とみなせると思いますので、その輝度値を確認して、isosurface を作られると良いかと思います。
もしくはですが、お使いのMATLAB のバージョンは不明ですが、volumeViewer で3次元画像を読み込み、表示方法を工夫してみるのも一つの手かと思われます。
いかがでしょうか?
菱田
Kategorien
Mehr zu ライティング、透明度、およびシェーディング finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
