Реализация пользовательского интерфейса программной обработки медицинских изображений в MATLAB
В данной статье рассматривается задача проектирования и реализации пользовательского интерфейса программной обработки медицинских изображений в среде MATLAB. Целью статьи является создание шаблонов ситуационного интерфейса, которые могут программно редактироваться под изменяющиеся задачи и объекты обработки. В связи с этим предлагается использовать некоторые функции программного пакета MATLAB, которые используются для создания всплывающих диалоговых окон, а также редактирования их содержания.
Введение.
Интерфейс пользователя имеет большое значение для любой программной среды и считается важной ее частью, направленной, главным образом, на конечного пользователя. Именно по интерфейсу пользователь судит о разработанной программе в целом. Зачастую заключение об использовании программного обеспечения пользователь принимает по тому, в какой степени ему комфортен и понятен интерфейс. В области разработки пользовательских интерфейсов есть ряд задач, таких как высокая трудозатратность разработки, проблема адаптивности интерфейса к изменяющимся внешним условиям и проблема удобства применения интерфейса [1]. Вследствие этого необходимым считается выбор гибкой и интерактивной среды разработки приложений обработки данных. MATLAB является надежным программным обеспечением, которое отвечает требованиям, подходящим как для выполнения всевозможных вычислений и выводов результатов, так и для создания пользовательского интерфейса [2]. Невзирая на существование разных способов создания интерактивных окон, инструменты пользовательского интерфейса MATLAB чаще всего содержат элементную библиотеку, включающую меню, прокрутку текста вверх и вниз, кнопки и другие элементы, необходимые для интуитивно понятного пользования. Стоит отметить, что существуют и высокоуровневые средства конструирования интерфейса, которые могут быть применены профессиональными программистами. Последние обычно используют пакет инструментов, который дает возможность специфицировать функции ввода-вывода и определять интерфейсные составляющие, применяя технику прямого манипулирования. Но в процессе взаимодействия пользователя и разработчика может возникать проблема семантического разрыва [3]. Вследствие этого необходимо большое количество итераций, прежде чем разрабатываемый продукт в целом и интерфейс в частности будут удовлетворять требованиям пользователя.
Постановка задачи.
Необходимо реализовать интерфейс пользователя, где будет предложен выбор использования определённого метода обработки изображения с возможностью просмотреть оригинальное изображение до обработки и дальнейшего принятия решения по выбору способа сегментации. При разработке алгоритма построения интерфейса одним из используемых методов обработки был взят метод Собеля, который использует фильтрацию исходного изображения, а следующим - метод градиентной фильтрации. Программная реализация методов, используемых в данной работе, представлена в [4].
Решение задачи.
С помощью операторов switch, case, otherwise программа оценивает выражение, вписанное в командной строке, и выбирает выполнение одной из нескольких групп операторов. Прописав условия, можно отображать разный текст в зависимости от значения, введенного в коде. После запуска кода пользователь увидит перед собой диалоговое окно выбора, представленное на рисунке 1.
Рисунок 1 – Диалоговое окно после запуска программы
Далее интерфейс предложит выбрать, каким способом обработать изображение. В данном случае выбор состоит из метода Собеля и метода градиентной фильтрации. Стоит отметить, что для разных целей выбор можно расширить, программно дописав код. Также у пользователя есть возможность посмотреть на изображение без обработки и принять решение, каким способом проводить сегментацию. На рисунке 2 изображен результат выбора действия «Показать оригинальное изображение».
Рисунок 2 – Диалоговое окно выбора после показа оригинального изображения
Программный код:
Pic=imread('izobrazhenie.jpg');
CellStr = {'Показать оригинальное изображение'; 'Перейти к обработке изображения методом Собеля'; 'Перейти к обработке изображения методом градиентной фильтрации'};
L_ycbcr=rgb2ycbcr(Pic);
[picture] = listdlg('ListString', CellStr,...
'SelectionMode','single','Name', 'Окно выбора', 'ListSize', [500 200],
'PromptString', 'Что
disp(['Вы выбрали: '
switch picture
case 1
P=imread('jop.jpg');
imshow(P)
Pic=imread('jop.jpg');
CellStr = {'Обработать изображение методом Собеля'; 'Обработать методом градиентной фильтрации'};
L_ycbcr=rgb2ycbcr(Pic);
[picture] = listdlg('ListString', CellStr,... 'SelectionMode','single','Name', 'Окно выбора', 'ListSize', [500 200], 'PromptString', 'Как вы хотели бы обработать изображение?', 'fus', 5); disp(['Вы выбрали: ' CellStr{picture}]);
switch picture
case 1
P=L_ycbcr(:,:,1);
BW = edge(P,'sobel');
figure, imshow(BW);title('Выделение границ на исходном изображении методом ') case 2
u=fspecial('sobel');
uq = u';
Gx=imfilter(double(P), uq);
бы вы хотели сделать?', 'fus', 5);
CellStr{picture}]);
Gy=imfilter(double(P), u);
Gg = abs(Gx)+ abs(Gy);
figure, imshow(uint8(Gg));title('Обработка изображения методом градиентной фильтрации')
end
case 2
P=L_ycbcr(:,:,1);
BW = edge(P,'sobel');
figure, imshow(BW);title('Обработка изображения методом Собеля ') case 3
P=imread('jop.jpg');
u=fspecial('sobel');
uq = u';
Gx=imfilter(double(P), uq);
Gy=imfilter(double(P), u);
Gg = abs(Gx)+ abs(Gy);
figure, imshow(uint8(Gg));title('Обработка изображения методом градиентной фильтрацией')
end
Выбрав один из предложенных методов обработки, пользователь увидит его результат (рисунок 3 а, б).
Рисунок 3 – а) Результат выбора обработки изображения методом Собеля; б) Результат выбора обработки изображения градиентной фильтрацией
Выводы.
Реализация пользовательских интерфейсов в приложениях является сложной задачей для разработчиков, так как пользовательский интерфейс – важный элемент любой прогрессивной программной системы, поскольку компьютерные системы предназначены для того, чтобы с ними работали пользователи, а пользователи осуществляют взаимодействие с системой именно через интерфейс. Для разработки интерфейса использовался пакет моделирования MATLAB [5], обладающего большим набором инструментов для проектирования компьютерных систем. Рассмотренные и реализованные в статье методы сегментации, а также программное обеспечение с рядом дополнений могут применяться как для решения практических задач в медицине, так и для разных семейств объектов и систем естественного, так и техногенного происхождения [6].
Список литературы
- Белоусова Светлана Алексеевна, Рогозов Юрий Иванович Анализподходов к созданию пользовательского интерфейса // Известия ЮФУ. Технические науки. 2014. No6 (155). URL: https://cyberleninka.ru/article/n/analiz- podhodov-k-sozdaniyu-polzovatelskogo-interfeysa (дата обращения: 30.10.2020).
- Гонсалес Р. Цифровая обработка изображений в среде MATLAB / Р. Гонсалес, Р. Вудс, С. Эддинс. М.: Техносфера, 2006. — 616 c.
- Федечкин Роман Сергеевич, Французова Юлия Вячеславовна Разработка интерфейса пользователя для автоматизированной системы // Известия ТулГУ. Технические науки. 2016. No2. URL: https://cyberleninka.ru/article/n/razrabotka- interfeysa-polzovatelya-dlya-avtomatizirovannoy-sistemy (дата обращения: 30.10.2020).
- Журавель И.М. // Краткий курс теории обработки изображений. Изд. Москва. 2008 г.
- Ковалев В.А. Анализ текстуры трехмерных медицинских изображений // Нац. акад. наук Беларуси, Объед. инст-т проблем информатики. - Минск: Белорусская наука, 2008. - 263 с.
Источники
- Белоусова Светлана Алексеевна, Рогозов Юрий Иванович Анализ подходов к созданию пользовательского интерфейса // Известия ЮФУ. Технические науки. 2014. №6 (155).
- Федечкин Роман Сергеевич, Французова Юлия Вячеславовна Разработка интерфейса пользователя для автоматизированной системы // Известия ТулГУ. Технические науки. 2016
Комментарии
занимательно!
Спасибо за информацию, приведённую в статье!
а можно расширить количество методов сегментации в программе?
Да, у меня есть предыдущие работы где я делал обзор на большинство методов