• 沒有找到結果。

視訊解碼晶片影像來源操作

三. 邊緣可適應性彩色影像縮放硬體實現

3.3 彩色像素資料流程控制

3.3.2 視訊解碼晶片影像來源操作

另一個影像來源是經由視訊解碼晶片(ADV1780)所輸入的影像資料,因為輸入的影 像資料為 720 × 240 YUV 4:2:2 格式,而且在資料的輸入是以 8-bit 為一個單位,所以在 資料處理上必需要對 SSRAM 的 Data buffer 做四次的寫入,操作流程如圖 3-10 所示,為 視訊解碼的資料擷取操作流程圖,詳細的操作流程如下:

Fig. 3-10. 視訊解碼的資料擷取操作流程圖

1. 在系統始初化及I2C的介面對視訊解碼晶片做設定之後,控制電路會先等待視訊 解碼晶片(TV-Decode)的垂直同步信號。

2. 當取得垂直同步信號之後,接下來等待水平同步信號及Blank,接下來就是對視 訊解碼晶片(TV-Decode)所輸出的ITU-R656格式做解碼。

3. 接下來開始擷取YUV的影像資料,因為從視訊解碼晶片(TV-Decode)中,所接收 的資料是以8-bit為一個單位,在寫入SSRAM之前必需先將32-Bit的Data buffer先 填滿四次,再寫入SSRAM中。

4. SSRAM介面電路提供一组位址計數器,每寫一筆32-bit的像素(Pixels)資料就會

計數一次,如果還有資料未寫完電路的動作會回到3.繼續擷取的視訊解碼晶片 (TV-Decode)輸入的資料。

5. 720×240的影像資料寫完之後,TFT LCD控制電路以32-bit為單位將像素資料從

SSRAM中讀取出來,最後再以8-bit為單位寫入TFT LCD顯示畫面。

6. 如果影像資料已寫入SSRAM後,只要啟動演算法硬體電路,就能夠執行影像縮 放的功能。

Fig. 3-11. 視訊解碼晶片(TV-Decode)輸出資料及 SSRAM 資料配置

3.3.3 SSRAM 存取操作 存取操作 存取操作 存取操作

在演算法的處理或 TFT LCD 顯示圖片資料的立即性成為一個重要的問題,為了能 夠使得大量的資料可以快速的獲得,所以在系統中有提供了一顆高速同步靜態隨機記憶 體(SSRAM),外部的影像來源所擷取到的影像都會先暫時存放在這一顆高速同步靜態隨 機記憶體(SSRAM)中,在 SSRAM 控制電路中會需要位址匯流排(Address Bus)、資料匯 流排(Data Bus)及一些控制信號(Control Signal)如圖 3-12 所示為 SSRAM 介面電路方塊 圖,硬體主要是由 SSRAM 位址計數器電路來輸出位址(Address),資料的讀寫主要是由 資料方向電路(Data Direction Circuit)以及 SSRAM 控制(SSRAM control)來決定要寫入資 料到 SSRAM 或從 SSRAM 讀取資料,因為對 SSRAM 存取時會需一些控制信號,所以 也會有一組控制信號電路(Control Signal Circuit)來對 SSRAM 做一些讀寫以及致能信號 的控制。

Fig. 3-12. SSRAM 介面電路方塊圖

在影像的立即資料的取得從兩個影像來源的寫入到讀取 TFT LCD 控制電路的讀取 可以透過如圖 3-13 所示,可以了解 SSRAM 的寫入及讀取的流程。

Fig. 3-13. SSRAM 存取資料操作流程

1. 在系統始初化的同時,SSRAM介面電路會對SSRAM所需的一些控制信號做設 定,並且位址(Address)會先清除為零。

2. 當要對SSRAM寫入資料時必需先將/GW控制信號設定為零,接下來送出位址

(Address)信號,最後對ADSP送出101的信號,告知SSRAM已經把位址送出。

3. 在送完位址(Address)信號及設定完ADSP信號之後,可以立即對SSRAM寫入資 料,接下來再對位址(Address)加一,並且判斷是否已寫完整張圖片的資料(720 × 240),如果還沒有全部寫入重複2.的做法。

4. 如果圖片(720 × 240)已全部寫入SSRAM之後,TFT LCD控制電路會對SSRAM讀

取所要顯示的影像資料,SSRAM介面電路會將/GW設為1,並將/OE設為0(讀取 控制信號)。

5. TFT LCD控制電路以32-bit為單位將像素(Pixels)資料從SSRAM中讀取出來,最

後再以8-bit為單位寫入TFT LCD顯示畫面,從SSRAM讀取32-bit的資料之後,

SSRAM的位址加一並判斷是否已顯示完整張圖片的資料(720 × 240) 如果還沒

有全部寫入重複5.的做法。

6. 只要TFT LCD顯示影像資料,就會一直不斷向SSRAM讀取資料。

3.3.4 Line Buffer 資料處理操作 資料處理操作 資料處理操作 資料處理操作

從圖 3-14 所示,像素的處理中從外部記憶體所讀取到的資料必需存放在由 FPGA 內部所提供的內部記體中,稱之為 Line Buffer。因為所要影像處理的像素為 YUV 的格 式,所以 FPGA 也針對了這個需求提供三組獨立的 RAM 來暫時存放 Y(亮度)、U 及 V(色 差),因為從 SSRAM 中所讀取到的資料一次為 4-byte,所以 SSRAM 的讀取電路會提供 一個 4-byte 的輸出 Data buffer,再經由一個 YUV 的分配控制電路來做分配,將 YUV 的 像素分配到自己所屬的內部記憶體中,在資料存取的同時內部記憶體(Line Buffer)的位 址也會自動計數。

Fig. 3-14. YUV 像素資料分配 RAM(Line Buffer)

在 YUV 的格式中以 Y 像素(亮度)的成份對於人類視覺最為敏感,所以演算法中的 模糊決策系統只針對 Y 像素來做計算,而最後的補插點 Y 像素經由可適應內插法或雙 線性內插法來做補點,而 U 像素及 V 像素透過雙線性內插法來做補點;當彩色影像資 料個別寫入 YUV Line Buffer 中以後,演算法的硬體電路會開始對 YUV Line Buffer 中的 資料做讀取,其中因為視覺對於 Y 像素(亮度)的敏感程度比起 U 或 V 更為重要,所以 在演算法中的模糊決策系統只針對 Y 像素做運算,每一次的計算中內部記憶體的控制電 路會對 Y Line Buffer 讀取 6×6 的影像區塊資料,因為在演算法的運算過程中是以 4×4 的影像區塊為一個單位,而在這個區塊的每一個像素都會使用到角度的計算,故每一個 原點像素都必需取得它相鄰邊的像素來做運算,故每一次的讀取都需要 36 個像素,當 在每一次的補插點運算完畢之後,要處理下一個補插點的運算時,整個 6 × 6 的影像區 塊資料會向右水平的方向移動一個像素的間格,再繼續執行演算法的計算如圖 3-15 所 示為 Y 像素的影像區塊資料的水平移動。

Fig. 3-15. Y 像素 Line Buffer 執行水平移動

此外從圖 3-16 所示在 Line Buffer 的二維平面上可以看出在每一次水平的移動 (Horizontal Sliding)在完成 715 次的補插點之後,會對垂直方向移動一條 Line 的間格,

所以每一次的垂直移動之前必需計算出下一個水平移動的起始點位置,故在硬體的實現 中,彩色像素是存放於外部的 SSRAM 中,故需將二維的方式轉換為一維來計算每一次 的垂直移動量,可以從圖 3-17 所知,每一次的垂直的移動硬體電路都會根據下一條 Line 的補插點來計算出一個垂直的起始的移動量。

Fig. 3-16. Y 像素執行垂直移動

Fig. 3-17. 垂直移動於一維 SSRAM 記憶體配置

3.4 演算法實現 演算法實現 演算法實現 演算法實現

3.4.1 演算法硬體架 演算法硬體架 演算法硬體架 演算法硬體架構 構 構

從圖3-18的演算法架構方塊圖中可以得知,從影像的來源端輸入YUV(4:2:2)的彩色 影像,硬體電路將Y像素、U像素及V像素存入各自的Buffer中,模糊決策系統硬體電路 會對Y像素做運算,演算法電路會根據運算出來的結果來判斷是否執行雙線性內插法或 邊緣適應性影像內插法,因為在模糊決策系統中的三種運算(VD、SD、CD)的輸出都關 係到4×4的滑動區塊最後補插點結果,運算出來的結果,如果是人類眼睛較敏感的部份,

演算法電路會更進一步對邊緣的方向執行角度的運算,演算法硬體實現中角度的取得是 採用CORDIC硬體電路實現,從CORDIC硬體中得到角度輸出後,接下來是做直方圖,

在4×4的滑動區塊中的16個Y像素都會有自己的一個角度範圍(k=0~7),硬體電路取得角 度範圍所累計最高的值做為權重查表的位址,經由Y像素及權重可以乘加計算出所要的 補插點,反之如果模糊決策系統輸出的結果是人類眼睛較不敏感的部份,只需要使用雙 線性內插法即可;另外U像素及V像素部份也只需要雙線性內插法。

Fig. 3-18. 演算法架構方塊圖.

3.4.2 Fuzzy Decision 硬體實現 硬體實現 硬體實現 硬體實現

有模糊決策系統的系統會有三種針對4×4的滑動區塊的演算法模組,有Visibility Degree(VD)、Structure Degree(SD)和Complexity Degree (CD)。硬體詳細的描述如下:

(1) Visibility Degree模組 模組 模組 模組

Visibility Degree(VD)的計算式子如(3.1) (3.2) (3.3),

) (BL V D

VD= − , (3.1)

)) , ( min(

)) , (

max(O i j O i j

D= − (3.2)

BL

BL e

e BL

V( )=20.66 0.03 + 0.008 . (3.3)

從過去灰階架構中設計可以看出VD硬體的實現方式,是將4×4的影像區塊中的16個 像素找多最亮像素點及最暗像素點相減並取得差值(D),原來式(3.3)的V(BL) Visibility

Threshold的數值不再以指數的方式來表示,而是透過演算法實驗後的測試結果來取得一

個固定的臨界值,再和差值(D)做相減所得到VD值如式(3.4),此種做法可能會造成在邊 緣的處理上出現些許的鋸齒情形,並不能將邊緣的部份處理的更為平滑,圖3-19所示,

為灰階架構中的VD硬體方塊圖。

Threshold D

VD= − , (3.4)

Fig. 3-19. 灰階架構的 VD 硬體架構方塊圖 [21]

在彩色架構中VD做法所使用的做法是在從背景及Visibility Threshold的不同來辨別 物件於背景上的辨識能見度,所以透過式(3.3)來求得V(BL)的函數,因為在V(BL)的式子 中會使用指數函數,在一般硬體電路的實現上較為困難,所以在背景亮度(Background Luminance BL)的有限數值範圍中可以透過查表的方式來實現,背景亮度的範圍是 BL=0~255,所以V(BL)的輸出會有256種不同的可能性,而將浮點數轉為定點數所需的

因為在V(BL)函數中如式(3.3)會必須先求得背景亮度,如式(2.5),主要是從4×4的影 像區塊中的16個像素及背景亮度的參數矩陣做乘加的運算,並在最後做除23的平均,所 以在硬體的實現除法器會利用加法器來處理商數的累加及減法器執行除法的功能,在這 個除法電路中會使用到一組除數比較表每一組的除數比較值都會對應一組商數如表 3-1。

BL<23 BL<23

BL>=23

BL Output O(i,j) x B(i,j)

O(i,j) x B(i,j) O(i,j) x B(i,j) O(i,j) x B(i,j)

Fig. 3-21. 背景亮度(BL)硬體方塊圖

Table 3-1.除數及商數查表 Divider 23 Table

除數比較表 除數比較表 除數比較表

除數比較表 商數商數商數商數

23*128 2944 128

23*64 1472 64

23*32 736 32

23*16 368 16

23*8 184 8

23*4 92 4

23*2 46 2

23 23 1

(2) Structure Degree Module

Structure Degree(SD)的計算式子如(3.5),

[ ]

(3) Complexity Degree Module

Complexity Degree計算是整數運算所以沒有小數點的問題在硬體的實現上較為簡 單,CD計算的開始會先將4×4的滑動區塊中的16個像素O( ji, )做適應性二值化O'(i, j), 因為影像在取得適應性二值化的結果之前,會需要適應性臨界值(Adaptive Threshold)來 做比較,所以將16個像素的和再取平均就是所要的適應性臨界值(Adaptive Threshold),

當像素的值≧適應性臨界值(Adaptive Threshold)輸出的值就為1,反之輸出為0。如果16 個像素做適應性二值化O'(i, j)結束後,就執行Laplacian運算如式(3.6),而CD運算的硬

Adaptive Threshold Y Pixels >= Mean_16

Laplacian Operator

Fig. 3-23. CD 硬體實現方塊圖

3.4.3 Angle Evaluation 硬體實現 硬體實現 硬體實現 硬體實現

(1) CORDIC Module

反正切函數可以藉由 CORDIC(Coordinate Rotation Digital Computer)硬體電路來實 現,CORDIC(Coordinate Rotation Digital Computer)[22]演算法,是由 J. Volder 於 1959 年 提出,首先用於導航系統,使得向量的旋轉和定向運算不需要做查三角函數表、乘法、

Fig. 3-25. CORDIC 硬體電路[22]

在CORDIC硬體電路中,會需要一組固定的角度參數(Zi)如表3-2,來提供每一階層 輸出所要的查表,而每一次所查到的角度參數(Zi),硬體電路都會依Dy(i)所輸出的最高位

在CORDIC硬體電路中,會需要一組固定的角度參數(Zi)如表3-2,來提供每一階層 輸出所要的查表,而每一次所查到的角度參數(Zi),硬體電路都會依Dy(i)所輸出的最高位

相關文件