Назад в библиотеку

Обработка медицинских изображений в среде разработки C#. NET

Автор: Панина А. И., Беловодский В. Н.
Источник: Інформаційні управляючі системи та комп’ютерний моніторинг (КСМ, ІУС-2012)/ Матерiали III мiжнародної науково-технiчної конференцiї студентiв, аспiрантiв та молодих вчених. — Донецьк, ДонНТУ — 2012.

Аннотация

Панина А. И., Беловодский В. Н. Обработка медицинских изображений в среде разработки C#. NET Рассмотрены некоторые группы медицинских изображений. Реализован программный продукт для визуального и предварительного анализа изображений и диагностики патологии в среде разработки C#. NET. Описаны основные этапы взаимодействия пользователя с данной программой.

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

Распознавание патологических процессов является одной из наиболее важных задач обработки медицинских изображений. Вместе с тем, задача автоматизированной диагностики патологических процессов по данным медицинских изображений пока еще далека от своего разрешения.

Все медицинские изображения, независимо от способов их получения, принадлежат к одной из двух групп: аналоговые и цифровые изображения. Аналоговые изображения несут информацию непрерывного характера (например, рентгено- или кардиограммы). Цифровые изображения обычно получаются с помощью компьютера и имеют в своей основе матрицу, которая содержится в его памяти. Таким образом, цифровые изображения, в отличие от аналоговых, имеют дискретный характер.

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

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

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

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

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

Математическая модель

Для реализации функций программы, связанных с расчётом расстояний и углов, прямая представлена двумя точками: началом и концом. Соответственно, каждая точка имеет координату по оси Х и У. Это позволяет использовать стандартные формулы и методы для работы с координатами на плоскости.

Расстояние между двумя равными вертикальными параллельными прямыми равно модулю разности их координат по оси Х, при условии, что точки имеют равные координаты по оси У.

Координаты для построения средней линии вычисляются по формуле середины отрезка.

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

Программная реализация

Исполняемый файл программы был разработан средствами Microsoft Visual Studio 2008, с использованием языка программирования прикладного уровня C#. Интерфейс программы, в настоящее время, является составным и состоит из главного окна и ряда элементов управления. Он выполнен в стандартном для windows-приложений стиле, что облегчает его восприятие.

Опишем, как программно реализуются основные функции данного приложения.

Определение расстояния между линиями осуществляется в несколько этапов.

Вначале получаем координаты начальных и конечных точек последовательно выделенных прямых.

Стандартное разрешение рабочей области формы составляет 100 пикселей на дюйм. Соответственно 1 дюйм = 25,4 мм = 2,54 см. Таким образом, в 1 пиксель приходится 0,0254 см, что соответствует реальному расстоянию на экране.

Т.к. определяем расстояние между параллельными вертикальными прямыми, то расчетная формула будет равна:

distance = Math.Abs((p1[0].X + p1[1].X)/2 - (p2[0].X + p2[1].X)/2)*0.0254, где

p1 – массив, содержащий координаты точек первой прямой,

p2 – массив, содержащий координаты точек второй прямой,

Math.Abs – функция взятия модуля.

По условию задачи, шаг сетки составляет 5 сантиметров. Округленное расстояние между линиями сетки составляет 25 пикселей. Значит 25 пикселей = 5 см, следовательно, 5 пикселей = 1 см.

distance2 = Math.Abs((p1[0].X + p1[1].X) / 2 - (p2[0].X + p2[1].X) / 2) /5 – расстояние между прямыми с учетом шага сетки.

Определение угла между линиями выглядит следующим образом:

double abcd = (p1[1].X - p1[0].X) * (p2[1].X - p2[0].X) + (p1[1].Y - p1[0].Y) * (p2[1].Y - p2[0].Y) – вычисление скалярного произведения.

double ab = Math.Sqrt((p1[1].X - p1[0].X) * (p1[1].X - p1[0].X) + (p1[1].Y - p1[0].Y) * (p1[1].Y - p1[0].Y)) – нахождение длины первой линии (вектора).

double cd = Math.Sqrt((p2[1].X - p2[0].X) * (p2[1].X - p2[0].X) + (p2[1].Y - p2[0].Y) * (p2[1].Y - p2[0].Y)) – нахождение длины второй линии(вектора).

double angle = Math.Round(rad * Math.Acos(abcd / (ab * cd)),2) – вычисление угла между векторами и перевод меры этого угла из радиан в градусы.

if (angle > 90.0) { angle = 180 - angle; } – вывод только острого или прямого угла.

Построение средней линии между двумя маркерными линиями реализуется следующим образом:

this.s.addLine(Math.Abs(p1[0].X + p2[0].X)/2, p1[0].Y, Math.Abs(p1[1].X + p2[1].X)/2, p2[1].Y, this.CreationPenColor, CreationPenWidth).

Этапы взаимодействия пользователя с программой

Этапы и порядок взаимодействия пользователя с программой следующие:

1. Загружаются фотографии в формате JPEG (пациент на фоне калибровочного экрана) (рисунок 1).

Рисунок 1 – Исходные изображения: фото 1, фото 2Рисунок 1 – Исходные изображения: фото 1, фото 2

Рисунок 1 – Исходные изображения: фото 1, фото 2

2. На изображениях, показанных на фото 1 и 2, проводится построение трех параллельных линий. На калибровочном экране справа, – это 3 красные линии – рисунок 2 и 3.

Рисунок 2 – Вертикальные маркерные линии на фото 1

Рисунок 2 – Вертикальные маркерные линии на фото 1

Рисунок 3 – Вертикальные маркерные линии на фото 2

Рисунок 3 – Вертикальные маркерные линии на фото 2

3. Проводится горизонтальная реберная линия (она проходит через наивысшую точку, образованную реберной дугой, параллельно калибровочным линиям) – рисунок 5.

4. Рассчитываются отклонения:

Фото 1:

Рисунок 4 – Определение расстояний

Рисунок 4 – Определение расстояний

Фото 2:

Рисунок 5 – Требуемые построенияРисунок 5 – Требуемые построения

Рисунок 5 – Требуемые построения

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

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

Выводы

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

Список использованной литературы

1. Шилд Г. C#4. 0: полное руководство. – М.: ООО «И. Д. Вильямс», 2011. – 1056 с.
2. Агуров П. В. C#. Сборник рецептов. – СПб.: БХВ-Петербург, 2007. – 432 с.