圖像屬于二維信號,如果想在Simulink中采集和輸出圖像,進行圖像處理算法的仿真時會遇到一些問題。本文將介紹如何搭建圖像的采集與輸出模型。
采集圖像需要解決的問題
Computer Vision System Toolbox中包含兩個模塊:Image From File可以讀取圖片格式的文件;Video Viewer可以輸入圖像并顯示(類似于Scope觀察信號波形一樣)。
但是Image From File一次讀出的便是完整的圖片信息,是一個向量形式,而Gateway In只能接收標量數據的輸入(即單個數據)。如果將兩者直接相連,會出現如下錯誤:

Image From File讀取一個256*256大小的圖像,讀出數據為一個256*256*3的數據(RGB三個通道),這個數據不能直接輸入到FPGA中。我們需要利用Simulink提供的功能豐富的block完成數據之間的轉換。
圖像采集實現
在Simulink中添加block按下圖連接:

下面以列表的形式給出每個block的作用(以讀取256*256的RGB圖像為例,工作空間中設置變量ImSize=256):
●Image From File:讀取圖像:

“File name”設置圖片文件路徑;“Sample time”設置為ImSize*ImSize即只做一次完整的圖像采集;“Image signal”設置為Separate color signals可以獨立輸出圖像的R、G、B三個通道,每個通道都是256*256大小。
●Math Function:該block可以運行一些基本的數學函數(如指數、對數、平方等),這里設置為Transpose,計算圖像的轉置矩陣。
●Convert 2-D to 1-D:該block可以將二維數組重新按一維數組的順序排列,從矩陣的列開始轉換,如下圖例子所示:

由于圖像處理算法大多都是以行為單位,因此在前面加了一個Math Function模塊求轉置矩陣,這樣在轉換后的一維數組中便是按圖像的每一行依次排列。
●Frame Conversion和Unbuffer:這兩個block配合使用,將一維數組(向量)轉換為Gateway In可以接收的標量形式。示例如下:

Unbuffer將幀格式(frame)轉換為標量數據;Frame Conversion的作用便是將一維數組以幀格式采樣輸出,即將一副圖像共(256*256=)65536個數據打包為一幀,再由Unbuffer轉換為標量。
●Data Type Conversion:目前的RGB圖像每個通道大多都是uint8格式,該模塊將數據格式轉換為uint8。
●Unit Delay:延時一個單位,數據緩存。
●Gateway In:讀取uint8格式的圖像數據,數據格式設置為UFix_8_0。
圖像輸出實現
圖像輸出的流程恰好與圖像采集相反,是為了將FPGA處理后的標量數據重新轉換組織成圖片的數組形式。在Simulink中添加block按下圖連接:

下面以列表的形式給出每個block的作用(以輸出256*256的RGB圖像為例,工作空間中設置變量ImSize=256):
●Data Type Conversion:Simulink從Gateway Out讀出的數據會默認轉換為double,這里加入該block將數據轉換為圖像的uint8格式。
●Buffer:與Unbuffer作用相反,將標量數據重新組織為指定幀格式輸出。示例如下:

雙擊配置該block,將“Output buffer size”設置為ImSize*ImSize,即每幅圖像的數據為一幀。
●Convert 1-D to 2-D:將一維數組重新整理為指定格式的二維數組,示例如下:

雙擊配置該block,將“Number of output rows”和“Number of output columns”都設置為ImSize,即以256*256的格式輸出。
●Math Function:由上圖可知,整形為二維數組后,原本圖像的每一行數據變成了矩陣的每一列。因此需要加入此模塊再求一此轉置矩陣,得到原圖像的數據排列方式。
●Video Viewer:雙擊打開,點擊File->Image Signal->Separate Color Signals,即可分別輸入R、G、B三個通道的數據。
打包子系統
可以看到上面的整個模型已經很龐大,因此將圖像采集部分和圖像輸出部分分別打包為子系統。選中對應部分,右鍵->Create Subsystem from selection。代開子系統,修改IN/OUT管腳的名稱為R、G、B。此時系統整體連接如下圖:

在System Generator和Gateway In中將采樣時間設置為1S;Simulink仿真時長設置為256*256,即保證采集完一幅圖像。再添加一個Video Viewer觀察原始圖片。運行仿真,結果如下:
輸入與輸出圖片相同,表明結果正確。如果需要進行數字圖像處理算法的仿真驗證,在其中加入其它block實現算法即可。本系統實現了圖像的采集與輸出,使仿真時的結果更直觀,更容易觀察算法效果,大大提升了仿真效率。
編輯:hfy
-
Simulink
+關注
關注
23文章
551瀏覽量
66053 -
數字圖像處理
+關注
關注
7文章
103瀏覽量
19867
發布評論請先 登錄
數字圖像采集的核心載體——圖像采集卡技術白皮書
EspeedGrab圖像采集軟件介紹(Cameralink轉USB采集)
RK3588采集Cameralink圖像快速搭建系統辦法
matlab的算法部署在simulink中
圖像采集卡:機器視覺時代的圖像數據核心樞紐
圖像采集卡與視頻采集卡的主要區別對比
無模型自適應控制在永磁同步電機轉速中的仿真研究
【正點原子STM32MP257開發板試用】基于 DeepLab 模型的圖像分割
工業相機圖像采集卡:機器視覺的核心樞紐
如何實現MC33774IC在Simulink環境中使用基于模型的設計?
工業圖像采集卡:機器視覺的基石與智能制造的引擎
Simulink中搭建圖像的采集與輸出模型案例分析
評論