Gray World白平衡算法python实现

import numpy as np
import cv2

image = cv2.imread('1.jpeg')
b,g,r = cv2.split(image)
b_avg = cv2.mean(b)[0]
g_avg = cv2.mean(g)[0]
r_avg = cv2.mean(r)[0]


avg = (b_avg+g_avg+r_avg)/3
b_k = avg/b_avg
g_k = avg/g_avg
r_k = avg/r_avg

b = (b*b_k).clip(0,255)
g = (g*g_k).clip(0,255)
r = (r*r_k).clip(0,255)

image = cv2.merge([b,g,r]).astype(np.uint8)
cv2.imshow('gray_world',image)
cv2.waitKey(0)
原图,来自网络

 

gray world算法校正结果

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是三种常见的白平衡算法Python代码实现: 1. 白补丁算法 ```python import cv2 # 读取图像 img = cv2.imread('image.jpg') # 获取白色补丁区域 patch = img[10:50, 10:50] # 计算白平衡系数 b, g, r = cv2.split(patch) avg_b = cv2.mean(b)[0] avg_g = cv2.mean(g)[0] avg_r = cv2.mean(r)[0] k = (avg_b + avg_g + avg_r) / 3 # 进行白平衡处理 img_wb = cv2.addWeighted(img, 1, cv2.merge([b/k, g/k, r/k]), 0, 0) # 显示结果 cv2.imshow('Original Image', img) cv2.imshow('White Balanced Image', img_wb) cv2.waitKey(0) cv2.destroyAllWindows() ``` 2. 灰色世界算法 ```python import cv2 import numpy as np # 读取图像 img = cv2.imread('image.jpg') # 计算白平衡系数 avg_bgr = np.mean(img, axis=(0, 1)) avg_gray = np.mean(avg_bgr) k = avg_gray / avg_bgr # 进行白平衡处理 img_wb = cv2.convertScaleAbs(img, alpha=k[0], beta=k[1:]) # 显示结果 cv2.imshow('Original Image', img) cv2.imshow('White Balanced Image', img_wb) cv2.waitKey(0) cv2.destroyAllWindows() ``` 3. 真值算法 ```python import cv2 import numpy as np # 读取图像 img = cv2.imread('image.jpg') # 将图像转换为 Lab 颜色空间 img_lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) # 计算白平衡系数 avg_l = np.mean(img_lab[:, :, 0]) k = avg_l / img_lab[:, :, 0] # 进行白平衡处理 img_wb = cv2.merge([cv2.convertScaleAbs(channel, alpha=k) for channel in cv2.split(img_lab)]) # 将图像转换回 BGR 颜色空间 img_wb = cv2.cvtColor(img_wb, cv2.COLOR_LAB2BGR) # 显示结果 cv2.imshow('Original Image', img) cv2.imshow('White Balanced Image', img_wb) cv2.waitKey(0) cv2.destroyAllWindows() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值