0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Simulink實現(xiàn)MATLAB圖像采集與輸出

電子設計 ? 來源:CSDN 博主 ? 作者:FPGADesigner ? 2020-12-30 10:32 ? 次閱讀

本文將介紹如何使用Simulink提供的回調函數(shù)機制,實現(xiàn)從MATLAB工作空間采集和輸出圖像。

Simulink回調函數(shù)機制
在空白處右鍵->Model Properties,切換到“Callbacks”標簽下,可以看到Simulink支持的回調函數(shù),這些函數(shù)在某些時刻會自動觸發(fā),執(zhí)行M文件中的程序:

點擊每個函數(shù),可以在右邊看到該函數(shù)的觸發(fā)時刻;右邊的編輯框中輸入執(zhí)行的M文件的名稱。M文件與slx文件在同一目錄下。

System Generator設計
數(shù)據(jù)流方法完成圖像的采集與輸出,其實就是從MATLAB的工作空間中導入圖像數(shù)據(jù),再將結果導出到工作空間。按下圖連接model:

pIYBAF9uJwGAA2RKAABIJrq0wCE842.jpg

From Workspace從工作空間中讀取數(shù)據(jù);To Workspace將數(shù)據(jù)導出到工作空間。讀出數(shù)據(jù)時會受到采樣時間的控制,因此讀出的為標量數(shù)據(jù),可以直接接入Gateway In中。三個輸入模塊和輸出模塊分別對應R、G、B三個通道,雙擊打開配置界面,在“Data”中設置變量名稱。

設計思路如下:在啟動模型時,設計一個函數(shù)讀取圖片并將圖片轉換為From Worspace兼容的格式;在仿真結束時,設計一個函數(shù)將輸出的數(shù)據(jù)重新整理為圖片格式并顯示結果。添加一個PreLoadFcn回調函數(shù)LoadImg.m、一個StopFcn回調函數(shù)ShowImg.m,分別完成上述功能。

回調函數(shù)設計
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類型矩陣
%第一列為時間;其余列為數(shù)據(jù)
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圖像,系統(tǒng)采樣時間為1s,仿真時長設置為256*256,即只讀取一次完整的圖像。先關閉slx文件,再次啟動,此時MATLAB的工作空間:

o4YBAF9uJwKAHnvuAAAkJ-SmSGc640.jpg

可見啟動時執(zhí)行了LoadImg函數(shù)。運行仿真后,MATLAB的工作空間:

pIYBAF9uJwOAWRBrAABLbzGzRwc692.jpg

可見仿真結束時執(zhí)行了ShowImg函數(shù),彈出結果圖如下:

在某些方面講,基于數(shù)據(jù)流方法的圖像采集與輸出要更靈活,設計者可以根據(jù)需要隨意設計回調函數(shù)(當然回調函數(shù)的用途不限于此)。

編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    180

    文章

    2957

    瀏覽量

    229900
  • Simulink
    +關注

    關注

    22

    文章

    520

    瀏覽量

    62191
收藏 人收藏

    評論

    相關推薦

    Matlab/Simulink/Stateflow建模開發(fā)及仿真測試

    matlab 模擬仿真 熟悉Matlab/Simulink/Stateflow建模開發(fā)及仿真測試,熟悉V模型開發(fā)流程。 熟悉自動代碼生成,能夠編寫或者配置自動代碼生成腳本。
    發(fā)表于 10-24 17:23

    圖像采集卡:增強視覺數(shù)據(jù)采集

    圖像采集卡介紹:在視覺數(shù)據(jù)采集領域,圖像采集卡在捕獲和處理來自各種來源的圖像或視頻方面發(fā)揮著關鍵
    的頭像 發(fā)表于 09-24 11:06 ?207次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>采集</b>卡:增強視覺數(shù)據(jù)<b class='flag-5'>采集</b>

    利用Matlab函數(shù)實現(xiàn)深度學習算法

    Matlab實現(xiàn)深度學習算法是一個復雜但強大的過程,可以應用于各種領域,如圖像識別、自然語言處理、時間序列預測等。這里,我將概述一個基本的流程,包括環(huán)境設置、數(shù)據(jù)準備、模型設計、訓練過程、以及測試和評估,并提供一個基于
    的頭像 發(fā)表于 07-14 14:21 ?1622次閱讀

    圖像采集卡的選擇技巧

    在當今科技發(fā)達的時代,圖像采集卡在各行各業(yè)中被廣泛使用,從醫(yī)療領域到工業(yè)領域,從娛樂領域到安防領域。選擇一款適合自己需求的圖像采集卡顯得尤為重要。本文將介紹一些選擇合適
    的頭像 發(fā)表于 05-28 18:09 ?379次閱讀
    <b class='flag-5'>圖像</b><b class='flag-5'>采集</b>卡的選擇技巧

    MathWorks宣布推出MATLABSimulink的2024a版本

    MathWorks宣布推出MATLABSimulink的2024a版本
    的頭像 發(fā)表于 04-07 14:03 ?562次閱讀
    MathWorks宣布推出<b class='flag-5'>MATLAB</b>和<b class='flag-5'>Simulink</b>的2024a版本

    機器視覺中圖像采集卡的功能與應用

    機器視覺技術廣泛應用于工業(yè)生產(chǎn)檢測、醫(yī)療、交通等領域助力實現(xiàn)自動化、智能化。整個機器視覺系統(tǒng)可分為圖像采集圖像處理兩大模塊。而圖像
    的頭像 發(fā)表于 04-04 08:33 ?828次閱讀
    機器視覺中<b class='flag-5'>圖像</b><b class='flag-5'>采集</b>卡的功能與應用

    電路仿真軟件simulink的工作原理

    SimulinkMATLAB的一個模塊,它采用圖形化的方式來創(chuàng)建動態(tài)系統(tǒng)模型并進行仿真分析。Simulink的工作原理主要基于模塊化的建模和仿真方式。
    的頭像 發(fā)表于 03-29 15:21 ?1365次閱讀

    電路仿真軟件simulink使用方法

    SimulinkMATLAB的一個重要組件,用于進行動態(tài)系統(tǒng)的建模和仿真。
    的頭像 發(fā)表于 03-29 14:25 ?2002次閱讀

    Matlab仿真】單相交交變頻器研究與實現(xiàn),Simulink建模

    的交替工作。 最后利用MATLAB R2012a仿真軟件搭建單相交-交變頻器的仿真模型,并且經(jīng)過調試,該電路模型能夠輸出幅值可調、頻率可調的正弦波形。 引言 交-交變頻器是通過電力電子電路的開關控制,而
    發(fā)表于 03-26 17:20

    如何使用MATLABMATLAB Parallel Server擴展整車仿真呢?

    使用 MATLABSimulink 設計和構建 Rivian 車輛仿真界面平臺幫助我們實現(xiàn)了關鍵目標。我們?yōu)楣こ處熀头枪こ處焺?chuàng)建了統(tǒng)一平臺,用于運行整車仿真、后處理結果和創(chuàng)建報告。
    的頭像 發(fā)表于 01-10 18:22 ?1146次閱讀
    如何使用<b class='flag-5'>MATLAB</b>和<b class='flag-5'>MATLAB</b> Parallel Server擴展整車仿真呢?

    圖像采集卡與千兆卡的區(qū)別

    卡是一種專門用于接收和處理圖像信號的設備。它一般通過接口將攝像機、監(jiān)控設備等圖像源連接到計算機上,實現(xiàn)圖像采集、存儲、處理和傳輸?shù)裙δ堋?/div>
    的頭像 發(fā)表于 12-15 09:57 ?1287次閱讀

    MATLAB的數(shù)字邏輯電路Simulink仿真

    電子發(fā)燒友網(wǎng)站提供《MATLAB的數(shù)字邏輯電路Simulink仿真.pdf》資料免費下載
    發(fā)表于 11-17 15:39 ?5次下載
    <b class='flag-5'>MATLAB</b>的數(shù)字邏輯電路<b class='flag-5'>Simulink</b>仿真

    使用MATLAB Simulink和HDL編碼器創(chuàng)建自定義IP--AWB

    自動白平衡模塊的設計是使用 HDL Coder 在 MATLABSimulink 中創(chuàng)建的。HDL Coder能夠生成 HDL 文件,這些文件可以作為 IP 在我們的目標 FPGA 中運行。
    的頭像 發(fā)表于 11-13 09:27 ?1044次閱讀
    使用<b class='flag-5'>MATLAB</b> <b class='flag-5'>Simulink</b>和HDL編碼器創(chuàng)建自定義IP--AWB

    講解MATLAB/Simulink HDL使用入門

    我們將使用實例講解MATLAB / Simulink HDL 使用入門。
    的頭像 發(fā)表于 11-06 09:12 ?1167次閱讀
    講解<b class='flag-5'>MATLAB</b>/<b class='flag-5'>Simulink</b> HDL使用入門

    MATLAB如何實現(xiàn)PID?

    MATLAB是一種非常強大的工具,用于實現(xiàn)和分析PID(比例-積分-微分)控制器。在MATLAB中,您可以使用控制系統(tǒng)工具箱來設計、模擬和調整PID控制系統(tǒng)。以下是一般步驟,演示如何在MATL
    的頭像 發(fā)表于 11-04 08:00 ?2618次閱讀
    <b class='flag-5'>MATLAB</b>如何<b class='flag-5'>實現(xiàn)</b>PID?