В этом примере показано, как создать код CUDA ® для модели Simulink ®, которая может обнаруживать и выводить границы маркеров полос на изображении. В этом примере в качестве входных данных используется изображение RGB. imresize(Панель инструментов обработки изображений), rgb2gray, ordfilt2(Панель инструментов обработки изображений), hough(Панель инструментов обработки изображений), houghpeaks(Панель инструментов обработки изображений), и houghlinesФункции (Панель инструментов обработки изображений), которые являются частью Toolbox™ обработки изображений для обнаружения разметки полосы движения. В этом примере подробно рассматривается определение полосы движения на GPU с помощью функции houghlines.
Этот пример иллюстрирует следующие концепции:
Моделирование приложения обнаружения полосы движения в Simulink с помощью функций обработки изображений.
Сконфигурируйте модель для генерации кода графического процессора.
Создайте исполняемый файл CUDA для модели Simulink.
Необходимый
В этом примере создается CUDA MEX со следующими требованиями сторонних производителей.
Графический процессор NVIDIA ® с поддержкой CUDA и совместимый драйвер.
Дополнительный
Для построений, отличных от MEX, таких как статические, динамические библиотеки или исполняемые файлы, этот пример имеет следующие дополнительные требования.
Инструментарий NVIDIA.
Переменные среды для компиляторов и библиотек. Дополнительные сведения см. в разделах Аппаратное обеспечение сторонних производителей и Настройка необходимых продуктов.
Чтобы убедиться, что компиляторы и библиотеки, необходимые для выполнения этого примера, настроены правильно, используйте coder.checkGpuInstall функция.
envCfg = coder.gpuEnvConfig('host');
envCfg.BasicCodegen = 1;
envCfg.Quiet = 1;
coder.checkGpuInstall(envCfg);
houghlines Модель SimulinkПоказана модель Simulink для обнаружения полосы движения.
open_system('lane_detection');

Lane Detection подсистема содержит MATLAB Function блок, который принимает изображение интенсивности в качестве входного сигнала и выдает обнаруженные полосы в качестве выходного сигнала. Эта функция основана на реализации алгоритма обнаружения полосы движения с использованием houghlines как описано в разделе Определение полосы движения на GPU с помощью примера использования функции houghlines. При запуске модели Visualization блок отображает выходное изображение обнаруженной полосы движения.
Откройте диалоговое окно «Параметры конфигурации».
На панели «Цель моделирования» выберите ускорение графического процессора.
Запустите моделирование в обычном режиме.
set_param('lane_detection', 'SimulationMode', 'Normal'); sim('lane_detection');

На панели «Создание кода» выберите язык C++ и включите функцию «Генерировать код графического процессора».
Откройте панель «Цель моделирования». В разделе Дополнительные параметры включите порог динамического выделения памяти в функциях MATLAB. Дополнительные сведения см. в разделе Динамическое выделение памяти в функциях MATLAB (Simulink).
Откройте окно «Создание кода» > панель «Код графического процессора». В подкатегории Библиотеки (Libraries) включите cuBLAS, cuSOLVER и cuFFT.
Создание и построение модели Simulink на главном графическом процессоре с помощью slbuild команда. Генератор кода помещает файлы в папку построения, подпапку с именем lane_detection_ert_rtw в текущей рабочей папке.
status = evalc("slbuild('lane_detection')");
Закройте модель Simulink.
close_system('lane_detection');
bdclose (Simulink) | close_system (Simulink) | get_param (Simulink) | load_system (Simulink) | open_system (Simulink) | save_system (Simulink) | set_param (Simulink) | sim (Simulink) | slbuild (Симулинк)