文档

Sobel边缘检测在NVIDIA杰森Nano使用覆盆子π相机模块V2

这个例子向您展示了如何捕捉和处理图像从一个覆盆子π相机模块V2连接到NVIDIA®杰森Nano使用GPU编码器™NVID金宝appIA GPU的支持包。GPU编码器支持NVIDIA金宝app GPU包允许你捕获图像的相机模块V2和带他们到MATLAB®环境中进行处理。在这个例子中,您将学习如何开发一个Sobel边缘检测算法通过使用这种能力。

先决条件

目标板需求

  • 英伟达杰森Nano嵌入式平台。

  • 覆盆子π相机模块V2的CSI主机端口连接到目标。

  • 以太网交叉电缆来连接目标板和主机PC(如果目标不能被连接到一个本地网络)。

  • V4L2图书馆目标。

  • GStreamer库目标。

  • 环境变量的目标编译器和库。信息支持版本的编译器和库及其设置,明白了金宝app安装和设置条件NVIDIA董事会

开发主机需求

创建一个硬件对象

连接到NVIDIA杰森Nano

GPU编码器支持NVIDIA金宝app GPU包使用SSH连接在TCP / IP来构建和运行时执行命令生成的CUDA在开车或杰森平台代码。你必须将目标平台连接到同一网络主机或者使用以太网交叉电缆董事会直接连接到主机。请参阅NVIDIA文档如何设置和配置你的董事会。

与英伟达通信杰森Nano,您必须创建一个生活硬件连接对象使用开车杰森函数。你必须知道主机名或IP地址,用户名和密码的目标板创建一个生活硬件连接对象。例如,使用以下命令创建对象住杰森硬件,

hwobj =杰森(“jetson-nano-name”,ubuntu的,ubuntu的);

运行getCameraList的函数hwobj对象找到可用的相机。如果这个函数输出一个空表,然后再次尝试将相机和执行功能。

验证了GPU的环境

使用coder.checkGpuInstall功能和验证所需的编译器和库运行这个例子是正确设置。

envCfg = coder.gpuEnvConfig (“杰森”);envCfg。BasicCodegen = 1;envCfg。安静= 1;envCfg。HardwareObject = hwobj;coder.checkGpuInstall (envCfg);

创建一个相机对象

创建一个相机对象使用的名字getCameraList函数。

camObj =相机(hwobj,“vi-output imx219 6 - 0010”480年[640]);

camObj是一个相机对象的句柄。显示图像捕获从相机模块V2在MATLAB中,使用以下命令。

我= 1:10 0 img =快照(camObj);显示亮度图像(img);drawnow;结束

这个相机对象捕捉RGB三路和灰度图像。

创建一个显示对象

使用imageDisplay函数创建一个显示对象。这是一个系统对象使用imshow在MATLAB函数来显示图像。

dispObj = imageDisplay (hwobj);img =快照(camObj);图像(dispObj, img);

Sobel边缘检测算法

Sobel边缘检测算法是一个流行而简单的边缘检测算法。在这个算法,灰度图像上的二维空间梯度操作执行。这个操作强调高空间频率对应于边缘地区。

计算梯度

我们会发现水平梯度(h)和垂直梯度(v)的输入图像各自Sobel内核。这两个Sobel内核是互相正交。我们将确保我们的算法在测试图像进行实时数据。

kern = [1 2 1;0 0 0;1 2 1];img = imread (“peppers.png”);显示亮度图像(img);h = conv2 (img(:,: 2),克恩,“相同”);v = conv2 (img(:,: 2),克恩”,“相同”);

计算梯度大小

接下来我们发现梯度大小从水平和垂直梯度(h和v)。

e =√h。* h + v * v);

阈值的边缘图像

我们阈值图像的区域图像,我们认为是边缘。

edgeImg = uint8 (e > 100) * (240);显示亮度图像(edgeImg);

实时数据上运行Sobel边缘检测算法

我们可以创建一个MATLAB函数,sobelEdgeDetectionAlg.mMATLAB代码的,我们开发了前面的例子。在编辑器中查看MATLAB函数。

编辑(“sobelEdgeDetectionAlg.m”);

这个函数sobelEdgeDetectionAlg ()获取图像边缘检测和阈值输入和返回结果的边缘检测算法。我们将调用此函数在一个循环中捕获的图像。阈值变量可以不同的适当的边缘图像。这样我们可以用相机支持包的访问功能优化算法适用于指定的相机。金宝app

我= 1:200 img =快照(camObj);打= 100;edgeImage = sobelEdgeDetectionAlg (img,打);图像(dispObj edgeImage);结束

上面的示例作为一个独立的应用程序部署在目标,遵循的例子部署和运行Sobel边缘检测与I / O NVIDIA杰森Nano

关闭所有

总结

这个示例介绍了一个应用在图像来自一个摄像头连接到一个NVIDIA杰森纳米处理在MATLAB使用Sobel边缘检测算法。