純工程師社群
直方圖線性拉伸相對(duì)于直方圖均衡化來(lái)說(shuō)就更好理解一些了,即用線性變化將灰度直方圖較窄的部分拉伸至整個(gè)區(qū)間,增強(qiáng)整幅圖像的對(duì)比度。
線性拉伸的效果如下圖所示,可以看出圖像對(duì)比度有所改善,保留了直方圖基本的輪廓,同時(shí)將直方圖范圍拉伸至0~255。
算法也比較容易理解,f(x,y)為輸入圖像,得到輸出圖像g(x,y)
其中A和B可以分別定義為圖像的最小灰度值與最大灰度值,即
但是實(shí)際應(yīng)用中并不會(huì)直接采用上述的A和B,這是由于圖像中可能存在噪聲的原因。想象如果圖像中存在幾個(gè)純白點(diǎn)(255)和純黑點(diǎn)(0),那么拉伸后的效果就無(wú)法達(dá)到預(yù)期。
因此我們?nèi)藶榈脑O(shè)定兩個(gè)閾值Thr_Min和Thr_Max,拉伸系數(shù)A,B定義如下:
其中∑H(k)為灰度直方圖累計(jì)和。下圖更直觀的表示了A和B的取值,Thr_ Min和Thr_Max是藍(lán)色部分的面積。
圖 2 A,B系數(shù)的定義
系統(tǒng)框架
圖 3 直方圖線性拉伸系統(tǒng)框架
上圖可以看出,前半部分的直方圖統(tǒng)計(jì)電路和上篇均衡化完全一樣,只是對(duì)后半部分的電路做了些修改。計(jì)算直方圖線性拉伸后的像素值的步驟如下:
1. 統(tǒng)計(jì)第一幀圖像的灰度直方圖
2. 計(jì)算直方圖累計(jì)和
3. 由閾值Thr_Min和Thr_Max算出拉伸系數(shù)A,B
4. 第二幀圖像灰度值帶入公式計(jì)算后輸出
和直方圖均衡化一樣,這里我們不考慮幀緩存的問(wèn)題,也就是前一幀的A,B作為當(dāng)前幀A,B來(lái)使用。
代碼分析
A,B系數(shù)的計(jì)算
hist_cnt為計(jì)算出的累計(jì)和(與直方圖均衡化中的求法一樣),當(dāng)累計(jì)和大于閾值的時(shí)候,記錄下此時(shí)累計(jì)和對(duì)應(yīng)的地址out_pixel[8:1](即灰度值),作為我們的拉伸系數(shù)A,B,同時(shí)設(shè)置取得系數(shù)標(biāo)志get_max或get_min為1。最后要在第二幀累計(jì)和到來(lái)時(shí),清零A,B及get標(biāo)志。
2. B-A的計(jì)算
取得系數(shù)B后(get_max=1),即可計(jì)算出B-A 。
3. f(x,y)-A (第一級(jí)流水)
當(dāng)f(x,y)小于系數(shù)A時(shí),直接令f(x,y)-A=0;當(dāng)f(x,y)大于系數(shù)B時(shí),直接令f(x,y)-A=B-A。
4. [f(x,y)-A ]*255 (第二級(jí)流水)
5. [f(x,y)-A ]*255/(B-A) (第三級(jí)流水)
實(shí)驗(yàn)結(jié)果
有沒(méi)有覺(jué)得這兩幅圖并沒(méi)有什么差別,小編也納悶了很久。之前有提到過(guò)噪聲可能對(duì)直方圖線性拉伸的影響。
可以看出直方圖線性拉伸需要人為的調(diào)整閾值的大小,才能達(dá)到理想效果。而直方圖均衡化則不需要。
編輯:jq
-
電路
+關(guān)注
關(guān)注
172文章
5901瀏覽量
172133 -
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68521 -
直方圖
+關(guān)注
關(guān)注
0文章
20瀏覽量
7883
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論