В этом примере показано, как сгенерировать код CUDA ® для модели Simulink ®, которая может обнаруживать и выводить контуры маркера маршрута на изображение. Этот пример принимает изображение RGB как вход и использует imresize
(Image Processing Toolbox), rgb2gray
, ordfilt2
(Image Processing Toolbox), hough
(Image Processing Toolbox), houghpeaks
(Image Processing Toolbox), и houghlines
(Image Processing Toolbox) функции, входящие в Image Processing Toolbox™, для обнаружения разметки маршрута. Этот пример внимательно следит за обнаружением маршрута на графическом процессоре при помощи функции houghlines.
Этот пример иллюстрирует следующие концепции:
Моделируйте приложение обнаружения маршрута в Simulink с помощью функций обработки изображений.
Сконфигурируйте модель для генерации кода GPU.
Сгенерируйте исполняемый файл CUDA для модели Simulink.
Необходимый
Этот пример генерирует CUDA MEX и имеет следующие требования к третьим лицам.
CUDA включает графический процессор NVIDIA ® и совместимый драйвер.
Дополнительный
Для сборок, не являющихся MEX, таких как статические, динамические библиотеки или исполняемые файлы, этот пример имеет следующие дополнительные требования.
Набор инструментальных средств NVIDIA.
Переменные окружения для компиляторов и библиотек. Для получения дополнительной информации см. раздел «Оборудование сторонних производителей» и «Настройка продуктов для подготовки».
Чтобы убедиться, что компиляторы и библиотеки, необходимые для выполнения этого примера, настроены правильно, используйте coder.checkGpuInstall
функция.
envCfg = coder.gpuEnvConfig('host');
envCfg.BasicCodegen = 1;
envCfg.Quiet = 1;
coder.checkGpuInstall(envCfg);
houghlines
Модель SimulinkПоказана модель Simulink для обнаружения маршрута.
open_system('lane_detection');
The Lane Detection
подсистема содержит MATLAB Function
блок, который принимает изображение интенсивности как вход и предоставляет обнаруженные полосы как выход. Эта функция основана на реализации алгоритма обнаружения маршрута с использованием houghlines
как описано в разделе «Обнаружение маршрута на графическом процессоре» при помощи примера «Функции пересечения линий связи». Когда модель запускается, Visualization
блок отображает обнаруженное выходное изображение маршрута.
Откройте диалоговое окно Параметры конфигурации.
На панели Simulation Target выберите ускорение графического процессора.
Запустите симуляцию в режиме normal mode.
set_param('lane_detection', 'SimulationMode', 'Normal'); sim('lane_detection');
На панели Генерация кода выберите Язык как C++ и включите Генерация кода GPU.
Откройте панель Цель Симуляция. В продвинутых параметрах включите Порог выделения динамической памяти в функциях 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
(Simulink)