一尘不染

白平衡算法

algorithm

我正在做一些图像处理,并且我需要一种自动白平衡算法,该算法在CPU计算时间方面不太复杂。有什么建议吗?

编辑:如果它与效率有关,我将在Java中使用彩色图像作为整数数组来实现它。


阅读 351

收藏
2020-07-28

共1个答案

一尘不染

相对简单的算法是对屏幕上最亮和最暗像素的色相(以HSV或HSL表示)进行平均。紧要关头,仅使用最亮的像素。如果最亮和最暗之间的色调太不同,请选择亮像素。如果黑暗接近黑色,请选择明亮的像素。

为什么还要看暗像素?有时,黑暗不会接近黑色,并暗示周围的光线,雾气或雾霾。

如果您是大量的Photoshop用户,这对您来说很有意义。照片中的高光与对象的基础颜色无关(或弱相关)。除非图像曝光过度,以至于所有物体都淹没了CCD,否则它们是光色偏光的最佳代表。

然后调整所有像素的色相。

您将需要快速的RGB到HSV和HSV到RGB功能。(但是也许您可以在RGB中使用LUT或线性插值进行像素校正。)

您不希望按平均像素颜色或最受欢迎的颜色进行分类。那就是疯狂。

要快速找到最亮的颜色(和最暗的颜色),您可以使用RGB,但是您应该有绿色,红色和蓝色的乘数。在RGB监视器上,255绿色比255红色亮,而255红色比255蓝色亮。我曾经有过很好的乘数,可惜他们逃离了我的记忆。您可能可以用谷歌搜索它们。

这将在没有高光的图像中失败。例如,表面为哑光的墙。但是我不知道您能对此做什么。


此简单算法有许多改进。您可以平均多个明亮像素,对图像进行网格划分,并从每个像元中获取明亮像素和黑暗像素,等等。实施该算法后,您会发现一些明显的调整。

2020-07-28