我想知道是否有可能匹配一组图像的曝光。
例如,假设您有 5 张以不同角度拍摄的图像。图像1-3,5以相同的曝光拍摄,而第4张图像的曝光略暗。当我尝试使用(seamFinder with: gc_color
、surf detection
、MULTI_BAND blending
、Wave correction
等)将它们组合成圆柱形全景图时,由于图像4中的黑暗,结果中间有一个大阴影。
我也尝试过使用exposureCompensator
,但没有运气。
由于我在iOS中拍摄照片,因此我可以在需要时手动增加曝光?但这似乎不是最佳的。
还有其他人处理过这个问题吗?
这种方法可能有点矫枉过正(不仅仅是一点点),但HaCohen等人的这篇文章介绍了当前确保不同图像之间颜色一致性的最新方法。
他们的算法可以纠正图像集中的各种错误。我已经在具有大错误的数据集上实现并测试了它,它的性能非常好。
但是,再一次,我想这对于全景拼接来说是矫枉过正的。
Sunreef提供了一篇非常好的论文,但由于可能的实现的复杂性,它似乎有些矫枉过正。
您要做的不是在整个图像上均衡曝光,而是在重叠区域上均衡曝光。如果重叠区域的直方图匹配,则很好地表明图像具有相似的亮度和曝光条件。由于您要进行 1 次以上的拼接,因此可能需要全局均衡以使所有图像看起来相似,然后仅使用重叠区域的加权均衡或二次优化器来均衡它们(如果您不是专业摄影师,这又是矫枉过正)。OpenCV具有简单均衡补偿算法的简单实现。
OpenCV 的 detail::
ExposureCompensator 类(此处是此类拼接的示例实现)非常适合您使用。
- 只需创建一个补偿器(尝试 2 种不同类型的补偿:
GAIN
和GAIN_BLOCKS
)
根据图像左上角角的位置(在 - 拼接图像中)以及蒙版(只能在重叠区域中完全白色或白色)将图像送入补偿器。
- 对每个单独的图像应用补偿并迭代检查结果。
我不知道在iOS中可以做到这一点,只有OpenCV。