系列文章目录
基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建
基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定
基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理
基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理
基于PyQt5的桌面图像调试仿真平台开发(5)亮度处理
基于PyQt5的桌面图像调试仿真平台开发(6)去马赛克
基于PyQt5的桌面图像调试仿真平台开发(7)伽马矫正
基于PyQt5的桌面图像调试仿真平台开发(8)锐化
基于PyQt5的桌面图像调试仿真平台开发(9)去噪
基于PyQt5的桌面图像调试仿真平台开发(10)色彩矩阵
基于PyQt5的桌面图像调试仿真平台开发(11)清晰度测试
基于PyQt5的桌面图像调试仿真平台开发(12)图像灰度显示
基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示
基于PyQt5的桌面图像调试仿真平台开发(14)色彩增强
基于PyQt5的桌面图像调试仿真平台开发(15)图像融合
工程代码:https://gitee.com/xiaoshixiao00/py-ispp
前言
前面学习了黑电平处理,一般用于矫正暗电流。现在学习白平衡处理,用来矫正图像传感器对不同色彩敏感度和人眼的差别。
一、白平衡是什么?
白平衡,字面上的理解是白色的平衡。白平衡是描述显示器中红、绿、蓝三基色混合生成后白色精确度的一项指标。白平衡是电视摄像领域一个非常重要的概念,通过它可以解决色彩还原和色调处理的一系列问题。白平衡是随着电子影像再现色彩真实而产生的,在专业摄像领域白平衡应用的较早。家用电子产品(家用摄像机、数码照相机)中也广泛地使用。
二、开发步骤和演示
1.编写手动白平衡
①,开发UI和绑定控件
此步骤和黑电平开发基本一致,此处省略
②,开发手动白平衡算法
此算法的原理是创建一个大小为256的整数数组,数组里面保存了灰度映射的数据,映射方法直接通过opencv的LUT函数进行,灰度映射的权值也就是白平衡的红色和蓝色的增益值。
def proc_image_awb_gain(image_rgb,rgain,bgain):
print("proc_image_awb_gain,",rgain,bgain)
r_ary,g_ary,b_ary=cv2.split(image_rgb)
#生成映射表
rgain_ary = np.array([i * rgain / 100 for i in range(0, 256)]).clip(0, 255).astype('uint8')
bgain_ary = np.array([i * bgain / 100 for i in range(0, 256)]).clip(0, 255).astype('uint8')
print("rgain_ary:", rgain_ary)
print("rbgain_ary:",bgain_ary)
#通过映射表进行映射
r_ary = cv2.LUT(r_ary, rgain_ary)
#print("r_ary:", r_ary)
b_ary = cv2.LUT(b_ary, bgain_ary)
#print("b_ary:", b_ary)
#print("g_ary:", g_ary)
result=cv2.merge([r_ary,g_ary,b_ary])
#print("result:", result)
return result
③,演示
打开图片
点击白平衡处理,设置rgain和bgain,实际的增益值是rgain/100,bgain/100,最后可以看到调整后的效果
总结
这里我们使用了简单的映射表的形式实现了手动白平衡的算法,实际情况大多使用自动白平衡算法,不过本工具仅用来调试所以暂时不实现。