【问题标题】:Unify Brightness of 2 images统一 2 幅图像的亮度
【发布时间】:2020-06-18 16:11:34
【问题描述】:

我想要一种方法或步骤来统一 2 个图像的亮度,或者换句话说,使它们的亮度相同但不分配它们。我知道如何使用 PIL 获取图像的亮度,代码如下:

from PIL import Image

imag = Image.open("test.png")
# Convert the image te RGB if it is a .gif for example
imag = imag.convert('RGB')
# coordinates of the pixel
X, Y = 0, 0
# Get RGB
pixelRGB = imag.getpixel((X, Y))
R, G, B = pixelRGB
brightness = sum([R, G, B]) / 3  ##0 is dark (black) and 255 is bright (white)
print(brightness)

有没有人知道如何制作 2 张具有相同亮度的图像。谢谢

【问题讨论】:

  • @fmw42 是的,我看到它并自己实现了它,但我对这段代码是改变亮度还是只与颜色有关感到困惑! Cz 在分析结果时,我的图像颜色完全变为不同的颜色(即绿色变为粉红色)。我希望我的结果只会更亮。
  • 两者兼得。它分别匹配图像的每个通道的两个图像的平均值和标准偏差(对应于亮度和对比度)。您可以通过将图像转换为 HSV 或 LAB 并在处理中仅使用 V 或 L 通道来强制它只进行亮度和对比度并且不改变颜色。然后转换回 RGB。
  • @fmw42 哦,好的,知道了!真是个好主意,谢谢你的帮助!!
  • @fmw42 如果需要,您可以添加您的答案,以便我接受它作为正确答案

标签: python opencv brightness


【解决方案1】:

您可以在 Python/OpenCV 中使用均值/标准差颜色传输技术,如 https://www.pyimagesearch.com/2014/06/30/super-fast-color-transfer-images/ 中所述。但是为了不修改颜色而只调整亮度/对比度,请将图像转换为 HSV。使用该参考文献中描述的方法仅处理 V 通道。然后结合新的 V 和旧的 S 和 H 通道并将其转换回 BRG。

【讨论】:

  • 我认为最好直接在RGB中调整亮度/对比度。参见例如stackoverflow.com/q/11396782/5987
  • @Mark Ransom。如果您按照我的参考资料逐个通道执行该通道,您将更改颜色。 OP 想保留颜色,只改变亮度/对比度。
  • 如果您将所有 3 个通道乘以相同的因子,您将不会改变颜色。
  • 是的,这是真的。但是你如何获得相同的因素。一种方法是将所有通道堆叠到一个图像中。另一种是从每个通道中获取平均统计数据。所以这肯定是一种方式。
猜你喜欢
  • 2012-12-03
  • 2011-06-20
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
相关资源
最近更新 更多