用python写一段代码,批量提取CT图像的3D 的mask部分的最大层面,并保存为jpg格式
时间: 2023-05-20 15:03:58 浏览: 129
python给图像加上mask,并提取mask区域实例
以下是可以用 Python 编写的代码,用于批量提取 CT 图像的 3D mask 部分的最大层面,并将其保存为 JPG 格式:
```
import os
import numpy as np
import cv2
import SimpleITK as sitk
def get_largest_slice(image):
"""
获取 3D 图像的最大层面
"""
largest_slice = None
largest_slice_area = 0
for z in range(image.shape[2]):
slice_area = cv2.countNonZero(image[:, :, z])
if slice_area > largest_slice_area:
largest_slice_area = slice_area
largest_slice = image[:, :, z]
return largest_slice
def save_largest_slice_as_jpg(image_path, mask_path, save_path):
"""
将最大层面保存为 JPG 格式
"""
image = sitk.ReadImage(image_path)
mask = sitk.ReadImage(mask_path)
image_array = sitk.GetArrayFromImage(image)
mask_array = sitk.GetArrayFromImage(mask)
largest_slice = get_largest_slice(mask_array)
largest_slice = cv2.cvtColor(largest_slice, cv2.COLOR_GRAY2BGR)
image_name = os.path.splitext(os.path.basename(image_path))[0]
save_name = os.path.join(save_path, f"{image_name}.jpg")
cv2.imwrite(save_name, largest_slice)
if __name__ == "__main__":
image_folder = "/path/to/image/folder"
mask_folder = "/path/to/mask/folder"
save_folder = "/path/to/save/folder"
for image_name in os.listdir(image_folder):
image_path = os.path.join(image_folder, image_name)
mask_name = f"{image_name.split('.')[0]}_mask.nii.gz"
mask_path = os.path.join(mask_folder, mask_name)
save_largest_slice_as_jpg(image_path, mask_path, save_folder)
```
请注意,这段代码需要使用 SimpleITK 库来读取 CT 图像和 mask,因此您需要先安装该库。此外,您需要将 `image_folder` 和 `mask_folder` 更改为您自己的文件夹路径,其中包含 CT 图像和相应的 mask。最后,您需要将 `save_folder` 更改为您想要保存最大层面 JPG 文件的文件夹路径。
阅读全文