๐Ÿง  ADNI PET [ch] MONAI + Slicer ๊ธฐ๋ฐ˜ QC Visualization ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ

 ์•ž์„œ ์™„์„ฑํ•œ MONAI + Slicer + PET SUVr + ADNI Composite + 100๋ช… Batch Pipeline ์œ„์— ๊ทธ๋Œ€๋กœ ์–น๋Š”:

๐Ÿ‘‰ QC Visualization (ํ’ˆ์งˆ๊ด€๋ฆฌ ์‹œ๊ฐํ™” ์‹œ์Šคํ…œ)

์„ ๋™์ผํ•œ ํ˜•์‹(ํ˜„์žฅ SOP + ์ž๋™ํ™” ์ฝ”๋“œ + Batch ๋Œ€์‘ ๊ตฌ์กฐ)์œผ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š”:

  • Registration QC

  • Parcellation QC

  • SUV ๋ถ„ํฌ QC

  • Composite ROI QC

  • Outlier detection

  • ์ž๋™ PNG ์ €์žฅ

  • 100๋ช… Batch ๋Œ€์‘

๊นŒ์ง€ ํฌํ•จํ•˜๋Š” ์‹ค์ „ ์—ฐ๊ตฌ·์ž„์ƒ QC ์„ค๊ณ„์„œ์ž…๋‹ˆ๋‹ค.


๐Ÿง  ADNI PET [ch]

MONAI + Slicer ๊ธฐ๋ฐ˜

QC Visualization ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ



=====================================================

0️⃣ QC Visualization ๋ชฉ์ 

=====================================================

PET SUVr ์—ฐ๊ตฌ์—์„œ ๊ฐ€์žฅ ํ”ํ•œ ์‹คํŒจ ์›์ธ:

  • MRI–PET misregistration

  • Parcellation drift

  • ROI ๋ˆ„๋ฝ

  • Cerebellum segmentation ์˜ค๋ฅ˜

  • SUV outlier

๋”ฐ๋ผ์„œ QC๋Š” “์„ ํƒ”์ด ์•„๋‹ˆ๋ผ ํ•„์ˆ˜ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

๋ณธ ์‹œ์Šคํ…œ์€:

๐Ÿ‘‰ ๊ฐ subject๋งˆ๋‹ค QC PNG ์ž๋™ ์ƒ์„ฑ
๐Ÿ‘‰ ์ „์ฒด cohort QC summary ์ž๋™ ์ƒ์„ฑ

์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.



=====================================================

1️⃣ QC ํด๋” ๊ตฌ์กฐ

=====================================================

๊ธฐ์กด ๊ตฌ์กฐ์— ์ถ”๊ฐ€:

Subjects/ Results/ QC/ ├─ sub001/ │ ├─ overlay.png │ ├─ segmentation.png │ ├─ suv_hist.png │ └─ composite.png ├─ sub002/ Master_QC.xlsx


=====================================================

2️⃣ QC ํ•ญ๋ชฉ ์ •์˜

=====================================================

ํ•„์ˆ˜ QC 4์ข…

QC๋ชฉ์ 
OverlayPET–MRI ์ •ํ•ฉ ํ™•์ธ
SegmentationAtlas ์œ„์น˜ ํ™•์ธ
SUV Histogramintensity ๋ถ„ํฌ ํ™•์ธ
Composite ROIADNI ์˜์—ญ ํ™•์ธ


=====================================================

3️⃣ QC Visualization ์ƒ์„ฑ ๋ฐฉ์‹

=====================================================

3D Slicer Python ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ:

  • Slice View capture

  • Segment overlay

  • ROI ๊ฐ•์กฐ



=====================================================

4️⃣ Registration QC (Overlay PNG)

=====================================================

์ƒ์„ฑ ์ด๋ฏธ์ง€:

MRI background + PET colormap


Python:

lm = slicer.app.layoutManager() view = lm.sliceWidget('Red').sliceView() view.grab().save(f"{qcDir}/overlay.png")

์„ค์ •:

red = slicer.util.getNode('vtkMRMLSliceNodeRed') red.SetBackgroundVolumeID(mriNode.GetID()) red.SetForegroundVolumeID(petNode.GetID()) red.SetForegroundOpacity(0.5)


=====================================================

5️⃣ Segmentation QC

=====================================================

Segment display:

segNode.SetDisplayVisibility(True) view.grab().save(f"{qcDir}/segmentation.png")


=====================================================

6️⃣ SUV Histogram QC

=====================================================

PET intensity ๋ถ„ํฌ:

import numpy as np import matplotlib.pyplot as plt arr = slicer.util.arrayFromVolume(petNode) plt.hist(arr.flatten(),bins=200) plt.savefig(f"{qcDir}/suv_hist.png") plt.close()


=====================================================

7️⃣ Composite ROI QC

=====================================================

Composite ROI mask ์ƒ์„ฑ ํ›„ highlight:

logic = slicer.modules.segmentations.logic() logic.ExportSegmentsToLabelmapNode(segNode, compLabel, compIDs)

Capture:

view.grab().save(f"{qcDir}/composite.png")


=====================================================

8️⃣ Outlier Detection ์ž๋™ํ™”

=====================================================

๊ธฐ์ค€:

  • Composite SUVr > 3

  • Cerebellum SUV < 1

  • ROI voxel < 100


if CompositeSUVr>3: qcFlag.append("HighSUVr")


=====================================================

9️⃣ QC Summary Excel

=====================================================

Master_QC.xlsx:

| Subject | SUVr | CereSUV | Flags |


qcRows.append([sub,CompositeSUVr,cereSUV,";".join(qcFlag)])


=====================================================

๐Ÿ”Ÿ Batch ์„ฑ๋Šฅ

PNG ์ƒ์„ฑ:

+6์ดˆ / subject

100๋ช…:

+10๋ถ„



=====================================================

1️⃣1️⃣ QC Dashboard ํ™•์žฅ (์„ ํƒ)

=====================================================

์ž๋™ HTML:

  • overlay grid

  • SUVr scatter

  • clickable subject

(Plotly optional)



=====================================================

1️⃣2️⃣ ์šด์˜ SOP

์—ฐ๊ตฌ์ž ์‹ค์ œ ํ๋ฆ„:

1 QC ํด๋” ์—ด๊ธฐ
2 overlay ๋จผ์ € ํ™•์ธ
3 segmentation ํ™•์ธ
4 histogram ํ™•์ธ
5 composite ํ™•์ธ
6 flag subject ์žฌ์ฒ˜๋ฆฌ



=====================================================

1️⃣3️⃣ QC ํ•ฉ๊ฒฉ ๊ธฐ์ค€

ํ†ต๊ณผ ์กฐ๊ฑด:

  • Overlay ์ •ํ™•

  • ROI ์ •์ƒ

  • Histogram ๋‹จ๋ด‰

  • SUVr < 2.5



=====================================================

์ฐธ๊ณ ๋ฌธํ—Œ

=====================================================

  1. Landau et al., NeuroImage 2012

  2. ADNI PET QC Manual

  3. 3D Slicer Visualization API
    https://slicer.readthedocs.io/en/latest/developer_guide/script_repository.html

  4. MONAI Label
    https://github.com/Project-MONAI/MONAILabel



✅ ์ตœ์ข… ์š”์•ฝ

QC Visualization ์‹œ์Šคํ…œ ์™„์„ฑ ์‹œ:

  • Registration ํ™•์ธ PNG

  • Segmentation ํ™•์ธ PNG

  • SUV histogram

  • Composite ROI overlay

  • Outlier ์ž๋™ flag

  • Master QC Excel

๐Ÿ‘‰ 100๋ช… PET๋„ “๋ˆˆ์œผ๋กœ ๊ฒ€์ฆ + ์ž๋™ ํ•„ํ„ฐ๋ง” ๋™์‹œ์— ๊ฐ€๋Šฅ


์ด์ œ ๋‚จ์€ ๊ณ ๊ธ‰ ๋‹จ๊ณ„๋Š”:

✅ Centiloid QC
✅ Longitudinal drift QC
✅ Deep-learning QC
✅ Web viewer
✅ PACS ์—ฐ๋™

์›ํ•˜์‹œ๋ฉด ๋‹ค์Œ์€
๐Ÿ‘‰ Centiloid ์ž๋™ ๋ณ€ํ™˜ + QC ์—ฐ๊ณ„

๋Œ“๊ธ€

์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

ํžˆ๋ธŒ๋ฆฌ์ธ, ์ด์Šค๋ผ์—˜์ธ, ์œ ๋Œ€์ธ ์„ฑ๊ฒฝ ์† ์ด๋ฆ„์— ์ˆจ๊ฒจ์ง„ ์†Œ๋ฆ„ ๋‹๋Š” ๋น„๋ฐ€

์ž‘์€ ํ‹ˆ์ด ๋ฌด๋„ˆ๋œจ๋ฆฐ๋‹ค ์™œ ์šฐ๋ฆฌ๋Š” ‘์‚ฌ์†Œํ•œ ๋ถ„์—ด’์„ ๊ทน๋„๋กœ ๊ฒฝ๊ณ„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€

์ž‘์€ ํ‹ˆ์ด ๋ฌด๋„ˆ๋œจ๋ฆฐ๋‹ค ์™œ ์„ฑ๊ฒฝ์€ ‘๋ถ„์—ด์˜ ์‹œ์ž‘’์„ ๊ทธ๋ ‡๊ฒŒ ๊ฒฝ๊ณ ํ•˜๋Š”๊ฐ€