我正在使用OpencV开发速度估算和车辆计数应用程序,我使用红外摄像机。
我遇到太阳光反射问题,导致图像中出现垂直白色区域或线条,对我的车辆检测效果不佳。
我想要一种速度非常快的方法,因为它是一个实时应用程序。
答案 0 :(得分:4)
这些图像中的垂直条纹缺陷称为“#346;晕染”,当CCD中的一个或几个孔饱和到它们将电荷溢出到同一列中的相邻孔时发生。此外,你有"常规"在反射区域周围没有晕染的饱和度。
如果可以,最佳解决方案是控制曝光(更快的快门时间,或关闭镜头光圈,如果有的话)。这将减少但不能消除晕染现象。
开花将始终以恒定方向(垂直或水平,取决于您的图像方向)发生,并且通常将完全填充一个或几个连续的列。因此,您可以通过在相反维度中进行大量子采样并寻找在同一列中重复的最大值来便宜地检测它。例如,在您的图像中,您可以在10行左右的同一列中查找饱和最大值,并将其分布在图像高度上。
一旦检测到晕染的色谱柱,您可以在它们周围的小条带中跟踪它们,以尝试找到饱和区域。注意,饱和度不一定意味着动态范围结束时的值(例如,对于8位图像为255)。您的传感器可能在A / D转换分配的值处完全饱和,例如252.饱和度只是意味着图像响应相对于输入亮度变得恒定。
答案 1 :(得分:2)
最简单的解决方案(对我而言)是硬件解决方案。如果您可以修改物理相机设置,请在相机镜头上添加偏振滤镜。你甚至不需要一个(昂贵的)相机专用镜头,添加一张简单的偏光膜足够好Here is one site我只是谷歌搜索"偏光膜"您将不得不使用方向,但是在这个安装位置,大多数表面处于相同的角度,并且眩光将在水平附近极化。所以你应该找到一个在大多数情况下运作良好的职位。
之前我使用过这种方法,最好的部分是它不会增加算法的复杂性或滞后性。特别适用于所有表面角度几乎相同的安装式摄像机。这不会帮助您处理当前的图像,但它有助于处理和获取未来的图像。