基于FPGA的HDTV視頻圖像灰度直方圖統(tǒng)計(jì)算法設(shè)計(jì)
發(fā)布時(shí)間:2007/8/15 0:00:00 訪問次數(shù):593
引言
隨著HDTV 的普及,以LCD-TV 為主的高清數(shù)字電視逐漸進(jìn)入蓬勃發(fā)展時(shí)期。與傳統(tǒng)CRT 電視不同的是,這些高清數(shù)字電視需要較復(fù)雜的視頻處理電路來(lái)驅(qū)動(dòng),比如:模數(shù)轉(zhuǎn)換(A/D Converter)、去隔行(De-interlacer)、視頻縮放(Scaler)和視頻圖像增強(qiáng)(Video Enhancement)等等。由于HDTV 的帶寬較高,720p 信號(hào)(1280×720@60Hz)的像素速率達(dá)到74MHz,因此針對(duì)HDTV 的視頻處理算法需要更高性能的器件。采用大規(guī)模高工藝的ASIC 芯片是目前這個(gè)問題的主要解決方案,Pixelworks、Genesis 等公司均推出了基于大規(guī)模ASIC 的解決方案。但是,隨著FPGA 工藝的不斷改善,其性價(jià)比與日俱增,尤其是Xilinx、Altera 等廠商紛紛采用90nm 工藝量產(chǎn)后,其價(jià)格不斷降低,Xilinx 最新推出的Spartan-3E系列FPGA 120 萬(wàn)門的售價(jià)只有9 美元,已經(jīng)在小量產(chǎn)品的IC 設(shè)計(jì)中開始替代結(jié)構(gòu)化ASIC,在數(shù)字高清電視這類價(jià)格敏感型消費(fèi)類電子產(chǎn)品中也開始大量采用。
本文介紹了如何在FPGA 中利用Block RAM 的特殊結(jié)構(gòu)實(shí)現(xiàn)HDTV 視頻增強(qiáng)算法中灰度直方圖統(tǒng)計(jì)。
灰度直方圖統(tǒng)計(jì)
灰度直方圖統(tǒng)計(jì)是圖像處理過程中很常用的一個(gè)步驟,簡(jiǎn)單來(lái)講,就是對(duì)一幅圖像各個(gè)灰度的像素進(jìn)行計(jì)數(shù),得到一張灰度分布表。例如,8 位量化的灰度圖像統(tǒng)計(jì)結(jié)果就是256個(gè)值,分別代表0-255 每個(gè)灰度像素的數(shù)量,如圖1 所示為L(zhǎng)ena 圖像的灰度直方圖統(tǒng)計(jì)結(jié)果。直方圖是分析一幅圖像亮度分布特性有力的工具,根據(jù)它的結(jié)果可以進(jìn)行諸如灰度拉伸、自動(dòng)對(duì)比度、動(dòng)態(tài)伽馬調(diào)整等操作。
圖1 Lena 圖像的灰度直方圖統(tǒng)計(jì)
FPGA算法統(tǒng)計(jì)
在計(jì)算機(jī)或者DSP 上實(shí)現(xiàn)直方圖統(tǒng)計(jì)時(shí),我們通常會(huì)使用數(shù)組結(jié)構(gòu),即在內(nèi)存中開辟一個(gè)整數(shù)數(shù)組來(lái)進(jìn)行計(jì)數(shù),但是在FPGA 中定義數(shù)組是非常消耗資源的,尤其是當(dāng)數(shù)組成員的位寬很大時(shí)。例如用觸發(fā)器來(lái)統(tǒng)計(jì)256 灰度的720p 圖像的直方圖,將消耗4000 個(gè)邏輯單元(每個(gè)邏輯單元是一個(gè)四輸入查找表),這幾乎消耗了一個(gè)Spartan-3E 25 萬(wàn)門器件(XC3S250E)80%的邏輯資源。
幸運(yùn)的是,F(xiàn)PGA 器件提供了一個(gè)很好的結(jié)構(gòu)可以處理這類問題,這就是Block RAM。在Altera 和Xilinx 的各型號(hào)FPGA 器件上都集成了一種稱為Block RAM 的片上內(nèi)存,它們以若干Kbits 為一塊,不同型號(hào)集成不同數(shù)量的塊,例如在Spartan-3E 系列中以18Kbits 為一塊,在規(guī)模最小的型號(hào)XC3S100E 上集成了4 塊這樣的內(nèi)存,如圖2 所示:
圖2 Spartan-3E 系列FPGA 集成的Block RAM
這種內(nèi)存很容易實(shí)現(xiàn)數(shù)組類型的結(jié)構(gòu),而且這種內(nèi)存被設(shè)計(jì)成雙端口方式,即可以用兩組獨(dú)立的地址數(shù)據(jù)總線來(lái)讀寫,因此可以用不到一塊的Block RAM 就實(shí)現(xiàn)256×24 這樣的高位寬計(jì)數(shù)器陣列來(lái)進(jìn)行HDTV 視頻圖像的直方圖統(tǒng)計(jì),如圖3 所示:
圖3 用Block RAM 實(shí)現(xiàn)計(jì)數(shù)器陣列
以Block RAM 的結(jié)構(gòu)為核心,按照以下幾點(diǎn)來(lái)設(shè)計(jì)直方圖統(tǒng)計(jì)算法:
1. Block RAM 使用雙端口方式,端口A 用來(lái)將內(nèi)存單元計(jì)數(shù)值讀出,端口B 將計(jì)數(shù)值加一后寫回該內(nèi)存單元。
2. 內(nèi)存的地址在像素有效時(shí)由像素灰度值選擇,在行同步期間不計(jì)數(shù),在場(chǎng)同步期間使用一個(gè)遞增計(jì)數(shù)器在前256 個(gè)時(shí)鐘將統(tǒng)計(jì)結(jié)果輸出,在之后的256 個(gè)時(shí)鐘將RAM 塊清零。
3. 雙端口讀寫時(shí)鐘相位相差180 度,以避免雙端口讀寫沖突。
4. 數(shù)據(jù)的讀出、加一和寫入采用了流水線結(jié)構(gòu)以提高性能,所以在地址控制上要進(jìn)行適當(dāng)暫存以保證數(shù)據(jù)同步。
圖4 為256 級(jí)灰度720p 視頻圖像直方圖統(tǒng)計(jì)的算法實(shí)現(xiàn)功能框圖:
圖4 用FPGA 的Block RAM 實(shí)現(xiàn)直方圖統(tǒng)計(jì)
結(jié)語(yǔ) &
引言
隨著HDTV 的普及,以LCD-TV 為主的高清數(shù)字電視逐漸進(jìn)入蓬勃發(fā)展時(shí)期。與傳統(tǒng)CRT 電視不同的是,這些高清數(shù)字電視需要較復(fù)雜的視頻處理電路來(lái)驅(qū)動(dòng),比如:模數(shù)轉(zhuǎn)換(A/D Converter)、去隔行(De-interlacer)、視頻縮放(Scaler)和視頻圖像增強(qiáng)(Video Enhancement)等等。由于HDTV 的帶寬較高,720p 信號(hào)(1280×720@60Hz)的像素速率達(dá)到74MHz,因此針對(duì)HDTV 的視頻處理算法需要更高性能的器件。采用大規(guī)模高工藝的ASIC 芯片是目前這個(gè)問題的主要解決方案,Pixelworks、Genesis 等公司均推出了基于大規(guī)模ASIC 的解決方案。但是,隨著FPGA 工藝的不斷改善,其性價(jià)比與日俱增,尤其是Xilinx、Altera 等廠商紛紛采用90nm 工藝量產(chǎn)后,其價(jià)格不斷降低,Xilinx 最新推出的Spartan-3E系列FPGA 120 萬(wàn)門的售價(jià)只有9 美元,已經(jīng)在小量產(chǎn)品的IC 設(shè)計(jì)中開始替代結(jié)構(gòu)化ASIC,在數(shù)字高清電視這類價(jià)格敏感型消費(fèi)類電子產(chǎn)品中也開始大量采用。
本文介紹了如何在FPGA 中利用Block RAM 的特殊結(jié)構(gòu)實(shí)現(xiàn)HDTV 視頻增強(qiáng)算法中灰度直方圖統(tǒng)計(jì)。
灰度直方圖統(tǒng)計(jì)
灰度直方圖統(tǒng)計(jì)是圖像處理過程中很常用的一個(gè)步驟,簡(jiǎn)單來(lái)講,就是對(duì)一幅圖像各個(gè)灰度的像素進(jìn)行計(jì)數(shù),得到一張灰度分布表。例如,8 位量化的灰度圖像統(tǒng)計(jì)結(jié)果就是256個(gè)值,分別代表0-255 每個(gè)灰度像素的數(shù)量,如圖1 所示為L(zhǎng)ena 圖像的灰度直方圖統(tǒng)計(jì)結(jié)果。直方圖是分析一幅圖像亮度分布特性有力的工具,根據(jù)它的結(jié)果可以進(jìn)行諸如灰度拉伸、自動(dòng)對(duì)比度、動(dòng)態(tài)伽馬調(diào)整等操作。
圖1 Lena 圖像的灰度直方圖統(tǒng)計(jì)
FPGA算法統(tǒng)計(jì)
在計(jì)算機(jī)或者DSP 上實(shí)現(xiàn)直方圖統(tǒng)計(jì)時(shí),我們通常會(huì)使用數(shù)組結(jié)構(gòu),即在內(nèi)存中開辟一個(gè)整數(shù)數(shù)組來(lái)進(jìn)行計(jì)數(shù),但是在FPGA 中定義數(shù)組是非常消耗資源的,尤其是當(dāng)數(shù)組成員的位寬很大時(shí)。例如用觸發(fā)器來(lái)統(tǒng)計(jì)256 灰度的720p 圖像的直方圖,將消耗4000 個(gè)邏輯單元(每個(gè)邏輯單元是一個(gè)四輸入查找表),這幾乎消耗了一個(gè)Spartan-3E 25 萬(wàn)門器件(XC3S250E)80%的邏輯資源。
幸運(yùn)的是,F(xiàn)PGA 器件提供了一個(gè)很好的結(jié)構(gòu)可以處理這類問題,這就是Block RAM。在Altera 和Xilinx 的各型號(hào)FPGA 器件上都集成了一種稱為Block RAM 的片上內(nèi)存,它們以若干Kbits 為一塊,不同型號(hào)集成不同數(shù)量的塊,例如在Spartan-3E 系列中以18Kbits 為一塊,在規(guī)模最小的型號(hào)XC3S100E 上集成了4 塊這樣的內(nèi)存,如圖2 所示:
圖2 Spartan-3E 系列FPGA 集成的Block RAM
這種內(nèi)存很容易實(shí)現(xiàn)數(shù)組類型的結(jié)構(gòu),而且這種內(nèi)存被設(shè)計(jì)成雙端口方式,即可以用兩組獨(dú)立的地址數(shù)據(jù)總線來(lái)讀寫,因此可以用不到一塊的Block RAM 就實(shí)現(xiàn)256×24 這樣的高位寬計(jì)數(shù)器陣列來(lái)進(jìn)行HDTV 視頻圖像的直方圖統(tǒng)計(jì),如圖3 所示:
圖3 用Block RAM 實(shí)現(xiàn)計(jì)數(shù)器陣列
以Block RAM 的結(jié)構(gòu)為核心,按照以下幾點(diǎn)來(lái)設(shè)計(jì)直方圖統(tǒng)計(jì)算法:
1. Block RAM 使用雙端口方式,端口A 用來(lái)將內(nèi)存單元計(jì)數(shù)值讀出,端口B 將計(jì)數(shù)值加一后寫回該內(nèi)存單元。
2. 內(nèi)存的地址在像素有效時(shí)由像素灰度值選擇,在行同步期間不計(jì)數(shù),在場(chǎng)同步期間使用一個(gè)遞增計(jì)數(shù)器在前256 個(gè)時(shí)鐘將統(tǒng)計(jì)結(jié)果輸出,在之后的256 個(gè)時(shí)鐘將RAM 塊清零。
3. 雙端口讀寫時(shí)鐘相位相差180 度,以避免雙端口讀寫沖突。
4. 數(shù)據(jù)的讀出、加一和寫入采用了流水線結(jié)構(gòu)以提高性能,所以在地址控制上要進(jìn)行適當(dāng)暫存以保證數(shù)據(jù)同步。
圖4 為256 級(jí)灰度720p 視頻圖像直方圖統(tǒng)計(jì)的算法實(shí)現(xiàn)功能框圖:
圖4 用FPGA 的Block RAM 實(shí)現(xiàn)直方圖統(tǒng)計(jì)
結(jié)語(yǔ) &
上一篇:基
熱門點(diǎn)擊
- 24位模數(shù)轉(zhuǎn)換器AD7713及其應(yīng)用
- 電壓/頻率和頻率/電壓轉(zhuǎn)換器VF320
- 12位并行模/數(shù)轉(zhuǎn)換芯片AD1674及其應(yīng)用
- XILINX新推出的SPARTAN-3E系列
- 廉價(jià)隔離型高精度D/A轉(zhuǎn)換器
- Straix器件在DVB-T調(diào)制器中的應(yīng)用
- 八通道24位微功耗無(wú)延時(shí)△-∑模數(shù)轉(zhuǎn)換LTC
- 一種基于AT89C1051/2051的低成本
- 高性能∑-Δ ADC的原理及應(yīng)用
- 高速A/D轉(zhuǎn)換器TLC5540及其應(yīng)用
推薦技術(shù)資料
- 電動(dòng)吸錫烙鐵
- 用12V/2A的電源為電磁閥和泵供電,F(xiàn)QPF9N50... [詳細(xì)]
- AMOLED顯示驅(qū)動(dòng)芯片關(guān)鍵技
- CMOS圖像傳感器技術(shù)參數(shù)設(shè)計(jì)
- GB300 超級(jí)芯片應(yīng)用需求分
- 4NP 工藝NVIDIA Bl
- GB300 芯片、NVL72
- 首個(gè)最新高端芯片人工智能服務(wù)器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究