使用EMGU相机库,图像基于背景颜色显得“褪色”

时间:2015-09-30 14:24:01

标签: vb.net image image-processing emgucv

我正在使用EMGU CV .NET库。我注意到,当我拍摄任何有颜色的照片时,如果背景暗(ish),颜色通常会“褪色”。我发现的一般经验法则是,背景越暗,颜色就越褪色。

以下是我使用EMGU从相机中检索图像的方法。

Dim imgFeed As Bitmap = mCamera.RetrieveBgrFrame.ToBitmap

在下面的图像中(裁剪出两者的背景),左图是干白水泥,右图是湿白水泥。您可以看到“褪色”的颜色,尤其是第一个标签,即明亮的橙色胶带。

Colors on dry white cement Colors on wet white cement

这是另一张照片,拍摄于阳光下的黑色路面上,实际上比白水泥暗得多,但在上面的湿水泥图像中看起来与背景颜色相似。

Gold on pavement

EMGU库中是否存在某种自动平衡?如果是这样,我可以阻止这种情况发生吗?我需要比背景更清楚地看到颜色。我已经阅读了_EqualizeHist()并且我实现了它,但这并没有帮助我更清楚地看到颜色;增加图像的对比度并没有多大帮助,因为颜色已经接近白色了。

更新

在阅读Spark的答案后,我找到了SetCaptureProperty()方法。我看到您可以通过将值设置为0来禁用自动曝光属性,如下所示。

mCamera.SetCaptureProperty(CvEnum.CAP_PROP.CV_CAP_PROP_AUTO_EXPOSURE, 0.0)

可悲的是,使用我正在使用的特定相机,看起来驱动程序不支持更改此属性。

1 个答案:

答案 0 :(得分:0)

这与算法无关。这是在相机芯片内运行的自动曝光(AEC)算法的行为。尝试禁用相机的自动曝光控制并降低手动曝光量。

小理论:大多数AEC算法都采用全帧加权方法。因此,在您为白色洗涤的情况显示的样本中,黑色背景占据了图像的更多部分,这使得AEC算法假设图像太暗并因此在内部增加曝光水平。