6.6 KiB
6.6 KiB
In [ ]:
!pip install gdown
In [ ]:
import gdown
# ID файла с Google Диска
file_id = '1qVrpV7vmhIsUxFiH189LmAn0ALbAPrgS'
#https://drive.google.com/file/d/1qVrpV7vmhIsUxFiH189LmAn0ALbAPrgS/view?usp=drive_link
# Формируем URL для скачивания
url = f'https://drive.google.com/uc?id={file_id}'
# Скачиваем файл в директорию /content/
file_path = '/content/my_file_name.tar'
gdown.download(url, file_path, quiet=False)
# Распаковываем архив .tar
import tarfile
with tarfile.open(file_path, 'r') as tar:
tar.extractall(path='/content/')
print("Архив распакован в директорию /content/")
In [ ]:
import json
# Путь к файлу JSON
json_file_path = '/content/Task08_HepaticVessel/dataset.json'
# Загружаем содержимое JSON файла
with open(json_file_path, 'r') as f:
dataset_info = json.load(f)
# Просмотрим содержимое JSON
print(json.dumps(dataset_info, indent=4)) # Красиво выводим содержимое
In [ ]:
import random
import nibabel as nib
import matplotlib.pyplot as plt
import numpy as np
import os
# Папки с изображениями и метками
images_dir = '/content/Task08_HepaticVessel/imagesTr'
labels_dir = '/content/Task08_HepaticVessel/labelsTr'
# Фильтруем доступные файлы
available_files = sorted([f for f in os.listdir(images_dir) if not f.startswith('._') and f.endswith('.nii.gz')])
images = [os.path.join(images_dir, file) for file in available_files]
labels = [os.path.join(labels_dir, file.replace('imagesTr', 'labelsTr')) for file in available_files]
# Проверяем количество файлов
print(f"Обнаружено {len(images)} изображений и {len(labels)} меток.")
# Случайно выбираем 20 изображений
random_indices = random.sample(range(len(images)), min(20, len(images)))
# Цветовая карта для меток
cmap = plt.cm.colors.ListedColormap(['black', 'green', 'red']) # Цвета: фон, сосуды, опухоли
bounds = [0, 1, 2, 3]
norm = plt.cm.colors.BoundaryNorm(bounds, cmap.N)
# Визуализация изображений и меток
for idx in random_indices:
try:
# Загружаем изображение и метку
image = nib.load(images[idx]).get_fdata()
label = nib.load(labels[idx]).get_fdata()
# Поиск срезов с ненулевыми метками
non_empty_slices = [z for z in range(label.shape[2]) if np.unique(label[:, :, z]).size > 1]
if not non_empty_slices:
print(f"Все срезы в {images[idx]} содержат только фон.")
continue
# Выбираем случайный срез с ненулевыми метками
slice_index = random.choice(non_empty_slices)
print(f"Выбран срез {slice_index} для изображения {images[idx]}")
plt.figure(figsize=(10, 5))
# Отображаем изображение
plt.subplot(1, 2, 1)
plt.imshow(image[:, :, slice_index], cmap='gray')
plt.title(f'Изображение (Slice: {slice_index})')
plt.axis('off')
# Отображаем метки
plt.subplot(1, 2, 2)
plt.imshow(label[:, :, slice_index], cmap=cmap, norm=norm)
plt.title('Метки')
plt.axis('off')
plt.show()
except Exception as e:
print(f"Ошибка при обработке файла {images[idx]}: {e}")