Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Магистерская диссертация.pdf
Скачиваний:
63
Добавлен:
27.03.2015
Размер:
2.77 Mб
Скачать

- VirtualSegment – вспомогательный сегмент для проверки условия смежности по диапазонам значений плотности.

Более подробное комментирование и реализация основных структур, классов и методов приведено в Приложении В.

3.2. Организация пользовательского интерфейса

Для запуска программной системы необходимо открыть исполняемый файл «Neocortex.exe», после чего на экране появится главная форма приложения, на которой расположено окно для визуализации исходных данных, результатов сегментации и реконструкции объектов, 2 индикатора для наглядного представления продолжительных действий, а также элементы меню, обеспечивающие функциональность данной системы.

Основная функциональность приложения распределена по 5 вкладкам:

1)«Информация» – сообщает о размерах исходных данных, ширине и высоте каждого слоя, оригинальных масштабах вдоль осей X, Y, Z и количестве загруженных слоёв;

2)«Визуализация» – позволяет настроить параметры отображения исходных данных, их сегментов и реконструированных трёхмерных объектов (выбрать метод визуализации, режим работы с данными – 2D или 3D, включить или отключить прозрачность объектов, изменить расстояние между слоями данных в случае их множественного отображения, масштабы вдоль осей X, Y и Z);

3)«Локализация» – выделение фрагмента исходных данных, представляющего интерес, на выбранном слое методом активного контура для его дальнейшей сегментации, а также наследование найденного контура на оставшиеся слои данных;

4)«Сегментация» – разбиение исходных данных на фрагменты, соответствующие разным объектам, и идентификация этих объектов;

5)«Реконструкция» – получение трёхмерных моделей исходных данных и идентифицированных объектов.

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

Работу с приложением следует начать с загрузки исходных данных. Для этого нужно в главном меню выбрать «Файл» → «Загрузить данные» → «Из bin-файла…», либо «Файл»

→ «Загрузить данные» → «Из каталога…». В результате откроется диалоговое окно для выбора интересующего файла или папки (рис. 13). В первом случае будет загружена компьютерная томограмма из файла в формате «.bin», а во втором – первая порция

38

изображений из выбранного каталога (размер загружаемой порции данных определяется исходя из текущего объёма доступной для использования оперативной памяти ЭВМ).

Файл исходных данных с расширением «.bin» включает в себя следующие поля:

размеры данных вдоль осей X, Y и Z, соответственно, SizeX, SizeY и SizeZ (3 целочисленных значения типа int);

размеры воксела вдоль осей X, Y и Z (3 действительных значения типа float);

одномерный массив значений типа short размером SizeX*SizeY*SizeZ.

а) б)

Рис. 13. Загрузка исходных данных: а) – из bin-файла, б) – из каталога изображений

В результате исходные данные будут считаны и визуализированы в окне главной формы (рис. 14).

Рис. 14. Главное окно приложения «Neocortex» после загрузки исходных данных

39

В программной системе «Neocortex» поддерживаются 2 режима сегментации: послойная сегментация (2D) и сегментация последовательности нескольких слоёв как единого целого (3D). В 2D-режиме пользователь может выбрать текущий рассматриваемый слой, а в 3D-режиме – номера начального и конечного слоёв рассматриваемой последовательности. Чтобы перейти из одного режима в другой, нужно нажать на соответствующую кнопку на вкладке «Визуализация» главной формы приложения (рис. 15).

Рис. 15. Вкладка приложения с настройками визуализации данных

Рассмотрим более подробно дополнительные настройки сегментации. Чтобы открыть их, нужно выбрать в главном меню пункт «Настройки» → «Сегментация…». Появится диалоговое окно следующего вида:

Рис.16. Настройки сегментации и параметров метода k-средних

40

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

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

«Сегментировать области, найденные методом активного контура» – если задействовать данную опцию, то на каждом слое (изображении) исходных данных сегментироваться будут только области, предварительно локализованные соответствующим методом;

«Учитывать координаты при сегментации» – позволяет осуществлять сегментацию данных по плотности, учитывая при этом расположение вокселов относительно друг друга;

«Сегментировать кластеры по координатам» – иерархическая декомпозиция сегментов по диапазонам плотности на кластеры по расстояниям между вокселами;

«Поиск связных областей» – декомпозиция каждого сегмента как объекта на бинарном изображении на 8-связные области;

-диапазон значений плотности, в котором следует провести сегментацию;

-параметры алгоритма k-средних:

максимально возможное число рассматриваемых сегментов по значениям плотности вокселов, а также количество искомых кластеров по расстояниям между вокселами в каждом из сегментов по плотности (могут принимать значения от 2 до 50);

количество итераций, выполняемых в ходе работы алгоритма для каждой сегментации (от 1 до 100);

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

Вкладка «Фильтрация сегментов» предназначена для выбора одного из 4 поддерживаемых фильтров математической морфологии (расширение, сужение, открытие, закрытие), которые могут быть применены при обработке сегментов с целью улучшить качество последующей идентификации объектов (рис. 17, а).

Для каждого из реализованных фильтров математической морфологии можно указать размеры маски (как ширину, так и высот у), которые могут принимать любое значение из

41

множества {3, 5, 7}. Содержимое маски в текущей реализации стандартно и предусматривает использование всех пикселов изображения из окрестности, то есть, маска размерами 3x3 имеет следующий вид:

1 1 1

1 1 11 1 1

а) б)

Рис. 17. а) – настройки фильтрации сегментов, б) – выбор атрибутов сегментов для поиска соответствий

Перейдя на вкладку «Поиск соответствий», можно выбрать атрибуты, используемые для поиска соответствий между сегментами на разных слоях, а также тип смежности сегментов друг с другом (каждый с каждым, только между сегментами на соседних слоях, или не учитывать смежность вообще) (рис. 17, б).

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

Для того чтобы отсегментировать исходные данные с учётом вышеописанных настроек, следует перейти на вкладку «Сегментация» и нажать на кнопку «Сегментировать данные». Ход выполнения сегментации будет отображаться в нижней части формы, под окном для визуализации данных (рис. 18).

42

Рис. 18. Ход выполнения процесса сегментации исходных данных

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

(рис. 19):

-индекс сегмента (индексация начинается с 0);

-объём сегмента в используемых метрических единицах;

-минимальное и максимальное значения плотности вокселов;

-текущий цвет сегмента, его непрозрачность (целочисленное значение от 0 до 255), а также флаг видимости.

Для дальнейшей работы с сегментами необходимо отобразить их в окне визуализации. Для этого нужно включить режим «Отображать сегменты», нажав на соответствующий переключатель на вкладке «Сегментация». В результате сегменты будут отображены с учётом текущих значений цвета, непрозрачности и видимости. При этом если исходные данные уже отсегментированы в обоих режимах (2D и 3D), то, при переключении между ними, в окне будут отображаться соответствующие сегменты.

43

Рис. 19. Таблица найденных сегментов и их отображение в окне для визуализации

У пользователя есть возможность редактировать атрибут цвета для каждого из сегментов, представленных в таблице, с целью выделения конкретных интересующих деталей объекта. Для этого нужно выбрать строку таблицы, соответствующую конкретному сегменту, и нажать на ячейку столбца «Цвет». Появится вспомогательное диалоговое окно с выбором нужного цвета (рис. 20). По нажатию на кнопку «OK» вокселы, соответствующие редактируемому сегменту, будут отображены выбранным цветом в окне для визуализации. В случае отмены цвет вокселов и сегмента останется прежним.

Кроме того, пользователь может менять уровень непрозрачности для просмотра одних сегментов сквозь другие (что особенно наглядно в случае работы с сегментами в 3Dрежиме), а также «выключать» ненужные сегменты (например, те, которые соответствуют фону или шуму), делая их невидимыми (столбцы «Непрозрачность» и «Отобразить» соответственно). Для изменения состояния видимости сегментов следует либо щёлкнуть мышью в окне для визуализации, либо нажать на кнопку «Отобразить выбранные сегменты».

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

44

Рис. 20. Выбор цвета сегмента при его редактировании

В результате редактирования всех сегментов на выбранном пользователем слое он будет выглядеть аналогично тому, как это показано на рис. 21.

Рис. 21. Результат редактирования сегментов

После завершения сегментации исходных данных в 2D-режиме у пользователя есть возможность сделать 2 вещи:

1) Выполнить фильтрацию одного или нескольких сегментов текущего рассматриваемого слоя; для этого нужно выделить строки таблицы, соответствующие данным сегментам, и нажать на кнопку «Фильтрация выбранных сегментов». При нажатии на кнопку

45

«Фильтрация сегментов текущего слоя» действие будет выполнено для каждого из сегментов рассматриваемом слое данных. В результате для всех сегментов слоя будут пересчитаны их атрибуты с учётом результатов фильтрации. Изменения в структуре сегментов будут отображены в окне для визуализации и в таблице (рис. 22).

2) Осуществить идентификацию объектов по найденным сегментам, нажав на кнопку

«Поиск соответствий между сегментами». В результате система найдёт цепочки соответствий между сегментами самого высокого уровня детализации. Каждая из этих цепочек будет основой облака точек соответствующего объекта при его дальнейшей 3Dреконструкции. По окончании поиска соответствий станет доступен переключатель

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

Рис. 22. Результат фильтрации выбранного сегмента

Когда исходные данные отсегментированы и осуществлена идентификация объектов по найденным сегментам, система позволяет построить трёхмерную модель для каждого обнаруженного объекта. Для этого нужно перейти на вкладку «3D-реконструкция», на которой будут активированы кнопки «Реконструкция 2D-сегментов», либо «Реконструкция 3D-сегментов» (в зависимости от того, в каком режиме осуществлялась сегментация). Будет запущен процесс 3D-реконструкции каждого идентифицированного

46

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

Для отображения трёхмерных моделей объектов в виде полигональных поверхностей следует включить режим «Отображать результаты реконструкции 2D-сегментов», либо «Отображать результаты реконструкции 3D-сегментов» (в зависимости от выбранного режима сегментации), с помощью соответствующих переключателей. В результате в окне визуализации появятся реконструированные трёхмерные модели объектов (рис. 23). Цвет, непрозрачность и видимость каждого объекта могут быть изменены в таблице для сегментов на соответствующей вкладке. При этом значения данных атрибутов для каждого объекта совпадают со значениями для соответствующего 3D-сегмента, или 2D-сегмента, порождающего найденное соответствие (в зависимости от выбранного режима сегментации).

Рис. 23. Отображение результатов 3D-реконструкции сегментов

47