Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_CUDA.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

Панель инструментов.

– Открыть файл

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

– Сохранить файл

Сохраняет файл в формате .bmp или .jpg.

– Переходы

Позволяет перемещаться по истории обработки изображения вперед или назад.

– Редактирование контуров

Вызывает модуль редактирования контуров.

– Классификация

Вызывает модуль классификации.

– Совмещение изображений

Вызывает модуль совмещения изображений.

– Анализ изображений

Вызывает модуль анализа изображений.

– Каналы изображения

Эти кнопки имеют два состояния – нажата/не нажата. Позволяет выбирать каналы для обработки. В окне изображения отображаются только его активные в данный момент каналы. При выборе яркостной картины изображения каналы становятся недоступны.

– Справка

Вызов справки к программе Sarcis.

Справа на панели инструментов расположен инструмент выбора активного устройства (видеокарты) для обработки изображений с помощью технологии CUDA:

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

Механизм подключения динамических библиотек.

Каждый пользователь имеет возможность подключать собственные методы обработки изображения. Для этого существует возможность включать и выключать внешние библиотеки. Методов обработки в одной библиотеке может быть сколько угодно много. Настройка программы позволяет зарегистрировать метод в программе, указав название библиотеки. Для этого служит модуль "Установка плагинов" (рис.3.8.)

Рис. 3.8. Окно модуля "Установка плагинов"

Созданный .dll-файл необходимо поместить в папку ..\Sarcis\Plugins. Все находящиеся в этой папке .dll-файлы отображаются в окне модуля "Установка плагинов" в левой его части. В одном файле может быть реализовано несколько функций, в этом случае все они будут отображены в виде раскрывающегося дерева. В окне справа будет выведено описание данного .dll-файла, в случае если оно было сделано. Результат применения функции будет выведен в новое или текущее окно в зависимости от выбора в раскрывающемся списке "Вывод". Кнопка "Обновить" служит для повторного просмотра папки Plugins на предмет появления .dll-файлов.

Создание внешней библиотеки

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

  • const int FCount – в переменной хранится количество реализованных в DLL методов обработки;

  • const char *Names[] – хранит названия методов обработки;

  • const char *Procs[] – содержит название всех функций обработки изображений, реализованных в данной библиотеке;

  • int FuncID[] – содержит идентификаторы функций (0 – функция для CPU, 1 – для GPU);

  • char *Description – содержит справочную информацию о библиотеке;

  • bool Invalid(int) – функция для проверки корректности библиотек;

  • int GetCount() – функция передает в программу число реализованных методов;

  • char *GetName(int) – функция передает в программу название всех реализованных методов;

  • char *GetProc(int) – передает название функций, реализующих данные методы;

  • char *GetDescription() – передает справочную информацию библиотеке;

  • int GetFuncID(int) – передает идентификатор функции.

Сами функции, реализующие методы обработки, должны соответствовать следующей форме:

float func(unsigned char* inbuf,unsigned char* outbuf,int height, int width );

где func – имя соответствующей функции,

inbuf – параметр, содержащий ссылку на исходное изображение,

outbuf – параметр, содержащий ссылку на обработанное изображение,

height – определяет высоту изображения в пикселях,

width – определяет ширину изображения в пикселях.

Все экспортируемые функции объявляются с ключевым словом _declspec(dllexport). Пример листинга программы динамической библиотеки приведен ниже.