Оглавление:
- Шаг 1. Организация данных маммограммы
- Шаг 2: обработка изображений
- Шаг 3. Код порога
- Шаг 4: поиск аномалий для каждого двоичного изображения
- Шаг 5: Построение графика расположения и размера диагностированной массы для визуального сравнения
- Шаг 6: реализация второго метода сравнения
- Шаг 7: Анализ собранных данных
- Шаг 8: Создание собственного классификатора
- Шаг 9: Улучшения? Есть предположения?
Видео: Использование различных пороговых значений интенсивности серой шкалы для визуализации и выявления аномалий на изображениях маммограммы: 9 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Цель этого проекта состояла в том, чтобы идентифицировать и использовать параметр для обработки изображений маммограммы в оттенках серого для различных классификаций фоновых тканей: жировая, железистая и плотная. Эта классификация используется, когда рентгенологи анализируют маммограммы и должны учитывать, скрывает ли плотность ткани какие-либо аномалии, такие как поражения или опухоли. Это происходит потому, что существуют как нормальные физиологические структуры, такие как железистая ткань, так и фиброзная соединительная ткань. аномальные морфологии, такие как кальцификаты и опухоли, будут очень яркими на маммограмме, в то время как менее плотная жировая ткань будет казаться черной. Поэтому было целесообразно запрограммировать классификатор, который может управлять уровнями интенсивности пикселей, чтобы наилучшим образом визуализировать и идентифицировать массы.
Шаг 1. Организация данных маммограммы
Одна из первых вещей, которые я понял, что мне нужно сделать, - это упорядочить данные очень четким, кратким и доступным способом. Это переменные, которые я извлек из базы данных маммограмм mini-MIAS. Я создал два массива. Один, содержащий 4 столбца:
- Номер изображения:
- x координата массы
- y координата массы
- Радиус массы: (Это определило приблизительный размер массы
Второй массив содержал классификационную информацию:
- Тип фоновой ткани: жирная (F), жировая железистая (G), плотная (D)
- Описание массы: четко определенное (CIRC), спикулярное (SPIC), плохо определенное другое (MISC) Архитектурное искажение (ARCH), асимметрия (ASYM), нормальное (NORM)
- Диагноз: доброкачественный (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 для повышения контрастности изображения, а затем имбинаризовал, чтобы преобразовать изображение в двоичное изображение, чтобы поэкспериментировать с разными пороговыми уровнями.
- Adapthisteq: эта функция преобразует значения интенсивности изображений в градациях серого и RGB с использованием адаптивного выравнивания гистограммы с ограничением контраста. Другими словами, он настраивает гистограмму значений интенсивности в соответствии с заданным типом распределения. Ссылка на mathworks для этой функции прилагается ниже для дальнейшего чтения.
- 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. файл. Поскольку это был проект с крайним сроком, мне пришлось где-то остановиться, но я надеюсь, что смогу использовать полученные навыки обработки изображений в других приложениях. Кроме того, я приложил файл, который использовался для пакетной обработки всех аномальных изображений маммограммы.
Рекомендуемые:
Сервометроном, программируемый для различных скоростей: 3 шага
Сервометроном с возможностью программирования различных скоростей: создайте свой собственный метроном. Все, что вам нужно, это стартовый комплект Arduino Mega 2560 и совместимый компьютер
ЖК-дисплей I2C / IIC - Использование ЖК-дисплея SPI для ЖК-дисплея I2C Использование модуля SPI-IIC с Arduino: 5 шагов
ЖК-дисплей I2C / IIC | Используйте ЖК-дисплей SPI для ЖК-дисплея I2C Использование модуля SPI-IIC с Arduino: Привет, ребята, так как обычный ЖК-дисплей SPI 1602 имеет слишком много проводов для подключения, поэтому его очень сложно связать с Arduino, но на рынке доступен один модуль, который может преобразовать дисплей SPI в дисплей IIC, поэтому вам нужно подключить только 4 провода
Система сбора и визуализации данных для электрического гоночного велосипеда MotoStudent: 23 шага
Система сбора и визуализации данных для электрического гоночного велосипеда MotoStudent: система сбора данных - это совокупность аппаратного и программного обеспечения, работающих вместе, чтобы собирать данные с внешних датчиков, хранить и обрабатывать их впоследствии, чтобы их можно было визуализировать графически и анализировать, позволяя инженерам сделать
Радио временной шкалы NFC: 8 шагов (с изображениями)
NFC Timeline Radio: в лабораторном проекте в отделе вездесущих медиа, ориентированных на человека, мы столкнулись с задачей создать современный музыкальный проигрыватель, который ссылается на традиционный дизайн радио. Срок - один семестр
IoT Data Science PiNet для визуализации данных смарт-экрана в реальном времени: 4 шага
Наука о данных IoT PiNet для визуализации данных интеллектуального экрана в реальном времени: вы можете легко собрать сеть интеллектуальных дисплеев Интернета вещей для визуализации данных, чтобы усилить ваши исследовательские усилия в области науки о данных или любой другой количественной области. Вы можете вызвать кнопку " push " ваших участков клиентам прямо из вашего