傳統(tǒng)圖像處理——圖像增強(qiáng)ALTM(亮度增強(qiáng))
En點(diǎn)擊下方“AI算法與圖像處理”,一起進(jìn)步!
重磅干貨,第一時(shí)間送達(dá)
《Adaptive Local Tone Mapping Based on Retinex for High Dynamic Range Images》該文章結(jié)合傳統(tǒng)的Retinex技術(shù)提出了全局自適應(yīng)和局部自適應(yīng)的HDR實(shí)現(xiàn)過程,對(duì)HDR image 進(jìn)行色調(diào)映射。而文中的全局自適應(yīng)方法對(duì)于低照度圖像具有很好的照度提升效果。
全局自適應(yīng)原理:


Python代碼
import numpy as npdef simple_balance(img, s1, s2): # 線性增強(qiáng),s1和s2為低高分段閾值百分比h, w = img.shape[:2]res = img.copy()one_dim_array = res.flatten() # 轉(zhuǎn)化為一維數(shù)組sort_array = sorted(one_dim_array) # 對(duì)一維數(shù)組按升序排序print(len(sort_array))per1 = int((h * w) * s1 / 100)print(per1/len(sort_array))minvalue = sort_array[per1]per2 = int((h * w) * s2 / 100)print(((h * w) - 1 - per2)/len(sort_array))maxvalue = sort_array[(h * w) - 1 - per2]# 實(shí)施簡(jiǎn)單白平衡算法if (maxvalue <= minvalue):for i in range(h):for j in range(w):res[i, j] = maxvalueelse:scale = 255.0 / (maxvalue - minvalue)for m in range(h):for n in range(w):if img[m, n] < minvalue:res[m, n] = 0elif img[m, n] > maxvalue:res[m, n] = 255else:res[m, n] = scale * (img[m, n] - minvalue) # 映射中間段的圖像像素return resdef ALTM(img):h, w = img.shape[:2]res = np.float32(img) # res = np.array(img, dtype=np.float32) # 轉(zhuǎn)換為32位圖像Lwmax = res.max()log_Lw = np.log(0.001 + res)Lw_sum = log_Lw.sum()Lwaver = np.exp(Lw_sum / (h * w))Lg = np.log(res / Lwaver + 1) / np.log(Lwmax / Lwaver + 1)res = Lg * 255.0 # 不使用分段線性增強(qiáng)# res = simple_balance(Lg, 2, 3) # 使用線性增強(qiáng),該算法比較耗時(shí)dst = np.uint8(res) # dst = cv2.convertScaleAbs(res)return dst
效果展示

原圖

ALTM增強(qiáng)

ALTM 使用線性增強(qiáng)
效果2

原圖
ALTM增強(qiáng)
效果3
原圖
ALTM增強(qiáng)
ALTM 使用線性增強(qiáng)
推薦閱讀
CVPR2021 最具創(chuàng)造力的那些工作成果!或許這就是計(jì)算機(jī)視覺的魅力!
英偉達(dá)又一個(gè)GAN!PoE-GAN,AI繪圖細(xì)節(jié)拉滿,看完直接沸騰了!
如果文章對(duì)你有幫助,記得“在看+點(diǎn)贊+分享”!
評(píng)論
圖片
表情





