白平衡算法python
时间: 2024-12-31 20:29:24 浏览: 17
### 白平衡算法 Python 实现
白平衡是一种常见的图像处理技术,旨在校正由于光源颜色温度不同而导致的颜色偏差。下面是一个简单的基于灰世界假设的白平衡算法实现。
#### 基于灰世界假设的白平衡算法
该方法认为在自然场景下,各通道平均值趋于相同。通过调整RGB三个通道的比例来达到白平衡效果。
```python
import numpy as np
from PIL import Image
def gray_world_balance(image_path):
img = Image.open(image_path).convert('RGB')
img_np = np.array(img, dtype=np.float32)
avg_r = np.mean(img_np[:, :, 0])
avg_g = np.mean(img_np[:, :, 1])
avg_b = np.mean(img_np[:, :, 2])
# 计算增益因子使得每个通道均值相等
gain_r = avg_g / avg_r
gain_b = avg_g / avg_b
balanced_img = img_np.copy()
# 应用增益因子到原始图片上
balanced_img[:, :, 0] *= gain_r
balanced_img[:, :, 2] *= gain_b
# 防止溢出并转换回8位整型
balanced_img = np.clip(balanced_img, 0, 255).astype(np.uint8)
result_image = Image.fromarray(balanced_img)
return result_image
if __name__ == "__main__":
image_path = "path_to_your_image.jpg"
corrected_image = gray_world_balance(image_path)
corrected_image.show() # 显示修正后的图像
```
此段代码实现了基本的灰世界白平衡算法,并利用PIL库加载和保存图像文件[^1]。
阅读全文