效果图
1. window_transform
可以让图片更好看一点
def window_transform(ct_array, windowWidth=400, windowCenter=40, normal=False):
"""
return: trucated image according to window center and window width
and normalized to [0,1]
"""
minWindow = float(windowCenter) - 0.5 * float(windowWidth)
newing = (ct_array - minWindow) / float(windowWidth)
newing[newing < 0] = 0
newing[newing > 1] = 1
# 将值域转到0-255之间,例如要看头颅时, 我们只需将头颅的值域转换到 0-255 就行了
if not normal:
newing = (newing * 255).astype('uint8')
return newing
2. extract_max_slice
获取最大肝脏面积的CT切片
def extract_max_slice(ct_path, seg_path, img_save_path=None):
"""
根据标注获取最大肝脏切片
"""
# 读取标注的肝脏图像
seg_nii = sitk.ReadImage(seg_path)
seg_img = sitk.GetArrayFromImage(seg_nii)
# 获取肝脏图像面积最大的切片的索引
index = np.argmax(seg_img.sum((1, 2)))
# 读取CT图像
ct_nii = sitk.ReadImage(ct_path)
ct_img = sitk.GetArrayFromImage(ct_nii)
# 截取CT图像中肝脏最大的切片
img = ct_img[index, :, :]
img = window_transform(img)
# 保存图片
if img_save_path is not None:
save_name = os.path.basename(ct_path).split(".")[0] + "-index" + str(index) + ".png"
cv2.imwrite(os.path.join(img_save_path, save_name), img)
效果图
3. extract_max_slice_with_seg
获取最大肝脏面积的CT切片,并且用红色标记处肝脏的位置
def extract_max_slice_with_seg(ct_path, seg_path, img_save_path=None):
"""
根据标注获取带有标注的最大肝脏切片
"""
# 读取标注的肝脏图像
seg_nii = sitk.ReadImage(seg_path, sitk.sitkFloat32)
seg_img = sitk.GetArrayFromImage(seg_nii)
# 获取肝脏图像面积最大的切片的索引
index = np.argmax(seg_img.sum((1, 2)))
# 读取CT图像
ct_nii = sitk.ReadImage(ct_path)
ct_img = sitk.GetArrayFromImage(ct_nii)
# 截取CT图像中肝脏最大的切片
ext_ct_img = ct_img[index, :, :]
ext_seg_img = seg_img[index, :, :]
ext_ct_img = window_transform(ext_ct_img) # 映射后图片效果更好
ext_ct_img = np.array(ext_ct_img)
ext_ct_img = cv2.cvtColor(np.array(ext_ct_img), cv2.COLOR_GRAY2RGB)
# 肝脏位置标记颜色
for i in range(512):
for j in range(512):
if ext_seg_img[i][j] >= 1.0:
ext_ct_img[i][j][0] = 97
ext_ct_img[i][j][1] = 100
ext_ct_img[i][j][2] = 255
# 保存图片
if img_save_path is not None:
save_name = os.path.basename(ct_path).split(".")[0] + "-index" + str(index) + ".png"
cv2.imwrite(os.path.join(img_save_path, save_name), ext_ct_img)
效果图