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

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

3天内不再提示

如何使用Simulink实现MATLAB图像采集与输出

电子设计 来源:CSDN 博主 作者:FPGADesigner 2020-12-30 10:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文将介绍如何使用Simulink提供的回调函数机制,实现从MATLAB工作空间采集和输出图像。

Simulink回调函数机制
在空白处右键->Model Properties,切换到“Callbacks”标签下,可以看到Simulink支持的回调函数,这些函数在某些时刻会自动触发,执行M文件中的程序:

点击每个函数,可以在右边看到该函数的触发时刻;右边的编辑框中输入执行的M文件的名称。M文件与slx文件在同一目录下。

System Generator设计
数据流方法完成图像的采集与输出,其实就是从MATLAB的工作空间中导入图像数据,再将结果导出到工作空间。按下图连接model:

pIYBAF9uJwGAA2RKAABIJrq0wCE842.jpg

From Workspace从工作空间中读取数据;To Workspace将数据导出到工作空间。读出数据时会受到采样时间的控制,因此读出的为标量数据,可以直接接入Gateway In中。三个输入模块和输出模块分别对应R、G、B三个通道,双击打开配置界面,在“Data”中设置变量名称。

设计思路如下:在启动模型时,设计一个函数读取图片并将图片转换为From Worspace兼容的格式;在仿真结束时,设计一个函数将输出的数据重新整理为图片格式并显示结果。添加一个PreLoadFcn回调函数LoadImg.m、一个StopFcn回调函数ShowImg.m,分别完成上述功能。

回调函数设计
LoadImg.m文件的代码清单如下:
%读取图片
img = imread('test.jpg');

%读取图片尺寸
width = size(img, 2); %长
height = size(img, 1); %宽

%读取R、G、B通道,2维转1维
inimg_r = reshape(img(:,:,1), 1, width*height);
inimg_g = reshape(img(:,:,2), 1, width*height);
inimg_b = reshape(img(:,:,3), 1, width*height);

%From Workspace读取的变量要求为double类型矩阵
%第一列为时间;其余列为数据
inimg_r = [(0:width*height-1)' double(inimg_r)'];
inimg_g = [(0:width*height-1)' double(inimg_g)'];
inimg_b = [(0:width*height-1)' double(inimg_b)'];

注意From Workspace读取的变量(inimg_r、inimg_g、inimg_b)中的第一列为采样时间设置,这里设计为每个时刻读一个像素值。StopFcn.m文件的代码清单如下:
%一维转二维
out_r = reshape(outimg_r(1:width*height), height, width);
out_g = reshape(outimg_g(1:width*height), height, width);
out_b = reshape(outimg_b(1:width*height), height, width);

%组合R、G、B通道
showimg = zeros(width, height, 3);
showimg(:,:,1) = out_r;
showimg(:,:,2) = out_g;
showimg(:,:,3) = out_b;

subplot(121);
imshow(img); title('输入图像');
subplot(122);
imshow(uint8(showimg)); title('输出图像');

将RGB三通道合为一副图像并显示。

仿真测试
读取一副256*256的RGB图像,系统采样时间为1s,仿真时长设置为256*256,即只读取一次完整的图像。先关闭slx文件,再次启动,此时MATLAB的工作空间:

o4YBAF9uJwKAHnvuAAAkJ-SmSGc640.jpg

可见启动时执行了LoadImg函数。运行仿真后,MATLAB的工作空间:

pIYBAF9uJwOAWRBrAABLbzGzRwc692.jpg

可见仿真结束时执行了ShowImg函数,弹出结果图如下:

在某些方面讲,基于数据流方法的图像采集与输出要更灵活,设计者可以根据需要随意设计回调函数(当然回调函数的用途不限于此)。

编辑:hfy

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

    关注

    189

    文章

    3033

    浏览量

    239509
  • Simulink
    +关注

    关注

    23

    文章

    553

    浏览量

    66580
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    多种储能技术在MATLABSimulink中的建模与仿真

    面对这些实际需求,MATLAB & Simulink 展现出了强大的优势。它不仅支持对各种储能技术进行灵活建模,更为“多种储能技术”提供了统一的仿真与分析平台。无论是电池储能、超级电容,还是
    的头像 发表于 05-12 13:48 181次阅读
    多种储能技术在<b class='flag-5'>MATLAB</b>和<b class='flag-5'>Simulink</b>中的建模与仿真

    MATLABSimulink R2026a:Agentic AI驱动工程化系统设计新范式

    近期,R2026a版本首次将Agentic AI深度集成至MATLABSimulink实现从“辅助工具”到“主动智能体”的范式转变。
    的头像 发表于 05-06 10:38 745次阅读

    多通道兼容图像采集卡:一机搞定多路图像信号处理

    ,轻松实现多路图像信号的同步采集、高效传输与统一处理,彻底解决传统多路采集方案的痛点,为复杂视觉系统搭建提供高效、便捷、稳定的硬件支撑。传统多路图像
    的头像 发表于 03-19 14:17 277次阅读
    多通道兼容<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:一机搞定多路<b class='flag-5'>图像</b>信号处理

    如何选择适合的工业级图像采集

    匹配,实现稳定、高效的图像数据传输。第一步:匹配前端相机的核心接口采集卡的输入接口必须与工业相机的输出接口完全一致,这是选型的基础前提,不同接口对应不同的传输带宽
    的头像 发表于 02-03 16:42 869次阅读
    如何选择适合的工业级<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡

    图像采集卡:连接设备与数据的图像枢纽

    在机器视觉与图像传输体系中,图像采集卡是无可替代的重要枢纽——它一端承接相机、内窥镜、摄像机等前端图像设备的信号输出,另一端对接后端数据处理
    的头像 发表于 01-22 13:51 432次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:连接设备与数据的<b class='flag-5'>图像</b>枢纽

    数字图像采集的核心载体——图像采集卡技术白皮书

    在工业自动化、医疗影像、广电直播、科研成像等领域,图像采集卡作为连接前端图像设备与后端计算系统的核心硬件,是实现物理图像向数字信号转化并高效
    的头像 发表于 01-21 16:18 471次阅读
    数字<b class='flag-5'>图像</b><b class='flag-5'>采集</b>的核心载体——<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡技术白皮书

    EspeedGrab图像采集软件介绍(Cameralink转USB采集

    支持Cameralink采集YUV411、YUV422等特殊格式 4 图像直方图 黑白、彩色、实时直方图可选择查看; 5 精准像素值 逐个灰度值可查看,位置可查看 6 彩色白平衡 可划定区域,手动或者
    发表于 12-23 17:26

    matlab的算法部署在simulink

    有没有哪位大佬能提供一下思路,遇到一个问题matlab得不到神经网络fitcnet模型的权重参数,所以simulink没办法部署,那遇到这种情况该如何处理
    发表于 12-08 15:27

    图像采集卡终极指南:从原理到选型

    在机器视觉、工业检测、医疗影像等领域,图像采集卡是连接前端图像设备与后端计算系统的核心枢纽。它不仅解决了原始图像信号与计算机数据的“格式互通”问题,更决定了
    的头像 发表于 11-19 15:54 989次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡终极指南:从原理到选型

    图像采集卡:机器视觉时代的图像数据核心枢纽

    一、图像采集卡的技术本质:从信号到数据的“转换器”与“传输通道”图像采集卡(ImageCaptureCard)是机器视觉系统的核心硬件组件,本质是通过专用芯片(如FPGA、ASIC)
    的头像 发表于 11-12 15:15 955次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:机器视觉时代的<b class='flag-5'>图像</b>数据核心枢纽

    图像采集卡:连接现实与数字世界的关键桥梁

    当您点开一个高清直播画面、见证工厂精密零件被自动化检测、或是看到医院里清晰的医学影像时,您可曾想过这些动态图像如何从摄像机实时跃入电脑屏幕?图像采集卡正是驱动这一切的核心技术。作为专业视频采集
    的头像 发表于 09-05 14:30 883次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:连接现实与数字世界的关键桥梁

    雷达系统中数字下变频的实现

    本次设计同样是通过在simulink搭建模型并通过matlab仿真得到正确设计后生成IP核的形式来实现数字下变频的功能。
    的头像 发表于 08-30 14:29 1650次阅读
    雷达系统中数字下变频的<b class='flag-5'>实现</b>

    simulink只要运行就会死机

    在卸载了2345安全卫士之后,电脑就突然黑屏死机,然后再打开电脑,打开simulink后会有照片里的弹窗,就会退出MATLAB,之后再打开simulink只要运行就会死机,怎么解决(求高手解疑)
    发表于 07-24 17:11

    OptiSystem应用:用MATLAB组件实现振幅调制

    本案例展示了在OptiSystem中调用MATLAB代码实现振幅调制。 一、建模目标 案例中,我们生成两束功率为0dBm,频率分别为192.7THz、191THz的载波,合束之后经过自定义脉冲的调制
    发表于 06-13 08:46

    普源示波器如何连接MATLAB实现数据采集与分析

    普源示波器(Rigol)作为国内知名的测试测量仪器品牌,广泛应用于电子工程、科研实验、教学等领域。为了进一步扩展其功能,用户常需将示波器与MATLAB等数据分析平台连接,实现自动化测试、实时信号处理
    的头像 发表于 05-29 09:34 1512次阅读