1.對比度增強原理
對比度增強是個廣泛的話題,前文中關于直方圖均衡的方法,其實就是一種對比度增強。而對比度增強,就是提高明暗之間的差異,從而達到提高圖像對比度、改善主觀視覺效果的目的。
采用直方圖均衡的方法,其實是對圖像灰度的拉伸,但本文將介紹的,是基于曲線灰度映射變換。典型的比如指數變換,對數變換,Gamma變換等等。
為了直觀的說明對比度增強的效果,我們先生成一張灰度對稱分布圖,以指數對比度增強為例,效果如下所示。可見對比度增強后的圖,黑色部分更黑了,白色部分更白了,對比更明顯了。
然后我們進一步分析增強前后的直方圖,可見增強后圖像的直方圖,暗的像素值更暗的,亮的像素值也更亮了,敏感之間的對比更大,那么對于對比度較低的圖像,增強后確實可以提高可視度。
相關代碼如下:
指數對比度增強有很多方法,但萬變不離其宗,即以一定閾值為中心,提高閾值以上的亮度,并降低閾值以下的亮度。典型的以對數對比度增強函數為例,公式如下所示:
針對閾值=127,E取2/4/6的曲線,使用Matlab繪制,如下所示:
如上圖所示,分別是E=2,E=4,E=6的指數對比度增強曲線,橫坐標為原始像素,縱坐標為映射后的像素。從曲線可見,E的值越大,對暗區的壓縮及亮區的提升程度就越大,那么明暗之間的對比就越明顯,即E可以表示為圖像對比度增強的程度。圖中三條曲線交匯在閾值127處,那么也可以采用不同程度增強曲線的融合模式,比如閾值以下采用E=2,閾值以上采用原值或E=6方式,區別對待圖像明暗區域的對比度。
2.指數對比度增強Matlab實現
這里以閾值=127,E=7為例,我們看一下對比度增強后的圖像效果。其中matlab代碼如下:
對比度增強后的圖如下所示,可見原圖對比度較低,整體給人灰蒙蒙的效果,而右圖則看起來更通透,明暗之間的對比度更加鮮明,整體視覺效果也更好了。
結合之前講過的直方圖均衡算法,與現在指數對比度增強效果以及各自的直方圖進行對比,如下圖所示:
我們從以下幾個方面去對比效果:
1)對比度:
由灰度圖可見,明暗對比不明顯。通過對比度增強,壓縮了暗區并提高了亮區,明暗對比度提高了;通過直方圖拉伸后,將圖像灰度拉伸到0-255,自然明暗之間的對比度也提高了。不過對比效果,直方圖對比度更高,同時也引入了局部過曝的問題。
2)直方圖
由直方圖可見,原圖像素集中在100左右,對比度增強后,壓縮/拉伸到25-150,而直方圖均衡后拉伸到了0-255,因此從當前測試圖來看,直方圖拉伸后的動態范圍更寬,不過這也因圖而異,比如原圖就比較亮的圖,對比測試效果如下,對比度增強后效果還差強人意,而直方圖拉伸后圖像過暗,因為本身偏亮,拉伸后則整體亮度降低了。
3.指數對比度增強FPGA實現
直方圖拉伸,本質上是對像素概率的統計,然后進行擴展拉伸。
而對比度增強,無論是指數函數,還是各類曲線映射,其本質上就是一種像素映射操作。由于指數函數、對數函數等,實時的計算比較耗時。并且當選定參數后,其結果是固定的,因此可以根據參數提前計算好函數的映射結果,再以數組的方式進行索引,得到計算后的結果。這種方法,在學術領域通俗的講就是Mapping操作,可在X-Y坐標上找到各自的映射點。
以E=7,THRESHOLD=127為例,指數對比度產生的結果如下所示(reshape是為了方便在Command Windows中顯示,實際上是一個一維數組),在matlab中可以直接根據如下結果進行索引映射。
在FPGA中進行Mapping操作時,可以將數組存放在RAM或者以RTL源碼的方式進行映射。FPGA的RAM采用的是mif或hex的格式進行存儲,并且在生成RAM的時候需要進行文件的指定。由于256Byte的存儲不大,同時為了提高移植的靈活度,這里我推薦使用RTL源代碼的方式,并且使用matlab直接生成verilog文件。以指數對比度增強為例,生成文件的源碼如下所示:
在當前文件夾下將會生成Curve_Contrast_Array.v文件,即為Matlab生成的曲線對比度映射verilog文件,由于最終實現只是一個簡單的地址譯碼,電路相對比較簡單,因此直接采用組合邏輯實現,生成的代碼如下所示:
至此,我們已經生成好了Mapping的數組,那么在FPGA中只需要簡單的映射就可以完成指定強度的對比度增強算法,即只需要例化該模塊,進行原始數據的映射,輸出增強后的數據即可,相關代碼如下所示:
4.RTL仿真結果及實測
原文標題:圖像指數對比度增強之Matlab&FPGA實現
文章出處:【微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605996 -
代碼
+關注
關注
30文章
4825瀏覽量
69043 -
指數函數
+關注
關注
0文章
3瀏覽量
5816
原文標題:圖像指數對比度增強之Matlab&FPGA實現
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論