学习“Simulink中搭建图像的采集与输出模型案例分析”笔记
根据elecfans上的一篇文章学习Simulink中搭建图像处理方法,也遇到了一些问题,后面有解决说明。
在elecfans的网站上介绍这篇文章转载自CSDN,但是目前原文已经搜索不到了。
完成后的模型这个样子:
步骤
设置参考图像
因为最近使用的屏幕是160×128大小的,所以裁剪图片到160*128。百度图片找了一个向日葵做代替。
右键编辑,使用Windows画图修改像素到要求的尺寸。
添加模块
Image From File:读取图像
“File name”设置图片文件路径;“Sample time”设置为ImSizeW*ImSizeH即只做一次完整的图像采集。这里设置为inf;
“Image signal”设置为Separate color signals可以独立输出图像的R、G、B三个通道,每个通道都是图片大小。
Math Function:该block可以运行一些基本的数学函数(如指数、对数、平方等),这里设置为Transpose,计算图像的转置矩阵。
因为一些函数是逐行处理数据而非逐列处理。
Convert 2-D to 1-D:将二维数组重新按一维数组的顺序排列。
按照MATLAB的风格,是逐列转换的。相当于data[:]。
成对使用Frame Conversion和Unbuffer:将一维数组(向量)转换为标量形式。
Unit Delay:延时一个单位,数据缓存。
这个不要也可以。
Data Type Conversion:Simulink处理后的数据可能格式会改变,这里加入该block将数据转换为图像的uint8格式。
Buffer:与Unbuffer作用相反,将标量数据重新组织为指定帧格式输出。
Convert 1-D to 2-D:将一维数组重新整理为指定格式的二维数组。
这里需要注意行和列的设置。
Math Function:由上图可知,整形为二维数组后,原本图像的每一行数据变成了矩阵的每一列。
Video Viewer:分别输入R、G、B三个通道的数据。
双击打开,点击File->Image Signal->Separate Color Signals,即可分别输入R、G、B三个通道的数据。
最终效果
疑问
原文中的Gateway in& out 是什么东西?
出现Gateway in& out的时候会有下面的图标,这是一个什么模块?
直接使用Image From File可以读取图片格式的文件;Video Viewer可以输入图像并显示,为什么要逐行或者逐像素处理?
Image From File一次读出的便是完整的图片信息,是一个向量形式,而有些模块只能接收标量数据的输入(即单个数据)。可能FPGA的编程方式必须要逐行或者逐像素处理。
参考链接
https://www.elecfans.com/d/1310067.html