Этот пример показывает вам, как получить и обработать изображения от веб-камеры, соединенной с NVIDIA® Jetson с помощью GPU Coder™ Support Package for NVIDIA GPUs
. Пакет Поддержки GPU Coder для NVIDIA графические процессоры позволяет вам получать изображения от веб-камеры и приносить им прямо в среду MATLAB® для обработки. В этом примере вы изучите, как разработать алгоритм обнаружения ребра Sobel при помощи этой возможности.
Требования требуемой платы
NVIDIA Jetson TX1/TX2 встроил платформу.
Кабель перекрестного соединения Ethernet, чтобы соединить требуемую плату и PC хоста (если требуемая плата не может быть соединена с локальной сетью).
Библиотека V4L2 по цели.
Переменные окружения на цели для компиляторов и библиотек. Для получения информации о поддерживаемых версиях компиляторов и библиотек и их настройки, смотрите предпосылки установки и подготовки для плат NVIDIA.
Веб-камера USB, соединенная с серверным портом USB цели.
Требования узла разработки
GPU Coder для генерации кода. Если вы плохо знакомы с GPU Coder, посещаете страницу продукта GPU Coder для обзора и примеров.
Пакет Поддержки GPU Coder для NVIDIA графические процессоры. Если вы плохо знакомы с этим пакетом поддержки, мы рекомендуем завершить Начало работы с Пакетом Поддержки GPU Coder для NVIDIA графические процессоры (Пакет Поддержки GPU Coder для NVIDIA графические процессоры) пример.
Инструментарий NVIDIA CUDA® на хосте.
Переменные окружения на хосте к компиляторам и библиотекам. Для получения информации о поддерживаемых версиях компиляторов и библиотек, смотрите Сторонние продукты. Для подготовки переменных окружения смотрите Переменные окружения.
Соедините с Оборудованием NVIDIA Пакет Поддержки GPU Coder для NVIDIA, который графические процессоры используют связь SSH по TCP/IP, чтобы выполнить команды при создании и выполнении сгенерированного кода CUDA по платформам Джетсона или ДИСКУ. Необходимо поэтому соединить целевую платформу с той же сетью как хост - компьютер или использовать кабель перекрестного соединения Ethernet, чтобы соединить плату непосредственно с хостом - компьютером. Обратитесь к документации NVIDIA относительно того, как настроить и сконфигурировать вашу плату.
Чтобы связаться с оборудованием NVIDIA, необходимо создать живой аппаратный объект связи при помощи функции jetson или диска. Необходимо знать, что имя хоста или IP-адрес, имя пользователя и пароль требуемой платы создают живой аппаратный объект связи. Например, используйте следующую команду, чтобы создать живой объект для оборудования Джетсона,
hwobj = jetson('jetson-tx2-name','ubuntu','ubuntu');
Проверяйте webcamlist
свойство hwobj
возразите, чтобы найти веб-имя камеры. Если это свойство пусто, то попытайтесь повторно подключить веб-камеру USB и запустите следующую команду. Эта команда пытается отсканировать доступные веб-камеры на цели, когда существует сложение или удаление.
hwobj.updatePeripheralInfo;
Используйте coder.checkGpuInstall, функционируют и проверяют, что компиляторы и библиотеки, необходимые для выполнения этого примера, настраиваются правильно.
envCfg = coder.gpuEnvConfig('jetson');
envCfg.BasicCodegen = 1;
envCfg.Quiet = 1;
envCfg.HardwareObject = hwobj;
coder.checkGpuInstall(envCfg);
Создайте объект веб-камеры использование имени или индекса webcamlist
. Если никакое имя веб-камеры или индекс не заданы, то он использует веб-камеру по умолчанию.
cam = webcam(hwobj);
cam
указатель на объект веб-камеры. Чтобы отобразить изображения, полученные от веб-камеры в MATLAB, используйте следующие команды.
for i = 1:100 img = snapshot(cam); imagesc(img); drawnow; end
Этот объект веб-камеры получает RGB и полутоновые изображения с 3 каналами.
Используйте imageDisplay
функция, чтобы создать экранный объект. Это - системный объект, который использует imshow
функционируйте, чтобы отобразить изображения в MATLAB.
dispObj = imageDisplay(hwobj);
Display an image using the above created display object.
img = snapshot(cam); image(dispObj,img);
Алгоритм обнаружения ребра Sobel является популярным все же простым алгоритмом обнаружения ребра. В этом алгоритме выполняется 2D пространственная операция градиента на полутоновом изображении. Эта операция подчеркивает высокие пространственные области частоты, который соответствует ребрам.
Вычислите градиенты
Мы найдем горизонтальный градиент (h) и вертикальный градиент (v) из входного изображения с соответствующими ядрами Sobel. Эти два ядра Sobel являются ортогональными друг другу. Мы убедимся, что наш алгоритм работает над тестовым изображением перед хождением дальше, чтобы жить данные.
kern = [1 2 1; 0 0 0; -1 -2 -1]; img = imread('peppers.png'); imagesc(img); h = conv2(img(:,:,2),kern,'same'); v = conv2(img(:,:,2),kern','same');
Вычислите величину градиента
Затем мы находим величину градиента от горизонтальных и вертикальных градиентов (h и v).
e = sqrt(h.*h + v.*v);
Порог изображение ребра
Мы порог изображение, чтобы найти области изображения, что мы считаем ребрами.
edgeImg = uint8((e > 100) * 240); imagesc(edgeImg);
Мы можем создать функцию MATLAB, sobelEdgeDetectionAlg.m
, из кода MATLAB мы разработали в предыдущих разделах этого примера. Просмотрите функцию MATLAB в редакторе.
edit('sobelEdgeDetectionAlg.m');
Функциональный sobelEdgeDetectionAlg()
берет изображение и пороговый вход для обнаружения ребра и возвращает результаты алгоритма обнаружения ребра. Мы вызовем эту функцию на изображениях, полученных в цикле. Пороговая переменная thresh
может варьироваться, чтобы получить соответствующее изображение ребра. Таким образом, мы можем использовать возможность доступа к веб-камере пакета поддержки настроить алгоритм, подходящий для заданной веб-камеры.
for i = 1:200 img = snapshot(cam); thersh = 100; edgeImage = sobelEdgeDetectionAlg(img, thersh); image(dispObj,edgeImage); end
Чтобы развернуть вышеупомянутый пример как автономное приложение на цели, последуйте примеру, Развертываются и Запуск Обнаружение Ребра Sobel с вводом-выводом на NVIDIA Джетсон (Пакет Поддержки GPU Coder для NVIDIA графические процессоры).
close all
Этот пример ввел приложение, где изображения, прибывающие из веб-камеры, соединенной с NVIDIA Джетсон, обрабатываются в MATLAB с помощью алгоритма обнаружения ребра Sobel.