高端的食品行业网站开发,网上做效果图网站,安全认证的机票网站成就怎么做,拓者设计吧appMONOCHROME1#xff1a;像素值越大显示越黑#xff08;需反转后显示为正常灰度#xff09;
MONOCHROME2#xff1a;像素值越大显示越白#xff08;直接显示#xff09;
在用SimpleITK读取DICOM图像时#xff0c;MONOCHROME1会自动转为MONOCHROME2#xff1b;用pydico…MONOCHROME1像素值越大显示越黑需反转后显示为正常灰度
MONOCHROME2像素值越大显示越白直接显示
在用SimpleITK读取DICOM图像时MONOCHROME1会自动转为MONOCHROME2用pydicom读取时MONOCHROME1不会自动转换为MONOCHROME2需自己转换。
有时候用SimpleITK的GetSpacing()获取的PixelSpacing是不正确的不正确时往往为(1, 1)如https://ask.csdn.net/questions/7447976应当根据DICOM中的标签来获取PixelSpacing用pydicom代码如下
import numpy as np
import pydicomdef read_a_dcm_pydicom(dcm_path):pydicom_file pydicom.read_file(dcm_path)img pydicom_file.pixel_arrayimg img.astype(np.float32)if pydicom_file.PhotometricInterpretation MONOCHROME1:max_pixel np.max(img)img max_pixel - img # converting MONOCHROME1 to MONOCHROME2try:pixel_spacing pydicom_file[0x0028, 0x0030].value # PixelSpacingpixel_spacing [float(spacing) for spacing in pixel_spacing]except (AttributeError, KeyError):pixel_spacing pydicom_file[0x0018, 0x1164].value # ImagerPixelSpacingpixel_spacing [float(spacing) for spacing in pixel_spacing]return img, pixel_spacingif __name__ __main__:dcm_path test.dcmimg, pixel_spacing read_a_dcm_pydicom(dcm_path)
SimpleITK代码如下
import SimpleITK as sitkdef read_a_dcm_sitk(dcm_path):sitk_file sitk.ReadImage(dcm_path)img sitk.GetArrayFromImage(sitk_file)[0] # (h, w)try:spacings sitk_file.GetMetaData(0028|0030).split(\\) # PixelSpacingexcept (AttributeError, KeyError):spacings sitk_file.GetMetaData(0018|1164).split(\\) # ImagerPixelSpacingspacings [float(spacing) for spacing in spacings]return img, spacingsif __name__ __main__:dcm_path test.dcmimg, pixel_spacing read_a_dcm_sitk(dcm_path)