效果图
文章目录
- 1. window_transform
- 2. extract_max_slice
- 3. extract_max_slice_with_seg
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
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_nii = sitk.ReadImage(ct_path)
ct_img = sitk.GetArrayFromImage(ct_nii)
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_nii = sitk.ReadImage(ct_path)
ct_img = sitk.GetArrayFromImage(ct_nii)
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)
效果图
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)