圖像屬于二維信號(hào),如果想在Simulink中采集和輸出圖像,進(jìn)行圖像處理算法的仿真時(shí)會(huì)遇到一些問題。本文將介紹如何搭建圖像的采集與輸出模型。
采集圖像需要解決的問題
Computer Vision System Toolbox中包含兩個(gè)模塊:Image From File可以讀取圖片格式的文件;Video Viewer可以輸入圖像并顯示(類似于Scope觀察信號(hào)波形一樣)。
但是Image From File一次讀出的便是完整的圖片信息,是一個(gè)向量形式,而Gateway In只能接收標(biāo)量數(shù)據(jù)的輸入(即單個(gè)數(shù)據(jù))。如果將兩者直接相連,會(huì)出現(xiàn)如下錯(cuò)誤:
Image From File讀取一個(gè)256*256大小的圖像,讀出數(shù)據(jù)為一個(gè)256*256*3的數(shù)據(jù)(RGB三個(gè)通道),這個(gè)數(shù)據(jù)不能直接輸入到FPGA中。我們需要利用Simulink提供的功能豐富的block完成數(shù)據(jù)之間的轉(zhuǎn)換。
圖像采集實(shí)現(xiàn)
在Simulink中添加block按下圖連接:
下面以列表的形式給出每個(gè)block的作用(以讀取256*256的RGB圖像為例,工作空間中設(shè)置變量ImSize=256):
●Image From File:讀取圖像:
“File name”設(shè)置圖片文件路徑;“Sample time”設(shè)置為ImSize*ImSize即只做一次完整的圖像采集;“Image signal”設(shè)置為Separate color signals可以獨(dú)立輸出圖像的R、G、B三個(gè)通道,每個(gè)通道都是256*256大小。
●Math Function:該block可以運(yùn)行一些基本的數(shù)學(xué)函數(shù)(如指數(shù)、對數(shù)、平方等),這里設(shè)置為Transpose,計(jì)算圖像的轉(zhuǎn)置矩陣。
●Convert 2-D to 1-D:該block可以將二維數(shù)組重新按一維數(shù)組的順序排列,從矩陣的列開始轉(zhuǎn)換,如下圖例子所示:
由于圖像處理算法大多都是以行為單位,因此在前面加了一個(gè)Math Function模塊求轉(zhuǎn)置矩陣,這樣在轉(zhuǎn)換后的一維數(shù)組中便是按圖像的每一行依次排列。
●Frame Conversion和Unbuffer:這兩個(gè)block配合使用,將一維數(shù)組(向量)轉(zhuǎn)換為Gateway In可以接收的標(biāo)量形式。示例如下:
Unbuffer將幀格式(frame)轉(zhuǎn)換為標(biāo)量數(shù)據(jù);Frame Conversion的作用便是將一維數(shù)組以幀格式采樣輸出,即將一副圖像共(256*256=)65536個(gè)數(shù)據(jù)打包為一幀,再由Unbuffer轉(zhuǎn)換為標(biāo)量。
●Data Type Conversion:目前的RGB圖像每個(gè)通道大多都是uint8格式,該模塊將數(shù)據(jù)格式轉(zhuǎn)換為uint8。
●Unit Delay:延時(shí)一個(gè)單位,數(shù)據(jù)緩存。
●Gateway In:讀取uint8格式的圖像數(shù)據(jù),數(shù)據(jù)格式設(shè)置為UFix_8_0。
圖像輸出實(shí)現(xiàn)
圖像輸出的流程恰好與圖像采集相反,是為了將FPGA處理后的標(biāo)量數(shù)據(jù)重新轉(zhuǎn)換組織成圖片的數(shù)組形式。在Simulink中添加block按下圖連接:
下面以列表的形式給出每個(gè)block的作用(以輸出256*256的RGB圖像為例,工作空間中設(shè)置變量ImSize=256):
●Data Type Conversion:Simulink從Gateway Out讀出的數(shù)據(jù)會(huì)默認(rèn)轉(zhuǎn)換為double,這里加入該block將數(shù)據(jù)轉(zhuǎn)換為圖像的uint8格式。
●Buffer:與Unbuffer作用相反,將標(biāo)量數(shù)據(jù)重新組織為指定幀格式輸出。示例如下:
雙擊配置該block,將“Output buffer size”設(shè)置為ImSize*ImSize,即每幅圖像的數(shù)據(jù)為一幀。
●Convert 1-D to 2-D:將一維數(shù)組重新整理為指定格式的二維數(shù)組,示例如下:
雙擊配置該block,將“Number of output rows”和“Number of output columns”都設(shè)置為ImSize,即以256*256的格式輸出。
●Math Function:由上圖可知,整形為二維數(shù)組后,原本圖像的每一行數(shù)據(jù)變成了矩陣的每一列。因此需要加入此模塊再求一此轉(zhuǎn)置矩陣,得到原圖像的數(shù)據(jù)排列方式。
●Video Viewer:雙擊打開,點(diǎn)擊File->Image Signal->Separate Color Signals,即可分別輸入R、G、B三個(gè)通道的數(shù)據(jù)。
打包子系統(tǒng)
可以看到上面的整個(gè)模型已經(jīng)很龐大,因此將圖像采集部分和圖像輸出部分分別打包為子系統(tǒng)。選中對應(yīng)部分,右鍵->Create Subsystem from selection。代開子系統(tǒng),修改IN/OUT管腳的名稱為R、G、B。此時(shí)系統(tǒng)整體連接如下圖:
在System Generator和Gateway In中將采樣時(shí)間設(shè)置為1S;Simulink仿真時(shí)長設(shè)置為256*256,即保證采集完一幅圖像。再添加一個(gè)Video Viewer觀察原始圖片。運(yùn)行仿真,結(jié)果如下:
輸入與輸出圖片相同,表明結(jié)果正確。如果需要進(jìn)行數(shù)字圖像處理算法的仿真驗(yàn)證,在其中加入其它block實(shí)現(xiàn)算法即可。本系統(tǒng)實(shí)現(xiàn)了圖像的采集與輸出,使仿真時(shí)的結(jié)果更直觀,更容易觀察算法效果,大大提升了仿真效率。
編輯:hfy
-
Simulink
+關(guān)注
關(guān)注
22文章
536瀏覽量
62490 -
數(shù)字圖像處理
+關(guān)注
關(guān)注
7文章
103瀏覽量
18939
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論