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

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

3天内不再提示

Simulink中搭建图像的采集与输出模型案例分析

电子设计 来源:CSDN博主 作者:FPGADesigner的博客 2020-12-30 12:06 次阅读

图像属于二维信号,如果想在Simulink中采集和输出图像,进行图像处理算法仿真时会遇到一些问题。本文将介绍如何搭建图像的采集与输出模型。

采集图像需要解决的问题

Computer Vision System Toolbox中包含两个模块:Image From File可以读取图片格式的文件;Video Viewer可以输入图像并显示(类似于Scope观察信号波形一样)。

但是Image From File一次读出的便是完整的图片信息,是一个向量形式,而Gateway In只能接收标量数据的输入(即单个数据)。如果将两者直接相连,会出现如下错误:

o4YBAF9uJ8yALKbbAAAeh1p1T0k389.jpg

Image From File读取一个256*256大小的图像,读出数据为一个256*256*3的数据(RGB三个通道),这个数据不能直接输入到FPGA中。我们需要利用Simulink提供的功能丰富的block完成数据之间的转换。

图像采集实现

在Simulink中添加block按下图连接:

pIYBAF9uJ82Af2csAACjzx7xP6E012.jpg

下面以列表的形式给出每个block的作用(以读取256*256的RGB图像为例,工作空间中设置变量ImSize=256):

●Image From File:读取图像:

pIYBAF9uJ8-ANNrVAABmxdHyYhc641.jpg

“File name”设置图片文件路径;“Sample time”设置为ImSize*ImSize即只做一次完整的图像采集;“Image signal”设置为Separate color signals可以独立输出图像的R、G、B三个通道,每个通道都是256*256大小。

●Math Function:该block可以运行一些基本的数学函数(如指数、对数、平方等),这里设置为Transpose,计算图像的转置矩阵。

●Convert 2-D to 1-D:该block可以将二维数组重新按一维数组的顺序排列,从矩阵的列开始转换,如下图例子所示:

o4YBAF9uJ9CAQXOGAAAXCR5zktU768.jpg

由于图像处理算法大多都是以行为单位,因此在前面加了一个Math Function模块求转置矩阵,这样在转换后的一维数组中便是按图像的每一行依次排列。

●Frame Conversion和Unbuffer:这两个block配合使用,将一维数组(向量)转换为Gateway In可以接收的标量形式。示例如下:

pIYBAF9uJ9GAXpKJAABCpa6w6BI714.jpg

Unbuffer将帧格式(frame)转换为标量数据;Frame Conversion的作用便是将一维数组以帧格式采样输出,即将一副图像共(256*256=)65536个数据打包为一帧,再由Unbuffer转换为标量。

●Data Type Conversion:目前的RGB图像每个通道大多都是uint8格式,该模块将数据格式转换为uint8。

●Unit Delay:延时一个单位,数据缓存。

●Gateway In:读取uint8格式的图像数据,数据格式设置为UFix_8_0。

图像输出实现

图像输出的流程恰好与图像采集相反,是为了将FPGA处理后的标量数据重新转换组织成图片的数组形式。在Simulink中添加block按下图连接:

pIYBAF9uJ9OAQ8nQAACPtliK2T4136.jpg

下面以列表的形式给出每个block的作用(以输出256*256的RGB图像为例,工作空间中设置变量ImSize=256):

●Data Type Conversion:Simulink从Gateway Out读出的数据会默认转换为double,这里加入该block将数据转换为图像的uint8格式。

●Buffer:与Unbuffer作用相反,将标量数据重新组织为指定帧格式输出。示例如下:

o4YBAF9uJ9SARIObAAApsH4BZW0360.jpg

双击配置该block,将“Output buffer size”设置为ImSize*ImSize,即每幅图像的数据为一帧。

●Convert 1-D to 2-D:将一维数组重新整理为指定格式的二维数组,示例如下:

pIYBAF9uJ9WAIGQDAAA2H4aRJ2c179.jpg

双击配置该block,将“Number of output rows”和“Number of output columns”都设置为ImSize,即以256*256的格式输出。

●Math Function:由上图可知,整形为二维数组后,原本图像的每一行数据变成了矩阵的每一列。因此需要加入此模块再求一此转置矩阵,得到原图像的数据排列方式。

●Video Viewer:双击打开,点击File->Image Signal->Separate Color Signals,即可分别输入R、G、B三个通道的数据。

打包子系统

可以看到上面的整个模型已经很庞大,因此将图像采集部分和图像输出部分分别打包为子系统。选中对应部分,右键->Create Subsystem from selection。代开子系统,修改IN/OUT管脚的名称为R、G、B。此时系统整体连接如下图:

o4YBAF9uJ9aAdz7pAABRE-TNGP0799.jpg

在System Generator和Gateway In中将采样时间设置为1S;Simulink仿真时长设置为256*256,即保证采集完一幅图像。再添加一个Video Viewer观察原始图片。运行仿真,结果如下:

输入与输出图片相同,表明结果正确。如果需要进行数字图像处理算法的仿真验证,在其中加入其它block实现算法即可。本系统实现了图像的采集与输出,使仿真时的结果更直观,更容易观察算法效果,大大提升了仿真效率。

编辑:hfy

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

    关注

    22

    文章

    513

    浏览量

    61586
  • 数字图像处理

    关注

    7

    文章

    103

    浏览量

    18809
收藏 人收藏

    评论

    相关推荐

    Vivado 使用Simulink设计FIR滤波器

    的快速进位链,使实现变得容易。最后一拍数据直接使用的DSP的P端输出。 4. 模型仿真 为设计好的模型增加一个顶层,添加两个信号源作为仿真激励,使用两个频谱分析仪观测结
    发表于 04-17 17:29

    【技术课堂】拓扑篇丨LC串联谐振拓扑仿真建模及控制策略分析

    ~ r~ =6.9μF。二、电路仿真01、电路模型搭建目前,电路仿真软件很多,本次我们采用Matlab的可视化电路仿真软件包 Simulink 进行电路
    发表于 03-01 10:05

    PCIe图像采集卡的原理、应用和优势

    ,并将其传输到计算机进行处理和分析。接下来,我们将详细讨论PCIe图像采集卡的原理、应用和优势。 一、原理: PCIe图像采集卡的工作原理可
    的头像 发表于 12-15 09:57 438次阅读

    simulink模型的源文件处理

    前一篇文章 雷达信号处理-脉冲压缩(simulink时域建模) 中所建模型为早期所建,刚好遇到有粉丝朋友想要simulink模型的源文件,于是重新找到了源
    的头像 发表于 10-16 11:03 388次阅读
    <b class='flag-5'>simulink</b><b class='flag-5'>模型</b>的源文件处理

    基于FPGA搭建一个通用的图像处理平台

    本文介绍如何搭建一个通用的图像处理平台,采用HDMI接口进行输入、输出,可用于测试基于HLS的FPGA图像处理项目。
    的头像 发表于 09-04 18:20 1215次阅读
    基于FPGA<b class='flag-5'>搭建</b>一个通用的<b class='flag-5'>图像</b>处理平台

    USB图像采集卡是什么

    USB图像采集卡是一种用于连接计算机和摄像机、摄像头或其他视频设备的设备。它充当了一个接口,使得视频信号可以通过USB接口传输到计算机,并且可以进行图像采集和处理,如实时监控、视频录制
    的头像 发表于 07-26 16:35 805次阅读
    USB<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡是什么

    如何测试带服务接口的Simulink模型

    在Matlab 2022a之后引入了Service Interface的建模元素,这让Simulink模型拥有了向外部其他模型提供函数的能力,也为服务接口建模语义打下基础。
    的头像 发表于 07-22 09:51 754次阅读
    如何测试带服务接口的<b class='flag-5'>Simulink</b><b class='flag-5'>模型</b>?

    MBD的Simulink使用技巧:详解代码生成中的模型与代码(2)

    上一篇文章中提到,生成嵌入式代码,必须选择定步长求解器。实际中,生成嵌入式代码几乎不会使用Simulink模型库中的连续模型,往往需要通过最简单的离散模块来实现算法模型
    的头像 发表于 07-13 15:13 3031次阅读
    MBD的<b class='flag-5'>Simulink</b>使用技巧:详解代码生成中的<b class='flag-5'>模型</b>与代码(2)

    介绍一下simulink模型工作区

    simulink模型工作区与 MATLAB 工作区的差异在于每个模型都带有自己的工作区以存储变量值。
    的头像 发表于 06-29 15:17 1907次阅读
    介绍一下<b class='flag-5'>simulink</b>的<b class='flag-5'>模型</b>工作区

    求一种基于Simulink搭建的柴油发动机建模方法

    汽油机和柴油机是目前汽车中最为广泛使用的动力源。其中,本期带来基于Simulink搭建的柴油发动机建模方法。
    发表于 06-29 11:26 1514次阅读
    求一种基于<b class='flag-5'>Simulink</b><b class='flag-5'>搭建</b>的柴油发动机建模方法

    基于Simulink的汽车3自由度模型搭建

    线性2自由度汽车模型是汽车操纵稳定性分析中最简单、最典型的模型
    发表于 06-28 16:52 1536次阅读
    基于<b class='flag-5'>Simulink</b>的汽车3自由度<b class='flag-5'>模型</b><b class='flag-5'>搭建</b>

    如何在Simulink搭建电池模型

    随着特斯拉即将在国内建厂,相信新能源汽车在国内越来越火爆,而电池对于新能源汽车而言,是一个极其重要的部件。今天就来聊一聊,如何在Simulink搭建电池模型
    的头像 发表于 06-28 10:48 1802次阅读
    如何在<b class='flag-5'>Simulink</b>中<b class='flag-5'>搭建</b>电池<b class='flag-5'>模型</b>?

    将S32K144EVB与Simulink MBDT Toolbox一起使用,烧写到板子后没有输出怎么解决?

    一起使用。我们基于此视频构建了一个基本的 CAN 通信模型,但是烧写到板子后没有输出(用示波器测试过)。另一方面,当我们将它与 S32DS 上的示例 can_pal 程序一起使用时,该板具有可检测
    发表于 06-09 07:33

    simulink和pspice联合仿真问题

    根据网上的资料操作,已可以再simulink调用pspice模型,但是出现仿真错误如下: 网上查到的解决方案并没有解决我的问题,有没有人可以帮我看看呀,或者您的联合仿真是通过什么
    发表于 05-23 15:04

    simulink这个怎么实现

    本人在做电机的参数辨识,使用simulink搭建了电机模型,可是里面有个参数(转子电阻)我要让他是时变的,我想通过m函数对模型的参数进行统一赋值,大家有什么好的方法?
    发表于 05-08 11:44