画像の位置合わせについて
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
弘達 土亀
am 25 Jun. 2021
Kommentiert: Megumi Fukuda
am 5 Jul. 2021
2つの画像(DICOM形式)の位置合わせを行い、出力(DICOM形式)したいと考えております。
Pro_A90.dcm:装置Aで作成した90スライスの投影データ(DICOMファイル)
Pro_B90.dcm:装置Bで作成した90スライスの投影データ(DICOMファイル)
Pro_A90.dcmとPro_B90.dcmは同じ形の物のデータであります。
これらの位置合わせて、それぞれのファイルをDICOM形式で出力したいと考えております。
この処理は可能でしょうか。
ご教授頂ければと思います。
何卒宜しくお願い致します。
0 Kommentare
Akzeptierte Antwort
Megumi Fukuda
am 27 Jun. 2021
お話伺った感じですと、マルチモーダル 3 次元医用画像のレジストレーションとdicomwriteを使ってできるのではないか?と思います。「マルチモーダル 3 次元医用画像のレジストレーション」のページの例に沿って処理をしていただき、最後に出てきたものをdicomwriteで書き出すというワークフローになると思います。
もし良ければ、お手持ちのデータで上記の処理がうまくいったか、教えていただけますと大変うれしいです。よろしくお願いいたします。
0 Kommentare
Weitere Antworten (3)
弘達 土亀
am 27 Jun. 2021
1 Kommentar
Megumi Fukuda
am 27 Jun. 2021
お返事ありがとうございます。
データを見せていただかないと難しい部分もあるかもしれないですが、何か困った点や詰まった点などあれば、またお知らせください。
弘達 土亀
am 30 Jun. 2021
1 Kommentar
Megumi Fukuda
am 3 Jul. 2021
どのあたりで詰まってしまった、などありますでしょうか?
以下のコードを利用すると、ご添付いただいたファイルで位置を確認するところまでできます。
(変数名は少し変更してしまいました。分かりづらくなってしまったかもしれません)
img_orig = "pro_A90.dcm";
img_dist = "pro_B90.dcm";
hdr_orig = dicominfo(img_orig);
hdr_dist = dicominfo(img_dist);
X_orig = dicomread(hdr_orig);
X_dist = dicomread(hdr_dist);
X_orig = squeeze(X_orig);
X_dist = squeeze(X_dist);
centerOrig = size(X_orig)/2;
centerDist = size(X_dist)/2;
figure
imshowpair(X_orig(:,:,centerOrig(3)), X_dist(:,:,centerDist(3)));
ちなみに、「マルチモーダル 3 次元医用画像のレジストレーション」のサンプルについて、
[optimizer,metric] = imregconfig('multimodal');
については、
[optimizer,metric] = imregconfig('monomodal');
に書き換えたほうがいいかもしれません。
弘達 土亀
am 4 Jul. 2021
1 Kommentar
Megumi Fukuda
am 5 Jul. 2021
> この位置合わせは、90枚の投影データに全て一括で行うのはむずかしいでしょうか?
マルチモーダル 3 次元医用画像のレジストレーションにならって、DICOM画像を読み込んで(ここで画像再構成 = 128x128x90の3次元画像データにします)、読み込んだ画像に対して変換を行う、というやり方が可能です。なので、投影データ(スライス1枚分、ということかと思います。間違っていたら教えてください)90枚分に変換を行っていると言えると思います。
先日のDICOM読み取りについて、マルチモーダル3次元医用画像のレジストレーションの見本に沿った変数になるように書き換えると、以下のような感じになります。頑張ってください :)
path_moving = "pro_A90.dcm";
path_fixed = "pro_B90.dcm";
movingHeader = dicominfo(path_moving);
fixedHeader = dicominfo(path_fixed);
movingVolume = dicomread(movingHeader);
fixedVolume = dicomread(fixedHeader);
movingVolume = squeeze(movingVolume);
fixedVolume = squeeze(fixedVolume);
% ここまでで手順1のコードが書かれた最初のボックスと同じところまで進んでいますので、
% 「関数 helperVolumeRegistration は、3 次元レジストレーションの結果の質を判断するために
% 提供されている補助関数です。ビューは対話方式で回転でき、両軸は一致したまま動きます。」の
% 先からすすめてみてください。
また、処理後のデータですが、DICOMにすることも可能ですが、そのままnifti形式に保存することもできます。
Siehe auch
Kategorien
Mehr zu DICOM Format finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!