计算机视觉:去除边缘效应

时间:2014-02-11 17:37:53

标签: opencv image-processing computer-vision

我将几张照片组合成一张(有点类似于全景效果​​),我发现强度有所不同,尤其是照片边缘附近。消除这些影响的最佳方法是什么?我想我应该将强度标准化,但也可能还有其他技术?如果没有,你究竟会如何规范两幅图像的强度? enter image description here

我使用的是OpenCV,所以我很欣赏Python或C ++中的任何代码示例。提前谢谢。

更新

opencv类中的Stitcher会解决我的问题吗?如果是这样,在组合图像之前如何避免在拼接器上调用estimateTransform?我想避免这个电话的原因是我的相机没有移动,所以我确切地知道了针脚的位置。任何帮助赞赏。感谢。

2 个答案:

答案 0 :(得分:4)

您所要求的实质上是对拼接算法的两部分修改(即:将多个图像拼凑成一个图像的算法)。

第一部分是去渐晕,主要是纠正图像角落的亮度变化。这在使用广角镜头拍摄时很常见。解决方案并非完全无关紧要,我没有一个有效的C ++源代码示例。对于整体问题,我的猜测是你必须学习它背后的数学并自己实现它。我可以提供shell脚本程序的示例,该程序通过ImageMagik传递图像以解决此问题。算法本身也完全按照外行人的术语制定。

下半部分涉及将现在去渐晕的图像拼接在一起。你似乎已经把那部分放下了。现在,即使图像的边缘处的亮度伪影得到校正,每个图像的平均强度也会不同。通过直方图均衡可以很容易地解决这个问题,我有一个C ++示例。

简而言之:

  1. 对每个帧应用去渐晕算法
  2. 将直方图均衡算法应用于每个帧
  3. 将所有原始帧拼接成最终图像
  4. 在完成所涉及的工作之后,你会明白为什么涉及这项工作的大多数工作都是商业性的,并且来源不是免费的。

    <强>参考


    1. “De-vignetting”,访问2014-02-11,http://www.physics.mcmaster.ca/~syam/Photo/

    2. “全局和局部亮度对齐的图像注册”,已访问2014-02-11,http://www.cse.cuhk.edu.hk/leojia/all_project_webpages/luminance_alignment/luminance_alignment.html

    3. “使用C ++进行直方图均衡:图像处理”,访问2014-02-11,http://www.programming-techniques.com/2013/01/histogram-equalization-using-c-image.html

答案 1 :(得分:0)

我认为响应取决于您的图片有多少重叠。您可以尝试混合,但我不知道您的图像是否有不同的重叠内容。我会尝试将直方图匹配(http://en.wikipedia.org/wiki/Histogram_matching)与alpha混合相结合。