基于FPGA的LED大屏幕控制系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)
3 反γ校正與灰度級(jí)調(diào)節(jié)
特定條件下創(chuàng)建的圖像在不同環(huán)境下工作時(shí),往往會(huì)出現(xiàn)圖像看起來顯得太亮或者太暗的現(xiàn)象,所以LED大屏幕顯示系統(tǒng)需要進(jìn)行靈活的反γ值調(diào)節(jié)。當(dāng)前反γ校正多采用基于FPGA內(nèi)部ROM的查找表技術(shù)[3]。式(1)為反γ校正公式,式中默認(rèn)輸入圖像灰度級(jí)為256,輸出灰度級(jí)為G,x為輸入灰度值,y為輸出灰度值,γ為校正系數(shù)。要在FPGA中實(shí)現(xiàn)指數(shù)運(yùn)算需要消耗大量邏輯單元,對(duì)于低成本要求來說是不現(xiàn)實(shí)的。本文提出了如圖3所示的基于FPGA片內(nèi)RAM、片外EEPROM和PC機(jī)軟件的反γ校正技術(shù)。
在FPGA中的具體實(shí)現(xiàn)為:首先使用Altera自帶的IP核,將3個(gè)數(shù)據(jù)寬度為16 bit、數(shù)據(jù)深度為256的雙端口RAM實(shí)例化作為查找表。系統(tǒng)起動(dòng)時(shí),初始化模塊首先從外部EEPROM中讀出256個(gè)配置數(shù)據(jù),初始化RAM查找表。初始化完成后,灰度變換模塊將24 bit RGB數(shù)據(jù)分離成3個(gè)8 bit數(shù)據(jù)作為RAM地址,讀出數(shù)據(jù)作為轉(zhuǎn)換后的灰度值。當(dāng)需要修改γ值時(shí),通過PC機(jī)軟件生成新的γ校正表,然后通過串口發(fā)送到發(fā)送卡,發(fā)送卡將數(shù)據(jù)發(fā)送至接收卡,在灰度變換模塊的控制下將數(shù)據(jù)寫入RAM。如果需要保存校正數(shù)據(jù),初始化模塊從RAM中讀出數(shù)據(jù)寫入EEPROM中。3個(gè)RAM中存放的是相同的校正數(shù)據(jù),所以初始化模塊可以同時(shí)對(duì)3個(gè)RAM進(jìn)行初始化,從RAM中讀出配置數(shù)據(jù)時(shí)也只需要其中一個(gè)RAM中的值。本方法結(jié)合PC機(jī)軟件可以實(shí)現(xiàn)1~5的γ值連續(xù)調(diào)節(jié)和1~16的灰度級(jí)連續(xù)調(diào)節(jié)。
4 對(duì)比度、亮度調(diào)節(jié)在FPGA中的實(shí)現(xiàn)
(1)對(duì)比度調(diào)節(jié)
增強(qiáng)對(duì)比度實(shí)際上是增強(qiáng)原圖各部分的反差,通過增加原圖里某兩個(gè)灰度值間的動(dòng)態(tài)范圍來實(shí)現(xiàn)[4]。這樣壓縮較亮和較暗區(qū)域的灰度級(jí),擴(kuò)展中間區(qū)域的灰度級(jí),從而使細(xì)節(jié)部分更加清晰。假設(shè)輸入灰度級(jí)為f(x,y),輸出灰度級(jí)為g(x,y),則對(duì)比度增強(qiáng)的計(jì)算如式(6)所示。由式(6)可以看出,通過這種方法調(diào)節(jié)對(duì)比度后會(huì)壓縮圖像的灰度級(jí),使變換后的圖像丟失亮區(qū)和暗區(qū)的細(xì)節(jié),所以此種方法不適合大范圍調(diào)節(jié)。根據(jù)人眼對(duì)高亮度區(qū)域的灰度級(jí)變化不敏感,而對(duì)低灰度級(jí)區(qū)域灰度級(jí)變化十分敏感的視覺特點(diǎn),本系統(tǒng)選擇不壓縮低灰度級(jí)區(qū)域。式中n為調(diào)節(jié)系數(shù),最終當(dāng)0n100時(shí)比較合適。
評(píng)論