传统图像处理——图像增强ALTM(亮度增强)

共 1593字,需浏览 4分钟

 ·

2022-05-20 16:08

En点击下方AI算法与图像处理”,一起进步!

重磅干货,第一时间送达

来源:https://zhuanlan.zhihu.com/p/502972948(已授权)
编辑:AI算法与图像处理

《Adaptive Local Tone Mapping Based on Retinex for High Dynamic Range Images》该文章结合传统的Retinex技术提出了全局自适应和局部自适应的HDR实现过程,对HDR image 进行色调映射。而文中的全局自适应方法对于低照度图像具有很好的照度提升效果。

全局自适应原理:

Python代码

import numpy as np
def simple_balance(img, s1, s2): # 线性增强,s1和s2为低高分段阈值百分比 h, w = img.shape[:2] res = img.copy() one_dim_array = res.flatten() # 转化为一维数组 sort_array = sorted(one_dim_array) # 对一维数组按升序排序 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]
# 实施简单白平衡算法 if (maxvalue <= minvalue): for i in range(h): for j in range(w): res[i, j] = maxvalue else: scale = 255.0 / (maxvalue - minvalue) for m in range(h): for n in range(w): if img[m, n] < minvalue: res[m, n] = 0 elif img[m, n] > maxvalue: res[m, n] = 255 else: res[m, n] = scale * (img[m, n] - minvalue) # 映射中间段的图像像素
return res
def ALTM(img): h, w = img.shape[:2] res = np.float32(img) # res = np.array(img, dtype=np.float32) # 转换为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 # 不使用分段线性增强 # res = simple_balance(Lg, 2, 3) # 使用线性增强,该算法比较耗时 dst = np.uint8(res) # dst = cv2.convertScaleAbs(res) return dst

效果展示


效果1

原图

ALTM增强

ALTM 使用线性增强

效果2

原图

ALTM增强

ALTM 使用线性增强

效果3


原图

ALTM增强

ALTM 使用线性增强


推荐阅读

科研人必备新神器,ReadPaper!爱了真好用!

CVPR2021 最具创造力的那些工作成果!或许这就是计算机视觉的魅力!

英伟达又一个GAN!PoE-GAN,AI绘图细节拉满,看完直接沸腾了!

如果文章对你有帮助,记得“在看+点赞+分享”!

浏览 97
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报