0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MATLAB 图像处理算法的作用分析介绍

MATLAB 来源:djl 2019-09-12 14:31 次阅读

得益于 Raspberry Pi 等低成本硬件平台,现在比以往更容易在硬件上对图像处理算法进行原型验证。大多数图像处理算法需要进行大量计算,在嵌入式平台上以可接受的帧频运行它们非常困难。尽管 Raspberry Pi 在运行简单的图像处理算法时游刃有余,但大图像和复杂算法应在 NVIDIAJetson 等功能强大的硬件上运行。

本文将以色度键控效果为例,介绍在嵌入式硬件上部署 MATLAB 图像处理算法的简单工作流。我们将使用 MATLAB Coder 通过算法生成C代码,然后使用在硬件上运行的实用程序在 Raspberry Pi 板卡上进行算法原型验证。最后,我们将算法移植至 NVIDIA Jetson Tx1 平台以保证实时性能。

色度键控算法

色度键控广泛用于电视天气预报、电影制作和图片编辑应用程序,它是一种视频处理技术,首先针对单色背景(如绿色屏幕)拍摄前景对象,然后用不同场景(图1)替换该背景。

关于MATLAB 图像处理算法的作用分析介绍

图1:应用色度键控之前和之后的示例

色度键控算法将图像中的每个像素与代表单背景色的基准色进行对比。如果像素颜色与基准色足够接近,像素将由之前所选场景图像的对应像素替换。从数学上讲,色度键控算法采用以下公式:

关于MATLAB 图像处理算法的作用分析介绍

其中代表进行色度键控后位置 (j,k) 处的最终像素值,是与原始图像对应的像素值,是代表替换单一背景色的场景的像素值,m(j,k)∈[0,1] 是掩码值。掩码数值 m(j,k) 对于前景像素应该为 1,对于背景像素应该为 0。0 与 1 之间的掩码值可提供从背景到前景的平滑过渡。

每个像素的掩码值通常在 YcbCr 颜色空间而不是普通的 RGB 颜色空间中进行计算。YcbCr 图像的 Y 分量代表亮度分量,用于确定图像的明暗度。Cb 和 Cr 分量代表色度分量,用于衡量与基准色的相似度。由于仅使用图像的 Cb 和 Cr 分量衡量颜色相似度,该算法在应对单一背景色明暗区域的亮度值差异时十分稳健。

为衡量像素色与基准色的相似性,我们在色度空间中使用欧氏距离平方:

关于MATLAB 图像处理算法的作用分析介绍

最后,使用以下公式计算图像中位置(j,k) 的掩码值:

关于MATLAB 图像处理算法的作用分析介绍

其中 t1 和 t2 ( t2 > t1)代表要确定的阈值。

MATLAB实现

以下是色度控键算法的 MATLAB 实现:

关于MATLAB 图像处理算法的作用分析介绍

在 MATLAB 中,图像由类型 uint8 的 [N,M, 3] 数组表示。这表示,在执行数学操作前,我们需要将图像数据类型转换为 “double”。为避免背景到前景的快速突变,我们对算出的掩模采用高斯过滤器进行滤波。

确定基准色和阈值

色度键控算法需要基准色和阈值。使用 MATLAB Raspberry Pi 支持包中的相机接口,我们拍摄了实际场景的图像。随后,我们可以凭借经验确定背景的适用基准色和相应的阈值。

关于MATLAB 图像处理算法的作用分析介绍

img = snapshot(cam); 命令绘制 MATLAB 中 Raspberry Pi 相机拍摄的图像。我们使用 MATLAB 绘制中的 Data Cursor 工具指定背景颜色(图2)。

关于MATLAB 图像处理算法的作用分析介绍

图2:MATLAB 中用于确定背景色值的 Data Cursor 工具

要确定阈值,我们将循环运行算法并调整阈值:

关于MATLAB 图像处理算法的作用分析介绍

当运行代码时,我们会获得带有所选背景的图像(图3)。

图3:左:原始图像;右:运行色度控键算法后获得的图像

将色度键控算法部署到 Raspberry Pi

在部署代码前,我们需要编写一段包含有色度键控算法的循环体,循环体中还包括从相机拍摄图像,并在 Raspberry Pi 连接的显示器上显示:

关于MATLAB 图像处理算法的作用分析介绍

matlab.raspi.webcam 和 matlab.raspi.SDLVideo Display 是在硬件上运行实用程序的 System objects,它们可简化部署工作流程中相机的使用和 Raspberry Pi 显示。要编译并运行代码,我们可执行以下命令:

关于MATLAB 图像处理算法的作用分析介绍

runOnHardware 功能会为 Raspberry Pi 硬件创建 MATLAB Coder 配置,为 chromaKeyApp.m 生成代码并对其部署。为了以合理的帧频运行算法,图像大小可缩小到 640x480 或 320x240。

生成GPU代码

算法在 Raspberry Pi 上运行,但是它不会实现我们需要的实时性能。为了加快算法的速度,我们要使用 GPU Coder 将其部署到 NVIDIA Jetson 平台。我们需要生成 GPU 代码以利用算法中的内在并行性。首先,我们会编写 main 函数进行封装,以利用 OpenCV 访问连接到 NVIDIA Jetson 的 USB 相机。此功能将视频帧从相机送到我们的 chromaKey 算法,随后在屏幕上显示输出内容。

生成 GPU 代码后,我们首先创建 GPU Coder 配置对象、设置 GPU 参数以指向 NVIDIA Jetson 硬件平台,然后加入自定义的 main 函数。我们不会在 MATLAB 主机上编译代码,因为我们将专门为 NVIDIA Jetson 平台生成代码。我们将创建脚本来设置 GPU Coder 配置、输入示例数据,并为我们的应用生成源代码。

关于MATLAB 图像处理算法的作用分析介绍

我们随后在 MATLAB 中运行脚本为 chromaKey 算法生成 CUDA 代码。

向 NVIDIA Jetson 部署绿屏算法

要向 NVIDIA Jetson 部署生成的代码,我们需要使用以下 MATLAB 命令将全部所需文件打包到 codegen 目录。

关于MATLAB 图像处理算法的作用分析介绍

接下来,将生成的所有 codegen 文件夹从主机复制到 NVIDIA Jetson 控制板。在传输文件后,我们直接登录到 NVIDIA Jetson 以构建并运行应用程序。

登录到 NVIDIA Jetson 后,我们运行 NVIDIA 提供的 jetson_clocks.sh 脚本以将平台性能最大化、切换到包含生成的源代码(之前传输)的 codegen 目录,然后执行以下显示的编译命令。

在可执行程序(chromaKey)Build 后,使用 NVIDIA Jetson 控制台上的 USB 网络摄像头通过以下命令运行应用程序。每秒显示帧数将显示在输出窗口中。

关于MATLAB 图像处理算法的作用分析介绍

图 4 显示出现绿屏效果前后 NVIDIA Jetson 板卡的 USB 相机的输出内容。

图4:应用绿屏效果前后的示例

Raspberry Pi 和 NVIDIA Jetson 性能对比

NVIDIA Jetson 上 GPU 更加强大的并行处理能力极大地提高了算法的性能。Raspberry Pi 实现了约 1 帧/秒的帧频,而 NVIDIA Jetson 对于 1280x720 大小的图像实现了 20 帧/秒以上的帧频。也就是说,无需对算法进行任何修改或优化,我们便获得了 20 倍以上的加速。通过优化 MATLAB 算法提高 GPU 代码的生成效率,我们可以实现更高的性能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    26

    文章

    1220

    浏览量

    55778
  • 摄像头
    +关注

    关注

    59

    文章

    4599

    浏览量

    92832
  • 网络
    +关注

    关注

    14

    文章

    7248

    浏览量

    87406
收藏 人收藏

    评论

    相关推荐

    FPGA图像处理之CLAHE算法

    在FPGA图像处理--CLAHE算法(一)中介绍了为啥要用CLAHE算法来做图像增强。
    的头像 发表于 01-04 12:23 1424次阅读
    FPGA<b class='flag-5'>图像</b><b class='flag-5'>处理</b>之CLAHE<b class='flag-5'>算法</b>

    FPGA图像处理-CLAHE算法介绍(一)

    介绍CLAHE算法之前必须要先提一下直方图均衡化,直方图均衡化算法是一种常见的图像增强算法,可以让像素的亮度分配的更加均匀从而获得一个比较
    的头像 发表于 01-02 13:32 939次阅读
    FPGA<b class='flag-5'>图像</b><b class='flag-5'>处理</b>-CLAHE<b class='flag-5'>算法</b><b class='flag-5'>介绍</b>(一)

    图像处理算法——边缘检测

    基于边缘检测的分析不易受整体光照强度变化的影响,同时利用边缘信息容易凸显目标信息和达到简化处理的目的,因此很多图像理解方法都以边缘为基础。边缘检测强调的是图像对比度。
    的头像 发表于 11-30 16:56 417次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>处理算法</b>——边缘检测

    八位单片机的大数处理算法及在数控中的应用

    电子发烧友网站提供《八位单片机的大数处理算法及在数控中的应用.pdf》资料免费下载
    发表于 10-25 10:09 0次下载
    八位单片机的大数<b class='flag-5'>处理算法</b>及在数控中的应用

    单片机开发中,传感器的数据处理算法

    单片机开发中,传感器的数据处理算法
    的头像 发表于 10-17 17:35 439次阅读

    GPU在雷达信号处理算法中的优势

    雷达信号处理算法对计算机架构提出了很高的实时性要求。好在这些算法具有数据并行性,可以在大规模并行架构(如图形处理单元(GPU))上获得出色的性能。
    的头像 发表于 10-17 10:07 507次阅读
    GPU在雷达信号<b class='flag-5'>处理算法</b>中的优势

    常用的图像处理算法有哪些?

    图像处理 (Image Processing) 图像处理通常是把一幅图像变换成另外一幅图像,也就
    发表于 09-19 10:33 688次阅读
    常用的<b class='flag-5'>图像</b><b class='flag-5'>处理算法</b>有哪些?

    数字信号处理—理论、算法与实现

    、数字滤波器设计(IIR、FIR及特殊形式的滤波器)等;下篇内容包括信号的正交变换(正交变换的定义与性质、K-L变换、DCT及其在图像压缩中的应用)、信号处理中若干典型算法(如抽取与插值、子带分解、调制
    发表于 09-19 08:01

    FPGA图像处理算法有哪些

    早之前的朋友知道我发过一个用chatgpt分析出来的 FPGA图像处理的知识树,里面包含了从色域,镜头,接口和算法。然后我就发现这个算法部分
    的头像 发表于 09-12 09:59 600次阅读
    FPGA<b class='flag-5'>图像</b><b class='flag-5'>处理算法</b>有哪些

    红外雨量计(光学雨量传感器)不同雨量场景如何优化数据处理算法

    的数据处理算法需要进行优化。本文将介绍在不同雨量场景下如何优化红外雨量计的数据处理算法。 红外雨量计(光学雨量传感器) 1. 雨量场景的分类 在不同的雨量场景下,红外雨量计的数据处理算法
    的头像 发表于 08-16 13:27 302次阅读
    红外雨量计(光学雨量传感器)不同雨量场景如何优化数据<b class='flag-5'>处理算法</b>

    如何使用机器学习处理图像

    图像处理是利用复杂的算法图像进行技术分析。在图像处理
    的头像 发表于 07-24 15:00 439次阅读

    遗传算法的基本原理 基于遗传算法图像分割

    来确定分割阈值。图像分割是图像处理技术的研究对象之一,它对于图像特征提取、图像识别等图像
    发表于 07-18 16:04 1次下载

    MATLAB图像处理实例详解

      一、 实验目的:  1. 熟悉图像数据在计算机中的存储方式;  2. 掌握图像直方图均衡化这一基本处理过程。  二、 实验条件:  PC微机一台和MATLAB软件。  三、 实验内
    发表于 07-18 15:06 5次下载

    人体分割识别图像技术的原理及应用

    、行为分析等功能。 人体分割识别图像技术的原理主要包括三个步骤:图像处理、人体分割和特征提取。首先,通过图像
    的头像 发表于 06-15 17:44 671次阅读

    手机拍照为什么也需要图像处理算法呢?

    人类进入智能手机时代后,摄影方式也发生了巨大变化:用来拍照的不再只是镜头和传感器了,背后还加载着一系列的图像算法,它可以用更快的速度处理图像,并获得更好的拍摄效果。
    的头像 发表于 06-08 09:38 682次阅读
    手机拍照为什么也需要<b class='flag-5'>图像</b><b class='flag-5'>处理算法</b>呢?