정규화 전처리 코드
base_img = dcm_file.pixel_array
min_val = np.min(base_img)
max_val = np.max(base_img)
print(min_val)
print(max_val)
# normalize image / z = (x - min) / (max - min)
copy_img = base_img.copy()
numerator = copy_img - min_val
denominator = max_val - min_val
z = numerator / denominator
z = (z * 255).astype(np.uint8)
# 이미지 저장
cv2.imwrite('base.png', base_img)
cv2.imwrite('normalize.png', z)
pydicom을 통한 사용한 비트 수 확인
dcm_file = pydicom.dcmread(dcm_file_path)
bits_allocated = dcm_file.BitsAllocated # 할당된 비트 수
bits_stored = dcm_file.BitsStored # 실제 사용된 비트 수
high_bit = dcm_file.HighBit # 가장 높은 비트의 위치
print(bits_allocated, bits_stored, high_bit)
각 DICOM 이미지에 대한 설명
모든 값은 cv2.imwrite()함수로 저장하여 확인하였습니다.
matplotlib의 imshow를 통해 이미지를 출력하면 정규화된것처럼 보이는데, 이는 자동으로 정규화가 수행되는 것 같다.
vmin과 vmax값을 8비트 수준으로 값을 책정하여 출력하면 다시 엄청 하얗게 나오지만, 파라미터를 주지않으면 자동으로 정규화를 수행한다.
vmax값을 해당 이미지의 최대값으로 적용한 뒤, normalize해주면 다시 원래대로 출력이 된다.
참고자료
- https://89douner.tistory.com/336
- https://towardsdatascience.com/medical-image-pre-processing-with-python-d07694852606
- https://glassboxmedicine.com/2021/02/16/downloading-and-preprocessing-medical-images-in-bulk-dicom-to-numpy-with-python/
- https://ballentain.tistory.com/53
'의료 영상' 카테고리의 다른 글
[DICOM] 세그멘테이션 결과 Mask를 3차원으로 저장하기 (0) | 2024.05.03 |
---|---|
[DICOM] MRI 볼륨 관련 Dicom tag 정리 (0) | 2024.04.30 |