뇌 PET에서 SUVr을 얻기 위한 전체 워크플로를 3D Slicer 기준으로 단계별로 정리[pe]

 뇌 PET에서 SUVr을 얻기 위한 전체 워크플로를 3D Slicer 기준으로 단계별로 정리[pe]

slicer.readthedocs+1


1. Brain parcellation 및 세그먼트 파일 저장

1-1. CT 기반 parcellation (atlas 이용)

전제: 같은 환자의 brain CT와 atlas (예: MNI 템플릿 기반 atlas, Slicer에 기본 포함된 atlas 또는 추가 설치한 brain atlas)를 사용합니다.

  1. 데이터 로딩

    • Slicer 실행 후 Add Data → brain CT DICOM 또는 NRRD 로드.slicer.readthedocs

    • Add Data로 atlas T1 템플릿 이미지와 해당 label(파셀레이션) 볼륨도 함께 로드.

  2. CT와 atlas 템플릿 정합

    • Registration 또는 General Registration (BRAINS) 모듈 사용.machinemindscape+1

    • Fixed: atlas T1 템플릿, Moving: 환자 CT로 설정.

    • 변환 타입: 먼저 Rigid/Similarity, 필요시 Affine/B-spline 추가.

    • Apply 실행 후, 생성된 Transform을 CT에 적용해 정렬 상태를 확인.

  3. 변환을 atlas label에 적용 (atlas → 환자 CT 공간으로 워핑)

    • Data 모듈에서 atlas label 볼륨 선택 → Transforms 모듈에서 위에서 얻은 Transform을 label에 할당.

    • Resample 또는 Harden Transform을 사용해 label을 환자 CT 해상도에 맞게 resample.

    • 이렇게 하면 atlas 기반 brain 영역 parcellation이 CT 공간에 맞춰짐.

  4. 필요시 CT에서 추가 세분화/보정

    • Segment Editor 모듈에서

      • Threshold로 뇌와 두개골을 대략 분리.discourse.slicer

      • Islands(Remove small islands), Margin(Shrink/Grow) 등으로 뇌 영역을 정리.

    • atlas label과 CT 기반 mask를 조합해 이상한 영역(두개골, 공기 등)을 제거.

  5. 세그먼트 파일 저장

    • Segmentations 모듈에서 각 segment가 atlas label에 대응하는지 확인 (ROI 이름을 region 이름으로 정리).

    • Segmentations → Export/Import Models and Labelmaps에서 Labelmap (또는 segmentation .seg.nrrd) 형식으로 저장.

    • 이 파일이 나중에 PET SUV 계산 시 VOI Volume(레이블 볼륨)으로 사용됩니다.slicer.readthedocs+1

1-2. MRI 기반 parcellation (atlas 이용)

MRI에서는 atlas 정합 + 자동 brain segmentation(예: HD-BET, Swiss Skull Stripper 등)을 병행할 수 있습니다.journals.tultech+1

  1. 데이터 로딩

    • Add Data로 brain MRI (T1-weighted) 로드.

    • atlas T1 템플릿 및 label 볼륨 로드.slicer.readthedocs

  2. MRI skull stripping (선택적이지만 권장)

    • Extension에 따라 Swiss Skull Stripper 또는 HD Brain Extraction 모듈 사용.discourse.slicer+1

    • 입력: MRI, 출력: 두개골 제거된 brain mask.

    • 결과가 좋지 않으면 Segment Editor에서 수동으로 수정.

  3. MRI와 atlas 정합

    • Registration / General Registration (BRAINS) 사용.discourse.slicer+1

    • Fixed: 환자 MRI (또는 skull-stripped MRI), Moving: atlas T1 템플릿.

    • 또는 반대로 Fixed: atlas, Moving: 환자 MRI → 이후 atlas label을 환자 MRI로 변환.discourse.slicer

    • 적어도 Rigid+Affine, 필요하면 비선형 변환까지 사용.

  4. atlas label을 MRI 공간으로 warp

    • Transform을 atlas label에 적용 (Transform 모듈) → Harder Transform / Resample로 MRI 해상도에 맞게 resample.

    • 각 레이블이 MRI에서 해부학적으로 잘 맞는지 슬라이스별로 확인.

  5. 세그먼트 구조화 및 저장

    • Segmentations 모듈로 atlas label을 segmentation으로 불러와 지역 이름을 정리.

    • 뇌 영역별 segment (예: frontal, temporal, parietal, cerebellum 등)를 SUVr 분석에 필요한 구조로 그룹화.

    • segmentation을 .seg.nrrd 또는 labelmap으로 저장 (PET VOI로 사용할 포맷).slicer.readthedocs+1


2. Brain PET과의 registration

2-1. Brain CT와 brain PET 정합 후 PET 저장

전제: 같은 장비에서 획득된 PET/CT라면 이미 잘 co-registered 되어 있는 경우가 많습니다.discourse.slicer

  1. PET/CT 로딩

    • DICOM 브라우저에서 PET/CT 시리즈를 모두 Import 후 Load.

    • PET volume과 CT volume이 Scene에 로딩된 것을 확인.

  2. 정합 상태 확인

    • Volumes 및 Slice 뷰에서 PET와 CT를 서로 다른 색 LUT로 표시하고 overlay.YouTube

    • 보통 PET-CT는 이미 rigid alignment가 되어 있지만, 어긋나 있으면 수동 또는 자동 registration 수행.

  3. 필요시 PET↔CT registration

    • Registration 모듈에서 Fixed: CT, Moving: PET 설정.machinemindscape

    • Rigid/Similarity 변환으로 정합 후 Apply.

    • Transform이 PET에 적용된 상태에서 실제 alignment 확인.

  4. 변환된 PET를 새 볼륨으로 저장

    • Transformed 볼륨을 생성 (Transform 모듈에서 “Create new volume” 옵션 사용).

    • Save 버튼에서 변환된 PET volume을 NRRD 또는 NIFTI로 저장.

    • 이 PET volume이 이후 SUV 계산의 Input PET Volume이 됩니다.slicer.readthedocs+1

2-2. Brain MRI와 brain PET 정합 후 PET 저장

  1. PET와 MRI 로딩

    • PET (이미 CT와 정합된 PET 혹은 원본 PET)과 brain MRI 둘 다 Add Data 또는 DICOM에서 로딩.

  2. 고정/이동 설정

    • 통상 Fixed: MRI (고해상도 구조 이미지), Moving: PET.YouTubediscourse.slicer

  3. Registration 수행

    • 옵션 1: Landmark Registration (예: SlicerIGT의 Fiducial Registration Wizard).YouTubediscourse.slicer

      • 각 modality에서 공통으로 보이는 기준점(안와, 뇌간 주변, midline 구조 등)을 3점 이상 찍고 rigid 변환 계산.YouTube

    • 옵션 2: General Registration (BRAINS)

      • Fixed: MRI, Moving: PET, Rigid/Similarity 모드 설정 후 Apply.machinemindscape

  4. PET를 MRI 공간으로 resample

    • Transform이 PET에 적용된 상태에서 Transforms 모듈에서 “Create new volume from transformed” 실행.machinemindscape

    • 새로 생성된 PET_in_MRI_space 볼륨을 확인 (MRI와 동일한 grid에서 잘 겹치는지 슬라이스별로 확인).

  5. 저장

    • Save → 변환된 PET_in_MRI_space 볼륨을 NRRD/NIFTI로 저장.

    • 이후 parcellation된 MRI 기반 segmentation과 같은 공간에 있으므로 SUVr 분석에 사용.slicer.readthedocs+1


3. 정합된 brain PET와 세그먼트 파일 로딩 후 SUV 추출

  1. PET DICOM 또는 NRRD 준비

    • SUV 계산 모듈은 DICOM header의 방사성의약품 정보(주입량, 시간 등)가 필요하므로,

    • registration 후 resample한 PET가 NRRD라면, PET DICOM path는 원본 DICOM, Input PET Volume은 정합된 PET NRRD를 사용 (동일 데이터라고 간주 가능한 경우).

  2. Slicer에서 PET와 segmentation 로딩

    • Add Data → 변환된 PET volume (CT or MRI space) 로드.

    • Add Data → 해당 공간에서 만든 atlas 기반 segmentation (labelmap 또는 .seg.nrrd) 로드.

    • 좌표계와 voxel grid가 잘 맞는지 Slice view에서 확인 (segment 경계가 PET 뇌 구조를 잘 따라가는지).

  3. Labelmap 형식으로 VOI Volume 준비

    • segmentation이 .seg.nrrd 형식이라면 Segmentations 모듈에서

      • Export → Labelmap volume으로 변환.

    • 이 labelmap이 PET Standard Uptake Value Computation 모듈의 Input VOI Volume이 됩니다.slicer.readthedocs+1

  4. PET Standard Uptake Value Computation 실행

    • 모듈: PET Standard Uptake Value Computation 열기.slicer.readthedocs+1

    • 설정:

      • PET DICOM volume path (PETDICOMPath): 해당 PET의 DICOM 폴더 경로.

      • Input PET Volume (PETVolume): 정합된 PET 볼륨 선택 (CT 또는 MRI 공간).

      • Input VOI Volume (VOIVolume): 위에서 준비한 labelmap (brain parcellation).

    • 출력 설정:

      • Output Table (OutputCSV): CSV 파일 경로 지정 (없으면 새 파일 지정, 이미 존재하면 append).

      • Output LabelOutput Label ValueSUVMaxSUVMeanSUVMin 등을 필요에 따라 선택.slicer.readthedocs+1

    • Apply 실행 → 각 label별로 SUVbw 기준 SUVminSUVmaxSUVmean 값이 계산되어 CSV에 저장됩니다.mindyourdata+2


4. SUVr 계산 (소뇌 reference) 및 엑셀 저장

SUVr은 각 뇌 영역의 SUV를 reference tissue(소뇌) SUV로 나눈 값입니다.mindyourdata

  1. reference tissue(소뇌) segment 지정

    • parcellation atlas에서 소뇌(Cerebellum) 레이블 ID 또는 이름을 확인.

    • PET SUV CSV 파일에서 해당 레이블의 SUVmean 값을 reference로 사용 (보통 mean 사용).slicer.readthedocs+1

  2. SUVr 계산

    • CSV 파일을 Excel 또는 Python/R로 불러옵니다.

    • 각 행(레이블)에 대해 예를 들어 SUVmean 기준이면

      • 𝑆𝑈𝑉𝑟=𝑆𝑈𝑉𝑚𝑒𝑎𝑛_𝑟𝑒𝑔𝑖𝑜𝑛/𝑆𝑈𝑉𝑚𝑒𝑎𝑛_𝑐𝑒𝑟𝑒𝑏𝑒𝑙𝑙𝑢𝑚 (소뇌 mean 값으로 전체를 나눔).

    • Excel 예:

      • 가정: SUVmean이 C열, 소뇌가 10행이라면 C10이 reference.

      • 다른 행의 SUVr 열 (예: F열)에 =C2/$C$10 형식으로 입력 후 아래로 채우기.

  3. SUVr 결과 정리

    • 엑셀에서 열 구성 예:

      • PatientID, StudyDate, LabelID, LabelName, SUVmin, SUVmax, SUVmean, SUVr(SUVmean-based).

    • 필요하다면 SUVmax 기반 SUVr도 추가 (SUVmax/SUVmax_cerebellum 등).

  4. 최종 SUVr 엑셀 파일 저장

    • Excel에서 파일 → 다른 이름으로 저장으로 .xlsx 또는 .csv 형식으로 저장.

    • 후속 통계/머신러닝 분석 시 이 SUVr 테이블을 바로 사용 가능합니다.


CT 기반 vs MRI 기반 워크플로 요약

항목CT 기반 워크플로MRI 기반 워크플로
파셀레이션 해석 해상도CT 대비 낮음, 미세 구조 분할은 제약discourse.slicer높은 해부학적 분해능, atlas 정합에 유리journals.tultech
skull stripping 용이성CT는 bone과 soft tissue 대비가 커 threshold 기반으로 가능discourse.slicer전용 모듈(HD-BET, Swiss Skull Stripper 등) 사용journals.tultech+1
PET와의 registrationPET-CT는 대개 이미 정합, 추가 수정만 필요discourse.slicer별도 rigid/affine registration 필요machinemindscape+1YouTube
SUV 계산 모듈 입력PET DICOM + CT 공간 PET + CT 기반 labelmapslicer.readthedocs+1PET DICOM + MRI 공간 PET + MRI 기반 labelmapslicer.readthedocs+1
SUVr 계산후처리에서 동일 (소뇌 SUV로 정규화)mindyourdata동일 (소뇌 segment ID만 다름)mindyourdata

위 절차대로 진행하면, 3D Slicer에서 brain atlas 기반 parcellation → PET 정합 → SUV 추출 → 소뇌 기준 SUVr 계산 → 엑셀 저장까지 전체 파이프라인을 재현할 수 있습니다.slicer.readthedocs+1

관련된

댓글

이 블로그의 인기 게시물

히브리인, 이스라엘인, 유대인 성경 속 이름에 숨겨진 소름 돋는 비밀

작은 틈이 무너뜨린다 왜 우리는 ‘사소한 분열’을 극도로 경계해야 하는가

작은 틈이 무너뜨린다 왜 성경은 ‘분열의 시작’을 그렇게 경고하는가