Оглавление:

Использование различных пороговых значений интенсивности серой шкалы для визуализации и выявления аномалий на изображениях маммограммы: 9 шагов
Использование различных пороговых значений интенсивности серой шкалы для визуализации и выявления аномалий на изображениях маммограммы: 9 шагов

Видео: Использование различных пороговых значений интенсивности серой шкалы для визуализации и выявления аномалий на изображениях маммограммы: 9 шагов

Видео: Использование различных пороговых значений интенсивности серой шкалы для визуализации и выявления аномалий на изображениях маммограммы: 9 шагов
Видео: Симпозиум Врожденный порок сердца — проблема длиною в жизнь (кардиологические аспекты и диагностика) 2024, Ноябрь
Anonim
Использование различных пороговых значений интенсивности серой шкалы для визуализации и выявления аномалий на изображениях маммограммы
Использование различных пороговых значений интенсивности серой шкалы для визуализации и выявления аномалий на изображениях маммограммы

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

Шаг 1. Организация данных маммограммы

Организация данных маммограммы
Организация данных маммограммы

Одна из первых вещей, которые я понял, что мне нужно сделать, - это упорядочить данные очень четким, кратким и доступным способом. Это переменные, которые я извлек из базы данных маммограмм mini-MIAS. Я создал два массива. Один, содержащий 4 столбца:

  1. Номер изображения:
  2. x координата массы
  3. y координата массы
  4. Радиус массы: (Это определило приблизительный размер массы

Второй массив содержал классификационную информацию:

  1. Тип фоновой ткани: жирная (F), жировая железистая (G), плотная (D)
  2. Описание массы: четко определенное (CIRC), спикулярное (SPIC), плохо определенное другое (MISC) Архитектурное искажение (ARCH), асимметрия (ASYM), нормальное (NORM)
  3. Диагноз: доброкачественный (B), злокачественный (M).

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

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

Формат файла маммограммы: mdb001 G CIRC B 535 425 197

mdb002 G CIRC B 522280 69

Справка TextScan: https://www.mathworks.com/help/matlab/ref/textsca… База данных маммограмм:

Шаг 2: обработка изображений

Обработка изображений
Обработка изображений

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

  1. Adapthisteq: эта функция преобразует значения интенсивности изображений в градациях серого и RGB с использованием адаптивного выравнивания гистограммы с ограничением контраста. Другими словами, он настраивает гистограмму значений интенсивности в соответствии с заданным типом распределения. Ссылка на mathworks для этой функции прилагается ниже для дальнейшего чтения.
  2. imbinarize: создает двоичное изображение из изображения в градациях серого, присваивая всем пикселям с определенной интенсивностью 1 с, а пикселям ниже этого значения - 0. Я использовал эту функцию для проверки оптимального порога для уменьшения фонового тканевого шума.

Шаг 3. Код порога

Код порога
Код порога

Цикл for используется для бинаризации маммограммы с различными порогами. Чтобы получить более широкое представление, цикл for содержит код от Шага 3 до Шага 7. Таким образом, каждое двоичное изображение будет проанализировано на предмет отклонений. Кроме того, этот цикл for заключен в другой цикл for, который импортирует новое изображение маммограммы из базы данных на каждой итерации.

Шаг 4: поиск аномалий для каждого двоичного изображения

Обнаружение аномалий для каждого двоичного изображения
Обнаружение аномалий для каждого двоичного изображения
Обнаружение аномалий для каждого двоичного изображения
Обнаружение аномалий для каждого двоичного изображения

Далее я обработал двоичные изображения, используя функцию strel в сочетании с imopen, чтобы удалить фоновый шум. Двоичное изображение из предыдущего шага инвертируется и фильтруется с использованием окрестности, определенной SE. Затем я использовал bwlabel, чтобы пометить любые области, в которых было не менее 8 подключенных пикселей.

Функция region props использовалась для нахождения свойств центроида и площади каждого пятна, идентифицированного bwlabel.

Затем все пятна размером более 500 пикселей были идентифицированы с помощью ismember. Центроиды для идентифицированных пятен были нанесены на изображение, которое отображало только пятна размером более 500. Area Identified = ismember (Labeled, indicies (sortedAreas> 500)); Пятна = Выявлено> 0;

Шаг 5: Построение графика расположения и размера диагностированной массы для визуального сравнения

Нанесение на график местоположения и размера диагностированной массы для визуального сравнения
Нанесение на график местоположения и размера диагностированной массы для визуального сравнения
Нанесение на график местоположения и размера диагностированной массы для визуального сравнения
Нанесение на график местоположения и размера диагностированной массы для визуального сравнения
Нанесение на график местоположения и размера диагностированной массы для визуального сравнения
Нанесение на график местоположения и размера диагностированной массы для визуального сравнения

Я хотел проверить, правильны ли пятна, найденные bwlabel. Я сделал это двумя способами. Сначала я проанализировал точность своего классификатора, сделав визуальное сравнение. Я просто нанес реальный размер и местоположение аномалии (красный кружок), а также местоположение, определенное кодом (синий x) на предварительно обработанном изображении маммограммы. На шести изображениях выше показаны эффекты увеличения порогового значения шкалы серого.

Шаг 6: реализация второго метода сравнения

Реализация второго метода сравнения
Реализация второго метода сравнения

Второй способ, которым я тестировал классификатор и пороговые значения, заключался в определении того, находятся ли местоположения, обнаруженные классификатором, на определенном расстоянии от координат диагностированной аномалии. Я сохранил пороговые значения, для которых хотя бы одна из идентифицированных точек находилась в пределах 1,5 * r от известной аномалии, в отдельный текстовый файл под названием «Данные маммограммы». Целью этого было найти минимальный порог, необходимый моему классификатору для определения отклонения от нормы.

Шаг 7: Анализ собранных данных

Анализ собранных данных
Анализ собранных данных
Анализ собранных данных
Анализ собранных данных

Я запустил программу на всех изображениях аномальных маммограмм, и у меня остался огромный текстовый файл данных. Чтобы найти лучший порог для каждого типа ткани, я организовал данные по типу ткани и построил гистограмму пороговых значений для каждого типа ткани. Было принято решение о правильном пороговом значении, при котором пороговое значение обеспечивает наиболее точные результаты для каждого типа ткани. Я сохранил эти данные для загрузки в свой классификатор.

Шаг 8: Создание собственного классификатора

Создание собственного классификатора!
Создание собственного классификатора!
Создание собственного классификатора!
Создание собственного классификатора!
Создание собственного классификатора!
Создание собственного классификатора!
Создание собственного классификатора!
Создание собственного классификатора!

После того, как я нашел наиболее подходящие пороговые значения для каждого типа ткани, я отредактировал свой исходный код, чтобы пользователь вводил номер изображения и тип ткани, чтобы выбрать порог для изображения маммограммы. Затем я нанесла на карту диагностированное место на маммограмме с найденными точками на исходных изображениях маммограммы. Я хотел сделать это более увлекательным, поэтому я запрограммировал функцию обрезки круглой области, окружающей ROI. Пользователю будет предложено выбрать центральную точку и несколько точек, которые лучше всего охватывают рентабельность инвестиций. Я прикрепил сюда оба файла Matlab.

Шаг 9: Улучшения? Есть предположения?

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

Рекомендуемые: