SimpleITK를 이용해 Python으로 processing 하기
[SimpleITK] Python으로 medical image processing하기 - (1) Load, Resample
[SimpleITK] Python으로 medical image processing하기 - (2) Registration 1
[SimpleITK] Python으로 medical image processing하기 - (3) Registration 2
[SimpleITK] Python으로 medical image processing하기 - (4) Visualization
Visualization
Registration을 한 후, 결과가 잘 나왔는지를 확인하기 위해 visualization이 필요하다.
수치를 통해 결과를 확인할 수도 있지만, 여러 image를 registration하는 경우 image마다 상대적인 수치가 다르기 때문에 수치만으로는 registration이 잘 되었는지 평가하기 힘든 경우가 많닸다.
SimpleITK의 여러 function들을 이용해 visualization을 할 수 있다.
위 notebook에서 SimpleITK의 여러 function들을 이용해 visualization을 하는 방법이 정리되어 있다.
단순히 overlap 하는 것만으로는 결과를 잘 확인하기 힘들어, alpha blending, checker board 등 다양한 방법을 이용한다.
위 notebook에서 사용하는 visualization 방법들 몇 가지를 소개하고, 코드는 생략하겠다.
Alpha blending
- 가장 기본적으로 시도해볼 수 있는 방법. 각 slice마다 두 image를 overlapping 하여 보여준다.
Checkerboard
- 격자무늬로 두 image를 번갈아가며 보여준다.
- 격자의 크기를 조절하며 다양한 방식으로 확인할 수 있다.
Combine scalar images to create color image
- 두 image에 색을 다르게 입혀 보여준다.
- 개인적으로 결과를 보기에 가장 용이했던 방법이었다.
이렇게 다양한 방법으로 visualization을 할 수 있다.
하지만 위 예시의 image들은 brain image라 전체적인 위치가 맞는지만 확인하면 됐지만,
나는 내부의 장기나 뼈의 위치가 맞는지까지 확인해야 해서 힘들었다.
그래서 나는 단순하게 image를 numpy array로 변환 후 plt.imshow를 이용했다.
한 image의 투명도를 조정하고 colormap을 다르게 하여 두 image를 동시에 띄웠는데, 이 방법이 가장 심플하고 효과적이었다.
plt.imshow(img_A, cmap='gray')
plt.imshow(img_B, cmap='RdPu', alpha=0.4)
- colormap은 여러가지 조합을 시도해 봤는데, 내 data는 pelvic mri/ct였고 mri-gray, ct-RdPu 조합이 가장 괜찮았다.
- alpha 값(투명도) 역시 여러 값들을 조합해 보았고, ct image의 alpha 값을 0.4로 두는 것이 가장 괜찮았다.