我正在使用EMGU CV .NET库。我注意到,当我拍摄任何有颜色的照片时,如果背景暗(ish),颜色通常会“褪色”。我发现的一般经验法则是,背景越暗,颜色就越褪色。
以下是我使用EMGU从相机中检索图像的方法。
Dim imgFeed As Bitmap = mCamera.RetrieveBgrFrame.ToBitmap
在下面的图像中(裁剪出两者的背景),左图是干白水泥,右图是湿白水泥。您可以看到“褪色”的颜色,尤其是第一个标签,即明亮的橙色胶带。
这是另一张照片,拍摄于阳光下的黑色路面上,实际上比白水泥暗得多,但在上面的湿水泥图像中看起来与背景颜色相似。
EMGU库中是否存在某种自动平衡?如果是这样,我可以阻止这种情况发生吗?我需要比背景更清楚地看到颜色。我已经阅读了_EqualizeHist()
并且我实现了它,但这并没有帮助我更清楚地看到颜色;增加图像的对比度并没有多大帮助,因为颜色已经接近白色了。
在阅读Spark的答案后,我找到了SetCaptureProperty()
方法。我看到您可以通过将值设置为0来禁用自动曝光属性,如下所示。
mCamera.SetCaptureProperty(CvEnum.CAP_PROP.CV_CAP_PROP_AUTO_EXPOSURE, 0.0)
可悲的是,使用我正在使用的特定相机,看起来驱动程序不支持更改此属性。
答案 0 :(得分:0)
这与算法无关。这是在相机芯片内运行的自动曝光(AEC)算法的行为。尝试禁用相机的自动曝光控制并降低手动曝光量。
小理论:大多数AEC算法都采用全帧加权方法。因此,在您为白色洗涤的情况显示的样本中,黑色背景占据了图像的更多部分,这使得AEC算法假设图像太暗并因此在内部增加曝光水平。