直方圖線性拉伸相對于直方圖均衡化來說就更好理解一些了,即用線性變化將灰度直方圖較窄的部分拉伸至整個區(qū)間,增強整幅圖像的對比度。
線性拉伸的效果如下圖所示,可以看出圖像對比度有所改善,保留了直方圖基本的輪廓,同時將直方圖范圍拉伸至0~255。
圖 1 直方圖拉伸效果圖
算法也比較容易理解,f(x,y)為輸入圖像,得到輸出圖像g(x,y)
其中A和B可以分別定義為圖像的最小灰度值與最大灰度值,即
但是實際應(yīng)用中并不會直接采用上述的A和B,這是由于圖像中可能存在噪聲的原因。想象如果圖像中存在幾個純白點(255)和純黑點(0),那么拉伸后的效果就無法達(dá)到預(yù)期。
因此我們?nèi)藶榈脑O(shè)定兩個閾值Thr_Min和Thr_Max,拉伸系數(shù)A,B定義如下:
其中∑H(k)為灰度直方圖累計和。下圖更直觀的表示了A和B的取值,Thr_ Min和Thr_Max是藍(lán)色部分的面積。
圖 2 A,B系數(shù)的定義
系統(tǒng)框架
圖 3 直方圖線性拉伸系統(tǒng)框架
上圖可以看出,前半部分的直方圖統(tǒng)計電路和上篇均衡化完全一樣,只是對后半部分的電路做了些修改。計算直方圖線性拉伸后的像素值的步驟如下:
1. 統(tǒng)計第一幀圖像的灰度直方圖
2. 計算直方圖累計和
3. 由閾值Thr_Min和Thr_Max算出拉伸系數(shù)A,B
4. 第二幀圖像灰度值帶入公式計算后輸出
和直方圖均衡化一樣,這里我們不考慮幀緩存的問題,也就是前一幀的A,B作為當(dāng)前幀A,B來使用。
代碼分析
A,B系數(shù)的計算
hist_cnt為計算出的累計和(與直方圖均衡化中的求法一樣),當(dāng)累計和大于閾值的時候,記錄下此時累計和對應(yīng)的地址out_pixel[8:1](即灰度值),作為我們的拉伸系數(shù)A,B,同時設(shè)置取得系數(shù)標(biāo)志get_max或get_min為1。最后要在第二幀累計和到來時,清零A,B及get標(biāo)志。
2. B-A的計算
取得系數(shù)B后(get_max=1),即可計算出B-A 。
3. f(x,y)-A (第一級流水)
當(dāng)f(x,y)小于系數(shù)A時,直接令f(x,y)-A=0;當(dāng)f(x,y)大于系數(shù)B時,直接令f(x,y)-A=B-A。
4. [f(x,y)-A ]*255 (第二級流水)
5. [f(x,y)-A ]*255/(B-A) (第三級流水)
實驗結(jié)果
圖 4 原圖 圖 5 閾值為100時處理后的圖像
有沒有覺得這兩幅圖并沒有什么差別,之前有提到過噪聲可能對直方圖線性拉伸的影響,下面是將閾值Thr_Min調(diào)高至1000后得到的結(jié)果。
圖 6 閾值為1000時處理后的圖像
可以看出直方圖線性拉伸需要人為的調(diào)整閾值的大小,才能達(dá)到理想效果。而直方圖均衡化則不需要。
文章出處:【微信公眾號:FPGA之家】
責(zé)任編輯:gt
-
FPGA
+關(guān)注
關(guān)注
1645文章
22041瀏覽量
618227 -
噪聲
+關(guān)注
關(guān)注
13文章
1140瀏覽量
48131
原文標(biāo)題:基于FPGA灰度直方圖線性拉伸
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
TaskPool和Worker的對比分析
鎧裝光纜和一般光纜區(qū)別對比分析

國內(nèi)外電機(jī)結(jié)構(gòu) 工藝對比分析
主流汽車電子SoC芯片對比分析
浮思特 | 新興傳感器技術(shù):TMR與分流解決方案的對比分析

半導(dǎo)體激光器和光纖激光器的對比分析
基于FPGA實現(xiàn)圖像直方圖設(shè)計

Wi-Fi與藍(lán)牙的波特率對比分析
RoCE與IB對比分析(二):功能應(yīng)用篇

光伏電站運維管理系統(tǒng)與傳統(tǒng)運維模式對比分析

常用音頻線接口對比分析
Achronix Speedster7t FPGA與GPU解決方案的比較

評論