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

    文章

    3018

    浏览量

    237575
  • Simulink
    +关注

    关注

    22

    文章

    549

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    simulink只要运行就会死机

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

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

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

    工业相机图像采集卡:机器视觉的核心枢纽

    工业相机图像采集卡是用于连接工业相机与计算机的关键硬件设备,主要负责将相机输出图像信号转换为计算机可处理的数字信号,并实现高速、稳定的数据
    的头像 发表于 05-21 12:13 537次阅读
    工业相机<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:机器视觉的核心枢纽

    MATLAB/Simulink驱动汽车行业能效革命

    整车热控制,MATLABSimulink 正以创新工具助力全球企业突破技术瓶颈,为绿色出行提供可靠保障。
    的头像 发表于 05-14 14:22 570次阅读
    <b class='flag-5'>MATLAB</b>/<b class='flag-5'>Simulink</b>驱动汽车行业能效革命

    如何实现MC33774IC在Simulink环境中使用基于模型的设计?

    我想熟悉如何实现MC33774IC 在 Simulink 环境中使用基于模型的设计。 尽管 MATLAB 提供了一些示例文件,但它们似乎是最终版本。要更深入地了解如何配置MC33774,我正在寻找一个教程,该教程解释了如何从头开
    发表于 04-10 08:05

    图像采集卡的技术概述

    1.图像采集卡的基本功能图像采集卡(ImageCaptureCard)是连接相机与计算机的硬件设备,主要完成以下核心任务:信号转换:将相机输出
    的头像 发表于 03-03 14:36 672次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡的技术概述

    图像采集卡功能与应用详解

    图像采集卡(ImageCaptureCard),也称为视频采集卡或图像采集设备,是一种用于将摄像头、相机、显微镜、传感器等设备
    的头像 发表于 02-24 15:58 1597次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡功能与应用详解

    图像采集卡:现代图像处理技术的关键组件

    在现代科技快速发展的背景下,图像处理技术已成为信息技术领域不可或缺的一部分。图像采集卡,作为连接计算机与各种图像采集设备的重要硬件组件,扮演
    的头像 发表于 02-20 10:42 920次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:现代<b class='flag-5'>图像</b>处理技术的关键组件

    图像采集卡:技术原理、应用与未来趋势

    卡的技术架构与行业价值。1.图像采集卡的技术原理图像采集卡的核心功能是完成图像信号的捕获、转换与传输,其技术
    的头像 发表于 02-10 14:41 1207次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:技术原理、应用与未来趋势

    matlab里的simulink仿真一个推挽升压仿真电路,输出带载能力很差?

    新手用了matlab里的simulink搭了个推挽仿真,pwm输出为28khz,占空比0.45,变压器匝数比1:31,输入电压12v,输出电压310v,想做个功率1kw的,然后接了个9
    发表于 02-07 20:01

    MathWorks积极推动MATLABSimulink在教学项目中的应用

    全球领先的数学计算软件开发商 MathWorks 今天宣布,其 MATLABSimulink 平台在中国的高校教育中取得显著成效。随着科技的迅猛发展,国家新质生产力对未来人才提出了更高的创新
    的头像 发表于 12-27 15:32 1295次阅读

    如何使用图像采集

    在现代数字技术的不断发展中,图像采集卡作为一种重要的硬件设备,越来越普遍地应用于各类领域,包括视频监控、医疗影像、影视制作及游戏直播等。图像采集卡通过将模拟信号转换为数字信号,使得计算
    的头像 发表于 12-13 15:03 1730次阅读
    如何使用<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡

    Simulink与 Simscape的结合使用

    Simulink 简介 Simulink 是一个基于 MATLAB 的图形化编程环境,它允许用户通过拖放的方式来构建复杂的系统模型。Simulink 广泛应用于控制设计、信号处理、通信
    的头像 发表于 12-12 09:31 2692次阅读

    SimulinkMATLAB 的结合使用 Simulink中的信号处理方法

    在工程和科学研究中,信号处理是一个重要的领域,涉及到信号的采集、分析、处理和生成。MATLAB 提供了丰富的信号处理工具箱,而 Simulink 提供了一个直观的图形界面,使得复杂的信号处理系统可以
    的头像 发表于 12-12 09:25 2188次阅读