많은 뇌영상의 많은 응용 연구들은 MRI(Magnetic Resonance Imaging)을 사용하기 때문에 영상 분석과 pipeline에 대한 권장 사항이 존재한다. 그러나 임상 시에는 병을 진단하고 예후하기 위해 CT 영상에 크게 의존한다.
현재 CT 영상의 pipeline은 단 하나 뿐이며 lesion이 있는 head CT 데이터에만 초점을 맞추고 있다. 본 논문은 head CT에 초점을 두고 있지만 전반적인 CT 영상에 적용이 가능한 도구와 pipeline을 제안하고 있다.
CT의 Raw DICOM 영상을 spatially normailzed 하는 방법을 예제와 코드로 설명한다.
우선 Clinical Trials Processor로 데이터를 anonymizing하고, dcm2niix를 사용하여 DICOM 데이터를 NIfTI로 변환한다. 그리고 뇌 추출을 위해 BET를 사용하고, 분석을 위해 공개적으로 사용 가능한 CT 템플릿을 사용하여 transform하는 것을 추천한다.
연구에는 MRI 영상이 많이 사용되지만 CT 영상은 임상을 위해서 많이 사용되며 연구 용으로는 사용되기 힘들다.
본 논문에서는 CT 영상을 연구 용으로 사용하는 방법을 제시하고 있으며 MRI 영상에서 얻은 insight를 통해 가이드라인을 제시한다.
CT 데이터를 정량적으로 분석하고 대부분의 MRI 신경 영상 연구자들에게 익숙한 형식으로 데이터를 얻는 측면에 초점을 맞춘다. 특별히 non-contrast head CT 데이터에 초점을 맞춘다.
PACS(Picture Archiving Communication System)에서 오는 대부분의 데이터는 DICOM (Digital Imaging and Communications in Medicine) 형식이다. 일반적으로 DICOM 파일은 영상과 개별 픽셀 데이터에 대한 메타데이터(헤더)의 조합이다.
PACS(Picture Archiving Communication System)는 의료영상을 통신망을 통해 저장/전송하여 공유하는 병원 전산 시스템의 종류이며, Tape(or film)으로 저장하던 방식에서, 작고 저장용량이 큰 Strorage 방식으로 발전하면서 생겨났다.
헤더에는 일반적으로 필드 또는 태그라고 하는 정보 모음이 있다. 태그는 일반적으로 4개의 영숫자로 포함 된 2개의 16진수 집합으로 정의된다. 픽셀 데이터는 일반적으로 512x512 픽셀의 고해상도 grid에서 축 방향으로 제공된다.
DICOM 데이터의 일반적인 문제 중 하나는 헤더에 많은 양의 PHI(Protected Health Information)가 포함될 수 있다는 것이다.
DICOM의 표준은 다른 사이트, scanner에서 같은 값을 가진다. 하지만 업체나 사이트가 DICOM 표준을 잘 지키는 경우에 한해서 이다.
DICOM 데이터를 받기 전에 먼저 anonymization을 수행해야 한다.
www.rsna.org/research/imaging-research-tools(DICOM anonymization and recommend the RSNA MIRC Clinical Trials Processor, CTP)
www.dicomlibrary.com(Upload service)
www.dcm4che.org(DICOM reading tool)
제시된 솔루션의 대부분은 헤더 정보의 anonimization 및 de-identification에 능숙하지만 CTP와 같은 소수만이 날짜 차이의 longitudinal preservation에 필요한 유틸리티를 가지고 있다. 날짜는 HIPAA에 따라 제거 가능한 식별 정보로 간주되며, 일부 임상 시험 및 기타 연구는 직렬 CT 영상 데이터에 의존하며, 시간의 차이는 사건이 발생하거나 분석에 사용되는 시기를 결정하는 데 중요하다.
대부분의 CT 데이터는 연구 환경이 아닌 임상적으로 수집이 된다. 그래서 head MRI에 비해 사용 가능한 데이터가 부족하다.
radiopaedia.org(Radiopedia)와 같은 radiological 훈련을 위한 사이트에는 head CT 데이터가 많지만 이러한 데이터는 DICOM에서 JPEG과 같은 영상 파일로 변환하여 Hounsfield Units과 같은 중요한 정보가 손실 된다.
그러나 대규모의 DICOM 형식의 head CT 데이터 저장소가 존재한다. CQ500 데이터 세트는 약 500개의 다양한 임상 병리 진단과 함께 head CT 스캔을 제공한다.
TCIA(Cancer Imaging Archive)에는 수백개의 CT 스캔이 있으며, 대부분의 경우 뇌암에 대한 것이다. TCIA에는 또한 RESTful(Representational state transfer) 인터페이스가 있어 프로그래밍 방식으로 다운 받을 수 있다. 예를 들어 TCIApathfinder R 패키지 및 Python tciaclient 모듈은 인터페이스를 제공한다.
stir.dellmed.utexas.edu(Stroke Imaging Repository Consortium)에는 뇌졸증 진단에 사용할 수 있는 head CT 데이터도 있다. imaging.nci.nih.gov(NBIA, National Biomedical Imaging Archive) 데모는 일부 head CT 데이터를 제공하지만 대부분 TCIA에서 복제된다.
www.nitrc.org(NITRC, The NeuroImaging Tools & Resources Collaboratory)는 많은 데이터 세트 및 도구에 대한 링크를 제공하지만 head CT 영상은 제공하지 않고 있다.
www.insight-journal.org/rire(RIRE, Retrospective Image Registration Evaluation),
www.insight-journal.org/midas(MIDAS) 프로젝트는 10명 미만의 참가자의 head CT 데이터를 가지고 있다.
DICOM 데이터를 읽기 위한 여러 옵션들이 있다.
pydicom (Python)
radtools (R)
ITK (Matlab)
DICOM 파일에는 많은 양의 PHI가 포함되어 있어 저장 공간이 부족할 수 있다. 따라서 3D 영상을 하나의 압축된 파일로 저장하는 것이 적절하다.
ANALYZE, NIfTI, NRRD 및 MNC와 같은 다양한 일반 3D 의료 영상 파일 형식이 존재한다.
NIfTI 형식은 대부분의 의료 영상 플랫폼에서 읽을 수 있고 압축 형식으로 저장할 수 있어 NIfTI 형식을 권장한다.
DICOM 데이터를 변환하는 github.com/rordenlab/dcm2niix(dcm2niix)는 데이터를 NIfTI 파일로 출력할 수 있다.
CT용 dcm2niix에는 몇가지 기능이 있다.
눈과 같은 곳이 방사선에 노출되는 것을 막기 위해서 CT 촬영 시 gantry를 기울이기도 한다. 따라서 slices of the image는 비스듬한 각도로 기울어져 있는데 slice-based 분석이나 affine registration이 3D 데이터에 적용되는 경우에는 수정될 수 있다.
dcm2niix는 slice 사이를 보간하여 각 영상이 일관된 voxel 크기를 갖도록 한다. 다시, dcm2niix는 수정 된 영상과 수정되지 않은 영상을 모두 반환 한다.
NIfTI 형식으로 변환되면 스케일을 확인해야 한다. 데이터의. 대부분의 CT 데이터는 -1024 ~ 3071 Hounsfield Units(HU)이다.
첫 번째 단계 중 하나는 데이터를 -1024 ~ 3071 범위로 Winsorize하는 것 이다. 이 단계 후에 NIfTI 영상의 헤더 요소인 scl_slope 및 scl_inter를 각각 1과 0으로 설정하여 다른 소프트웨어에서 데이터 크기 조정이 수행되지 않도록 해야 한다.
HU가 CT 분석에 사용되는 표준 형식이지만 음수 HU 값은 일반적으로 양수 값을 갖는 MRI 용으로 구축 된 standard imaging pipeline에 문제를 일으킬 수 있다. Rorden(CITE)은 최소 값이 0 인 Cormack 단위라고 하는 무손실 변환을 제안했다.
영상 reconstruction에서 주목할만한 매개 변수 중 하나는 convolution kernel이다. 영상의 contrast는 kernel에 의해 결정되며 위 그림에서 medium smooth kernel(그림2 E)은 뇌 조직에서 좋은 contrast를 가져다 준다. 그리고 medium kernel(그림2 A)은 골절을 감지하는데 사용되지만 뇌 조직 부분에서는 좋은 contrast는 아니다. 따라서 여러 소스들을 결합할 때 convolution kernel이 필터링, 계층화, 데이터 제외의 역할로 사용될 수 있다. 또한 resolution of reconstruction에 따라 noise 및 contrast가 다를 수 있다. 대부분의 standard head CT 스캔은 axial plane에서 고해상도를 갖고 있다.
영상 reconstruction은 0.5mm(그림2 F), 2.5mm, 5mm(5mm가 일반적)의 interior-superior plane에서 해상도를 가질 수 있다. slice 두께가 두꺼울수록 영역이 평균화가 되기 때문에 reconstruction을 수행하면 더 smoothing이 된다. 경우에 따라서는 특정 subject에서 특정 영상만 사용할 수 있다. 예를 들어, 대부분의 subject들은 soft-tissue convolution kernel이 있는 non-contrast head CT를 가지고 있는 반면, 일부는 bone convolution kernel 만 가지고 있다. 또한 3D gaussian(그림2 C) 또는 anisotropic smoothing(그림2 D)과 같은 post processing smoothing을 수행 할 수 있다. 이 과정은 데이터의 smoothness와 contrast를 변경하여 segmentation 시 artifact를 유발할 수 있다. 그러나 soft-tissue kernel(위 그림에서 E)과 비교했을 때 bone convolution kernel은 plane properties similar을 만들 수 있다.
non-contrast 스캔에 대해 설명하고 있지만 contrast CT 스캔이 일반적이다. Contrast는 뇌의 혈관계를 변경한다.(그림2 G) 이러한 변경 사항은 데이터 전처리에 영향을 미칠 수 있으며, 여기서 임계 값을 조정해야 할 수 있다.
NIfTI 형식으로 변경되면 대부분의 MRI 및 기타 영상 형식을 위해 구축된 소프트웨어에 동작을 해야 하지만 조정 및 고려해야 할 사항이 있을 수 있다.
MRI에서 스캔은 bias 필드 또는 일련의 inhomogeneities에 의해 변형 될 수 있다. 이 필드는 일반적으로 MRI 코일의 inhomogeneities/inconsistencies로 인해 발생하거나 가열과 같은 코일에 대한 균일하지 않은 물리적 효과에 의해 생성 될 수 있다. 가장 일반적인 가장 일반적인 처리 단계 중 하나는 이 bias 필드를 제거하는 것이다. 대부분의 경우 non-uniformities는 영상이 공간적으로 다른 위치에 있을 때 같은 물리적 구성과 행동을 가진 영역에서 다른 값을 가지는 것을 말한다.
CT 데이터에는 데이터의 특성으로 인해 코일이나 가정 된 bias 필드가 없지만 이러한 보정 절차 중 하나를 사용하여 데이터를 공간적으로 조화 시키려고 하면 방법의 성능이 향상되는지 테스트 할 수 있다. 일반적으로 이 절차를 권장하지는 않는다. 왜냐하면 뇌의 출혈과 같은 관심이 있는 영역 간의 대비를 줄일 수 있기 때문이다. 그러나 segmentation을 개선하는 데 사용되기도 한다.
머리 CT 데이터에는 일반적으로 시야에 따라 대상의 머리, 얼굴, 목 및 기타 하부 구조가 포함된다. 또한 피실험자의 머리를 얹은 베개, 침대, 시야에 있는 모든 도구와 같은 서로 다른 artifact가 존재한다.
일반적으로 뇌 및 안면 조직에 대한 데이터 범위는 두개골, 기타 뼈 및 석회를 제외하고 -100 ~ 300 HU 이내이다. -100 ~ 1000 HU 범위의 값에서 마스크를 만들면 일부 악기, 베개 및 배경이 제거될 수 있다. 가장 큰 connected component를 유지하면 침대, 거니와 같은 도구들을 제거할 수 있고 filling holes와 마스크로 원본 데이터를 마스킹하면 대상을 얻을 수 있다.(그림3)
많은 논문들이 뇌를 추출하는 방법을 소개하고 있지만 구체적인 방법을 설명하고 있지 않다. 본 논문은 BET(Brain Extraction Tool)을 소개한다. non-contrast head CT에서 soft-tissue convolution kernel을 5mm slice로 적용한 예시가 그림3에 나와있다.
최근에는 convolutional neural network와 shape propagation 기술이 좋은 결과를 가져왔다.
github.com/aqqush/CT_BET(CT BET)
많은 MRI application에서 다음 단계는 뇌척수액(CSF), white matter, gray matter의 영역을 나타내는 tissue-class segmentation이다.
한 가지 문제는 white, gray matter의 contrast가 MRI의 T1-weighted 영상에 비해 훨씬 낮다는 것이다. Tissue-class segmentation보다는 병리학 스캔을 포함하여 CT에서 CSF 공간을 결정하는 경우가 많다. 이러한 방법은 때때로 subarachnoid 공간을 포함하여 CSF를 segmentation 하기도 한다.
미국의 HIPAA(Health Insurance Portability and Accountability Act)의 일환으로 "Safe Harbor"방식에 따라 데이터를 공개하려면 다수의 PHI를 제거해야 한다.
Head CT 영상의 경우 3D 재구성의 가능성이 있으며 피실험자의 reidentification의 문제가 발생할 수 있다. 따라서 defacing이라고 불리는 얼굴 영역을 제거하는 것이 필요할 수 있다.
임상 데이터의 분석은 subject-specific 할 수 있지만 population-level 분석도 여전히 중요하다. 일부 분석에서는 population 템플릿에 등록을 해야 하는 population-level의 결과를 원한다. 하지만 이러한 접근 방식의 문제점은 대부분의 템플릿과 접근 방식이 MRI 템플릿에 의존한다는 것이다. 이러한 템플릿들은 지원자의 MRI 스캔을 통해 개발되었으며 방사선 노출 위험으로 인해 CT는 비 윤리적 일 수 있다.
추천하는 pipeline은 다음과 같다.
1. CTP 또는 DicomCleaner를 사용하여 PACS의 DICOM 데이터를 구성하고 anonymizing 한다.
2. PHI를 제외한 dcmtk 및 store에서 dcmdump와 같은 소프트웨어를 사용하여 각 DICOM에 대한 관련 헤더 정보를 추출한다.
3. 뇌 영상 데이터 구조(BIDS) 형식의 데이터를 생성 할 수있는 dcm2niix를 사용하여 DICOM을 NIfTI로 변환한다. 기울기 보정 및 균일 한 voxel 사이즈의 데이터를 사용한다.
분석의 목적에 따라 registration 후 뇌 추출, 뇌 추출 후 registration 할 수 있다. 두개골을 분석하는 경우 제거 할 영역을 식별하기 위한 첫 번째 단계로 뇌 추출을 사용할 수도 있다. 뇌 추출의 경우 BET for CT 또는 CT_BET를 실행한다.(특히 신경망 용 GPU가있는 경우)
Registration이 수행되는 경우, 많은 방사선과 의사와 임상의가 피실험자 별 prediction 또는 segmentation에 익숙하기 때문에 transformation을 원래의 subject space로 되돌리는 것이 일반적으로 필요하다. NIfTI에서 DICOM으로 데이터를 다시 변환하는 것은 일반적으로 수행되지 않지만 대부분의 PACS가 DICOM 데이터 용으로 제작 되었기 때문에 가능하다.
데이터를 읽고 변환하는 소프트웨어 옵션과 함께 head CT 데이터의 전처리를 위한 간단한 pipline을 제시했다. MRI를 위한 많은 도구가 존재하며 CT 데이터에 적용 할 수 있음을 발견했다. 수집 설정(연구 vs 임상), 데이터 접근, 데이터 구성, 영상 강도 범위, 영상 대비 및 인구 수준 데이터로 인해 데이터 간에 현저한 차이가 있다. CT 스캔이 빠르고 임상 적으로 관련된 정보를 제공하고 의료 영상 데이터, 특히 convolutional neural network를 사용하는 딥러닝에 대한 관심이 증가함에 따라 head CT 데이터에 대한 연구 및 정량 분석이 증가 할 것이다. 이것이 head CT 연구에 유용한 도구 및 데이터 세트의 개요를 제공한다고 믿는다.
본 논문에서 그림을 생성하는데 사용된 코드는 github.com/muschellij2/process_head_ct에 있다.
이 코드는 R의 Neuroconductor 패키지를 사용한다.
제시된 모든 데이터는 headctstudy.qure.ai/dataset에서 다운로드 할 수 있는 CQ500 데이터 세트에서 가져온 것 이다.
유익한 글 감사합니다 ^^