Анализ медицинских изображений в Python: Сегментация медицинских изображений / Сторонние библиотеки для сегментации медицинских изображений
Для начала рассмотрим библиотеку lungs-segmentation. Она как раз решает задачу сегментации правого и левого лёгкого.
Установим её
pip install lungs-segmentation
Для работы библиотеки нужно GPU. Поэтому, если у вас нет своего GPU рекомендую воспользоваться google colab
Библиотека работает с PNG изображениями, поэтому сначала сконвертируем изображение уже знакомым нам способом.
from skimage.transform import resize
import cv2
example = 'stage_2_images/ID_01fe90211.dcm'
imagedata= pydicom.dcmread(example)
img =imagedata.pixel_array
name = example.split('/')[-1][:-4]
img = resize(img,(512,512))
cv2.imwrite('{}.png'.format(name), img * 255)
После чего импортируем lungs-segmentation и запускаем обработку моделью
from lungs_segmentation.pre_trained_models import create_model
import lungs_segmentation.inference as inference
import torch
model = create_model("resnet34")
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = model.to(device)
plt.figure(figsize=(12,12))
plt.subplot(1,1,1)
image, mask = inference.inference(model,'ID_01fe90211.png', 0.2)
plt.imshow(inference.img_with_masks( image, [mask[0], mask[1]], alpha = 0.1))
Результат получился просто отличный.