2

当曝光设置和白平衡不断变化时,有没有人有过视频的色彩匹配和逐帧跟踪的经验?

我正在开发使用 iPad 2 前置摄像头捕捉视频的颜色跟踪应用程序。我需要在每一帧上检测彩色对象(我们之前采用的预定义颜色)。我的问题是相机软件喜欢调整 WB 和 Exposure 每一帧。因此,如果我们在 N 帧记住一种颜色,那么在 N+10 帧上,WB 会有所不同,这会导致颜色的巨大差异。

为了计算颜色距离,我使用LAB颜色空间和CIE76公式: 在此处输入图像描述

是的,我知道 CIEDE2000 距离函数要好得多,但我正在使用 ARM 处理器,恐怕即使对于我已经使用的 ARM NEON 手动优化的汇编代码,这个公式也会太重。

CIE76 总体上提供了良好的效果,但在光线不佳或非常明亮的场景中,相机要么产生过多的噪点,要么使图像过度饱和,从而使颜色与原始颜色相差太远。除了使用颜色距离的简单阈值化之外,我还根据校准颜色的标准偏差实现了 LAB 像素值的每个分量阈值化。这也提高了检测的正确性,但是,这并不能解决主要问题。

相机本身提供 RGB 颜色空间的帧,但 API 不提供获取当前帧的白点或色温的函数。目前我假设 D50 光源执行 RGB -> LAB 转换。

这是我的主要疑问。我的想法是计算给定 RGB 图像的白点,然后将其转换为 XYZ 颜色空间,然后使用计算的白点将 XYZ 转换为 LAB。可能吗?

来自维基百科:白点

将颜色表示为 LMS 颜色空间中的三色坐标,可以根据 von Kries 变换简单地通过将 LMS 坐标按两个白点处三色值的最大值之比缩放 LMS 坐标来“转换”对象的颜色。这提供了一个简单但粗略的估计。

http://en.wikipedia.org/wiki/White_point

这会奏效吗?或者有更好的方法来计算白点(甚至是粗略的)?顺便说一句,我是Retinex算法出来的,它在阴影中表现出很好的色彩增强,有人用过吗?它的优点和缺点是什么?

4

0 回答 0