Step 2 of 3

Автоматическая сегментация легких на рентген снимках

Для начала рассмотрим библиотеку 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))

Результат получился просто отличный.


Сегментация легких на рентген снимке
Сегментация легких на рентген снимке

Comments