在這一篇里面介紹一下CLAHE算法的第二步對比度限制。
這個過程很簡單,分為下面幾個步驟。
計算出來限制的閾值
將統(tǒng)計好的直方圖數(shù)據(jù)限制在0到閾值范圍內(nèi)。也就是將大于閾值的直方圖數(shù)據(jù)減去閾值,并將差值累計起來。
將累計的差值平均分給每個灰度。
來看一下參考的Python代碼:
def cl_hist(img, clip):
h, w = img.shape
n = np.zeros(256, np.uint32)
for i in range(h):
for j in range(w):
n[img[i][j]] = n[img[i][j]] + 1
t = 0
for i in range(256):
if n[i] > clip:
t += n[i] - clip
n[i] = clip
t = t / 256
n = n + t
pk = n
sk = np.zeros(256, np.float32)
sk[0] = pk[0]
for i in range(1, 256):
sk[i] = sk[i - 1] + pk[i]
sk = sk / (h * w)
sk = sk * 255
sk = np.around(sk)
return sk
這個和之前的直方圖統(tǒng)計就多了中間的步驟,也就是下面這一段代碼:
t = 0
for i in range(256):
if n[i] > clip:
t += n[i] - clip
n[i] = clip
t = t / 256
n = n + t
就是遍歷256個灰度的統(tǒng)計值,將大于閾值的灰度統(tǒng)計值就設(shè)置為閾值,并將兩者的差值進行累加。最后將總的差值除以256,將最后的結(jié)果累加到每一個灰度的統(tǒng)計值上面。
來看一下最后的效果:

可以看到相對于沒有進行限制對比度的效果要好很多。
下面這幅圖是沒有限制對比度閾值的結(jié)果:

那么這個閾值要怎么計算呢:
一般來說我們采取這樣的方法來計算閾值,也就是通過圖像的大小,分塊的多少,和clip_limit 的值來計算出來。一般圖像大小,和分塊多少是不變的,也就是說可以通過clip_limit的值來調(diào)整效果。
h, w = img.shape block = 8 clip_limit = 2 clip = clip_limit * (h * w / (block * block) / 256) clip = round(clip)
最后來看一下Verilog的實現(xiàn),可以通過下面的代碼來實現(xiàn)對比度限制的功能。

審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1660文章
22416瀏覽量
636609 -
圖像處理
+關(guān)注
關(guān)注
29文章
1342瀏覽量
59567 -
python
+關(guān)注
關(guān)注
57文章
4877瀏覽量
90079
原文標題:FPGA圖像處理--CLAHE算法(三)
文章出處:【微信號:FPGA開源工坊,微信公眾號:FPGA開源工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
張工教你FPGA圖像處理技術(shù)
FPGA的圖像處理技術(shù),你知道多少?
FPGA的圖像處理技術(shù),你知道多少?
FPGA的圖像處理技術(shù),你知道多少?
怎么設(shè)計圖像自適應(yīng)分段線性拉伸算法的FPGA?
【干貨】基于FPGA的圖像處理(圖像增強)之直方圖均衡
視覺對比度分辨率補償?shù)牡讓?b class='flag-5'>圖像挖掘
基于對比度閾值的改進SIFT算法
TI推出全新圖像處理算法套件,旨在提升圖像亮度和對比度
如何使用非下采樣Shearlet變換與模糊對比度提高圖像質(zhì)量
關(guān)于指數(shù)對比度增強FPGA實現(xiàn)
投影機中對比度與動態(tài)對比度的區(qū)別及運用
FPGA圖像處理-CLAHE算法的第二步對比度限制(三)
評論