python实现图像白平衡
时间: 2023-07-11 18:13:10 浏览: 76
图像白平衡是一种用于调整图像整体色温的技术,使得图像中的白色区域看起来真正的白色。Python实现图像白平衡一般有以下步骤:
1. 将图像转换为LAB色彩空间,并将L通道标准化到[0,1]范围内。
2. 计算L通道的平均值。
3. 将L通道的平均值除以每个像素的L通道值,得到一个增益系数。
4. 将A,B通道乘以增益系数。
5. 将LAB色彩空间转换回RGB色彩空间。
以下是代码示例:
```python
import cv2
import numpy as np
def white_balance(img):
# 将图像转换为LAB色彩空间
lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
# 将L通道标准化到[0,1]范围内
L = lab[:,:,0]/255.0
# 计算L通道的平均值
avg_L = np.mean(L)
# 将L通道的平均值除以每个像素的L通道值,得到一个增益系数
gain = avg_L / L
# 将A,B通道乘以增益系数
AB = lab[:,:,1:].astype(np.float32)
AB[:,:,0] *= gain
AB[:,:,1] *= gain
# 将LAB色彩空间转换回RGB色彩空间
lab[:,:,1:] = AB
result = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)
result = np.clip(result, 0, 255).astype(np.uint8)
return result
```
其中,输入参数img是原始图像,返回值result是白平衡后的图像。