Примечание: это статья из 4 частей, и вы можете найти другие статьи по этим ссылкам (часть 1, часть 2, часть 3, часть 4). Я также собрал их коллекцию в небольшой буклет, который можно получить через amazon, если вам нужна физическая копия. Пожалуйста, свяжитесь со мной, если у вас есть отзывы об улучшении, и предоставьте эту информацию всем.

Анализ изображений и видео и их использование в различных приложениях, таких как самоуправляемые автомобили, дроны и т. Д., С использованием лежащих в основе методов глубокого обучения, стало новым рубежом исследований. Недавние исследовательские работы, такие как Нейронный алгоритм художественного стиля, показывают, как стили могут быть переданы от художника и применены к изображению для создания нового изображения. Другие статьи, такие как Generative Adversarial Networks (GAN) и Wasserstein GAN »проложили путь к разработке моделей, которые могут научиться создавать данные, похожие на данные, которые мы им даем. Таким образом открывается мир для обучения без учителя и прокладывается путь в будущее обучения без учителя.

Хотя эти области исследований все еще относятся к общим изображениям, наша цель - использовать эти исследования в медицинских изображениях, чтобы помочь здравоохранению. Нам нужно начать с некоторых основ. В этой статье я начну с основ обработки изображений, основ данных в формате медицинских изображений и визуализирую некоторые медицинские данные. В следующей статье я углублюсь в некоторые сверточные нейронные сети и использую их с Keras для прогнозирования рака легких.

Базовая обработка изображений (с использованием Python)

Существует множество библиотек обработки изображений, однако OpenCV (открытое компьютерное зрение) стало широко распространенным из-за его широкой поддержки сообществом и доступности на C ++, java и python. Я предпочитаю использовать opencv с помощью ноутбука jupyter.

Установите OpenCV с помощью: pip install opencv-python или установите прямо из исходного кода с opencv.org

Теперь откройте свой блокнот Jupyter и подтвердите, что вы можете импортировать cv2. Вам также понадобятся numpy и matplotlib для просмотра ваших графиков внутри записной книжки.

Теперь давайте проверим, можете ли вы открыть изображение и просмотреть его в записной книжке, используя приведенный ниже код.

Базовое распознавание лиц

Давайте займемся чем-нибудь забавным, например, определим лицо. Для обнаружения лица мы будем использовать фронтальный детектор лица 20x20 soft adaboost с открытым исходным кодом на основе xml-пней, созданный Райнером Линхартом. Хороший пост с подробностями об обнаружении каскада Хаара находится здесь.

В разделе документации есть много примеров обработки изображений с помощью opencv. Http://docs.opencv.org/trunk/d6/d00/tutorial_py_root.html. Я оставляю читателю возможность поиграть с другими примерами. Теперь, когда мы знаем основы обработки изображений, давайте перейдем к следующему уровню понимания формата медицинских изображений.

Формат данных медицинского изображения

Медицинские изображения следуют Цифровым изображениям и коммуникациям (DICOM) как стандартному решению для хранения и обмена данными медицинских изображений. Первая версия этого стандарта была выпущена в 1985 году. С тех пор было внесено несколько изменений. Этот стандарт использует формат файла и протокол связи.

  • Формат файла. Все медицинские изображения пациентов сохраняются в формате файла DICOM. Этот формат содержит PHI (защищенную медицинскую информацию) о пациенте, такую ​​как - имя, пол, возраст, в дополнение к другим данным, связанным с изображением, таким как оборудование, используемое для захвата изображения, и некоторый контекст лечения. Оборудование для медицинской визуализации создает файлы DICOM. Врачи используют DICOM Viewers, компьютерные программные приложения, которые могут отображать изображения DICOM, читать и диагностировать результаты на изображениях.
  • Протокол связи - протокол связи DICOM используется для поиска исследований изображений в архиве и восстановления исследований изображений на рабочей станции для их отображения. Все приложения для обработки медицинских изображений, подключенные к больничной сети, используют протокол DICOM для обмена информацией, в основном изображениями DICOM, а также информацией о пациентах и ​​процедурах. Существуют также более продвинутые сетевые команды, которые используются для контроля и отслеживания лечения, планирования процедур, отчетов о статусах и распределения рабочей нагрузки между врачами и устройствами визуализации.

Очень хороший блог, в котором подробно описывается стандарт DICOM, находится здесь.

Анализируйте изображения DICOM

Очень хороший пакет Python, используемый для анализа изображений DICOM, - это pydicom. В этом разделе мы увидим, как визуализировать изображение DICOM на ноутбуке Jupyter.

Установите OpenCV с помощью: pip install pydicom

После установки пакета pydicom вернитесь к записной книжке jupyter. В записной книжке импортируйте пакет dicom и другие пакеты, как показано ниже.

Мы также используем другие пакеты, такие как pandas, scipy, skimage, mpl_toolkit, для обработки и анализа данных.

В Интернете есть множество бесплатных наборов данных DICOM, но вот некоторые из них, которые должны помочь вам начать работу:

  • Соревнования и наборы данных Kaggle: это мой личный фаворит. Ознакомьтесь с данными по конкуренции рака легких и диабетической ретинопатии.
  • Dicom Library: DICOM Library - это бесплатный онлайн-сервис для обмена изображениями или видеофайлами в формате DICOM для образовательных и научных целей.
  • Наборы данных Osirix: предоставляет широкий спектр наборов данных о людях, полученных с помощью различных методов визуализации.
  • Visible Human Datasets: части Visible Human project каким-то образом свободно распространяются здесь, что является странным, потому что получение этих данных не является ни бесплатным, ни беспроблемным.
  • The Zubal Phantom: этот веб-сайт предлагает несколько свободно распространяемых наборов данных о двух мужчинах в КТ и МРТ.

Загрузите файлы dicom и загрузите их в свой блокнот jupyter.

Теперь загрузите изображения DICOM в список.

Шаг 1. Базовый просмотр изображения DICOM в Jupyter

В первой строке мы загружаем 1-й файл DICOM, который мы будем использовать в качестве ссылки с именем RefDs для извлечения метаданных, имя файла которого стоит первым в списке lstFilesDCM.

Затем мы вычисляем общие размеры массива 3D NumPy, которые равны (количество строк пикселей в срезе) x (количество столбцов пикселей в срезе) x (количество срезов) вдоль декартовых осей x, y и z. . Наконец, мы используем атрибуты PixelSpacing и SliceThickness для вычисления расстояния между пикселями по трем осям. Мы храним размеры массива в ConstPixelDims, а расстояние в ConstPixelSpacing [1]..

Шаг 2. Подробная информация о формате DICOM

Единицей измерения компьютерной томографии является единица Хаунсфилда (HU), которая является мерой радиоплотности. КТ-сканеры тщательно откалиброваны, чтобы точно измерить это. Подробное понимание этого можно найти здесь.

Каждому пикселю присваивается числовое значение (номер CT), которое представляет собой среднее значение всех значений затухания, содержащихся в соответствующем вокселе. Это число сравнивается со значением затухания в воде и отображается на шкале произвольных единиц, названных единицами Хаунсфилда (HU) в честь сэра Годфри Хаунсфилда.

Эта шкала определяет воду как нулевое значение затухания (HU). Диапазон чисел CT составляет 2000 HU, хотя некоторые современные сканеры имеют больший диапазон HU до 4000. Каждое число представляет собой оттенок серого с +1000 (белый) и –1000 (черный) при любой конец спектра.

Некоторые сканеры имеют цилиндрические границы сканирования, но изображение на выходе квадратное. Пиксели, выходящие за эти границы, получают фиксированное значение -2000.

Первым шагом обычно является установка этих значений на 0. Затем давайте вернемся к единицам HU, умножив их на наклон масштабирования и добавив точку пересечения (которые удобно сохраняются в метаданных сканированных изображений!).

В следующей части мы будем использовать набор данных Kaggle по раку легких и сверточные нейронные сети с использованием Keras. Мы будем опираться на информацию, предоставленную в этой статье, чтобы перейти к следующей.

Благодарности:

  1. Https://pyscience.wordpress.com/2014/09/08/dicom-in-python-importing-medical-image-data-into-numpy-with-pydicom-and-vtk/
  2. Http://www.osirix-viewer.com/resources/dicom-image-library/
  3. Http://wearables.cc.gatech.edu/paper_of_week/viola01rapid.pdf
  4. Http://adilmoujahid.com/posts/2016/06/introduction-deep-learning-python-caffe/
  5. Http://dicomiseasy.blogspot.com/
  6. Https://www.kaggle.com/c/data-science-bowl-2017
  7. Http://docs.opencv.org/trunk/d6/d00/tutorial_py_root.html
  8. Сообщество Kaggle для разных скриптов и поддержки