【问题标题】:White balance and colour converting白平衡和颜色转换
【发布时间】:2020-08-20 03:07:49
【问题描述】:

我是一名编码初学者,我找到了用于调整图像白平衡的代码。代码有效,颜色正在改变。 实际上,我拍摄的所有图像的白平衡都有问题,我想用一个简单的代码来调整它。我使用的代码似乎效果最好(我尝试了在互联网上找到的不同代码)。 问题是河流区域在改造后变成了红色。我不知道这是因为白平衡还是因为我的颜色转换错误。 谁能帮帮我。

这是我使用的代码

import cv2 as cv
# import numpy as np

#
img = cv.imread("C:\\Users\\die5k\\Desktop\\NeuerOrdner\\DJI_0207.jpg")
r, g, b = cv.split(img)
r_avg = cv.mean(r)[0]
g_avg = cv.mean(g)[0]
b_avg = cv.mean(b)[0]

 # Find the gain of each channel
k = (r_avg + g_avg + b_avg) / 3
kr = k / r_avg
kg = k / g_avg
kb = k / b_avg

r = cv.addWeighted(src1=r, alpha=kr, src2=0, beta=0, gamma=0)
g = cv.addWeighted(src1=g, alpha=kg, src2=0, beta=0, gamma=0)
b = cv.addWeighted(src1=b, alpha=kb, src2=0, beta=0, gamma=0)

balance_img = cv.merge([b, g, r])
balance_img = cv.cvtColor(balance_img, cv.COLOR_BGR2RGB)
cv.imwrite('result0207.jpg', balance_img)

这是我的输入图像 这是我的结果

【问题讨论】:

  • 被绿叶的数量所影响?
  • 这是您找到的最佳工作白平衡?其他的一定很糟糕!我不明白为什么这个乘法应该纠正白平衡,这对我来说似乎不对。但是你的颜色变化的原因很可能是你得到了超过 255 的值,这会溢出 8 位存储,因此最终是非常小的值。
  • @CrisLuengo 你有任何更好/首选的白平衡算法的链接吗?
  • @Mark:当然,唯一的故障安全方法是测量照度。有许多方法可以从图像内容中估计光照,但没有一种方法不会对某些类别的输入产生不好的结果。 This is a very simple method that works reasonably well (publication) -- 其他一切都要复杂得多。
  • @Tapsi:该方法所做的是独立拉伸每个通道的直方图。它假定在​​每个通道中,您都希望拥有零曝光像素和最大曝光像素。如果图片中有白色,这显然是正确的,但如果没有白色,这通常仍然成立。但当然,在某些情况下,这是不正确的。如果你的图片只有树木,那里面只有绿色,任何形式的自动白平衡都会使绿色变成白色或灰色。

标签: python image-processing


【解决方案1】:

OpenCV 使用 BGR 排序。改变这个:

r, g, b = cv.split(img)

到这里:

b, g, r = cv.split(img)

然后删除这个:

balance_img = cv.cvtColor(balance_img, cv.COLOR_BGR2RGB)

因为OpenCV在保存文件时知道要转换为RGB。

【讨论】:

  • 但这并不能解决问题,不是吗?
  • @CrisLuengo 嗨,Cris,我没有在电脑前查看我何时回答。我刚刚看到没有人在 4 小时内回答并决定指出一些我可以看到的问题,这些问题可能会帮助 OP 向前发展。等我可以测试时,我会检查一下。
  • @MarkSetchell 我尝试了你的建议,但它仍然会导致相同的图像。
  • @CrisLuengo 现在有了电脑,我同意该方法仍然无法处理此图像。我还尝试转换为浮点数并应用校正并将结果裁剪到范围,但这无济于事。我认为该方法本身对于这个主题是失败的。我还尝试了这里建议的更正stackoverflow.com/a/46391574/2836621,虽然效果更好,但结果仍然不正确。
  • 我认为 OP 的方法和您链接的方法尝试将平均颜色设置为灰色?我看不出这通常有什么用,但它肯定不适用于 OP 的大部分是绿色的图片。自动白平衡好难!!! :)
猜你喜欢
  • 2019-09-12
  • 2016-05-28
  • 2013-08-29
  • 1970-01-01
  • 2014-11-26
  • 2013-07-11
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多