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
    +关注

    关注

    182

    文章

    2963

    浏览量

    230134
  • Simulink
    +关注

    关注

    22

    文章

    522

    浏览量

    62300
收藏 人收藏

    评论

    相关推荐

    图像采集卡的保养和维护

    图像采集卡是计算机和数字图像处理系统中不可或缺的组件,它将外部视频信号转换为计算机可以理解和处理的格式。随着数字化进程的加速,越来越多的行业开始依赖图像
    的头像 发表于 11-21 13:05 37次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡的保养和维护

    Matlab/Simulink/Stateflow建模开发及仿真测试

    matlab 模拟仿真 熟悉Matlab/Simulink/Stateflow建模开发及仿真测试,熟悉V模型开发流程。 熟悉自动代码生成,能够编写或者配置自动代码生成脚本。
    发表于 10-24 17:23

    图像采集卡:增强视觉数据采集

    图像采集卡介绍:在视觉数据采集领域,图像采集卡在捕获和处理来自各种来源的图像或视频方面发挥着关键
    的头像 发表于 09-24 11:06 257次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:增强视觉数据<b class='flag-5'>采集</b>

    利用Matlab函数实现深度学习算法

    Matlab实现深度学习算法是一个复杂但强大的过程,可以应用于各种领域,如图像识别、自然语言处理、时间序列预测等。这里,我将概述一个基本的流程,包括环境设置、数据准备、模型设计、训练过程、以及测试和评估,并提供一个基于
    的头像 发表于 07-14 14:21 1884次阅读

    图像采集卡的选择技巧

    在当今科技发达的时代,图像采集卡在各行各业中被广泛使用,从医疗领域到工业领域,从娱乐领域到安防领域。选择一款适合自己需求的图像采集卡显得尤为重要。本文将介绍一些选择合适
    的头像 发表于 05-28 18:09 407次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡的选择技巧

    基于FPGA的实时边缘检测系统设计,Sobel图像边缘检测,FPGA图像处理

    计算机软件实现方式有更快的处理速度。 经验证,系统工作稳定,满足实时性要求 。 MATLAB 与 FPGA无线通信、图像处理、数字信号处理系列 引言 图像的边缘包含一副
    发表于 05-24 07:45

    FPGA设计中 Verilog HDL实现基本的图像滤波处理仿真

    今天给大侠带来FPGA设计中用Verilog HDL实现基本的图像滤波处理仿真,话不多说,上货。 1、用matlab代码,准备好把图片转化成Vivado Simulator识别的格式,即每行一
    发表于 05-20 16:44

    MathWorks宣布推出MATLABSimulink的2024a版本

    MathWorks宣布推出MATLABSimulink的2024a版本
    的头像 发表于 04-07 14:03 605次阅读
    MathWorks宣布推出<b class='flag-5'>MATLAB</b>和<b class='flag-5'>Simulink</b>的2024a版本

    机器视觉中图像采集卡的功能与应用

    机器视觉技术广泛应用于工业生产检测、医疗、交通等领域助力实现自动化、智能化。整个机器视觉系统可分为图像采集图像处理两大模块。而图像
    的头像 发表于 04-04 08:33 890次阅读
    机器视觉中<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡的功能与应用

    电路仿真软件simulink的工作原理

    SimulinkMATLAB的一个模块,它采用图形化的方式来创建动态系统模型并进行仿真分析。Simulink的工作原理主要基于模块化的建模和仿真方式。
    的头像 发表于 03-29 15:21 1511次阅读

    电路仿真软件simulink使用方法

    SimulinkMATLAB的一个重要组件,用于进行动态系统的建模和仿真。
    的头像 发表于 03-29 14:25 2222次阅读

    Matlab仿真】单相交交变频器研究与实现Simulink建模

    的交替工作。 最后利用MATLAB R2012a仿真软件搭建单相交-交变频器的仿真模型,并且经过调试,该电路模型能够输出幅值可调、频率可调的正弦波形。 引言 交-交变频器是通过电力电子电路的开关控制,而
    发表于 03-26 17:20

    DC2100B/A能不能支持MATLAB/simulink自动代码生成?

    1、硬件方面,微控制器是主要有几种,计算能力如何,可以支持类似MPC的算法吗?能不能扩展DSP的控制器? 2、软件方面,能不能支持MATLAB/simulink自动代码生成?
    发表于 01-11 06:56

    如何使用MATLABMATLAB Parallel Server扩展整车仿真呢?

    使用 MATLABSimulink 设计和构建 Rivian 车辆仿真界面平台帮助我们实现了关键目标。我们为工程师和非工程师创建了统一平台,用于运行整车仿真、后处理结果和创建报告。
    的头像 发表于 01-10 18:22 1174次阅读
    如何使用<b class='flag-5'>MATLAB</b>和<b class='flag-5'>MATLAB</b> Parallel Server扩展整车仿真呢?

    图像采集卡与千兆卡的区别

    卡是一种专门用于接收和处理图像信号的设备。它一般通过接口将摄像机、监控设备等图像源连接到计算机上,实现图像采集、存储、处理和传输等功能。
    的头像 发表于 12-15 09:57 1402次阅读