【问题标题】:Pixel level image registration / alignment?像素级图像配准/对齐?
【发布时间】:2013-12-06 17:36:33
【问题描述】:

我正在尝试从两个图像中删除前景,这是一对示例图像:

如您所见,在拍摄第二张照片之前,百威酒瓶已从场景中移除。

这些照片是用针孔相机 (iPhone) 拍摄的,棘手的部分是我手持相机,因此无法保证图像逐个像素完美对齐,所以一个简单的减号 -阈值方法不起作用。

然后,我决定使用来自 OpenCV 的 findHomographywarpPerspective 执行图像配准,这是结果图像:

这张图片被我从findHomography 得到的矩阵扭曲了,它提高了对齐质量,但仍然没有那么对齐,所以我可以使用一种简单的方法来移除前景。

所以,最后,我决定实现一个“模糊减法”算法:对于 image1 中的每个像素,我将查看 image2 中的一个 7x7 邻居(一个 7 x 7 内核?),使用灰度的最小差异作为减号的结果,并将结果阈值转换为二进制图像,这就是我得到的:

结果还是不好。注意瓶子里的白色整体,这是由于前景和背景的灰度值相似而产生的。所以我不知道现在该怎么办。

我可以想到两种解决问题的方法,第一种是获得更好对齐的图像对,然后简单地减去这些对;二是使用更稳健的方式提取前景。

谁能给我一些关于如何处理这类问题的建议?我相信应该有一些最先进的算法或处理管道,但是在谷歌搜索之后,我什么也没得到。

我正在使用带有 C++ 的 OpenCV,如果您能告诉我如何使用这些工具来完成它,那就太好了。

提前非常感谢!

【问题讨论】:

  • 尝试使用颜色差异而不是灰度差异,它会提供更多的辨别力。
  • @DavidNilosek,我也尝试过 HSV 色彩空间,我得到的非常相似,我的意思是,整体仍然存在。
  • 您是否尝试过将一些特征检测与您的算法相结合..?使用 FAST 或 ORB 检测一些角落,然后在结果图像上执行findHomography。干杯。
  • 谢谢@scap3y,目前我使用的是SURF特征点,上图是使用SURF特征点对齐的。特征点的类型会影响结果吗?
  • 当然会。!尝试各种特征检测器,看看哪一个效果最好。阅读相应的文献。您可能想研究一些背景减法技术(我个人最喜欢的是 GMM,但它确实取决于应用程序).​​. HTH

标签: c++ opencv image-processing computer-vision


【解决方案1】:

问题不在于您的算法。您遇到了问题,因为这两个场景不是从完全相同的角度拍摄的,如下面的动画所示。这种细微的差异突出了减法中的边缘。

您需要一个静态相机才能应用此方法。

【讨论】:

  • 谢谢马文,但我必须手握图像,有没有办法修复漂移?
  • 您还必须处理阴影
【解决方案2】:

我建议在你必须摆脱伪影的面具上使用数学形态学。 尝试同时应用打开和关闭以消除黑色和白色的小区域。

Mathematical Morphology

Mathematical Morphology in opencv

两张图的差别非常大,所以你需要使用一个大的结构元素,但我认为你无法摆脱阴影。 对于背景中的两条大条,您也可以尝试使用水平形状的结构元素。

编辑

是否可以生成灰度图像而不是二值图像?如果是的话,你可以尝试用帽子方法来处理阴影,但我不确定这一点。

这就是我使用两个不同的结构元素来关闭 THEN opening

Mat mask = imread("mask.jpg",CV_LOAD_IMAGE_GRAYSCALE);
morphologyEx(mask,mask,MORPH_CLOSE,getStructuringElement(CV_SHAPE_ELLIPSE,Size(50,10)));
morphologyEx(mask,mask,MORPH_OPEN,getStructuringElement(CV_SHAPE_ELLIPSE,Size(10,50)));
imshow("open",mask);
imwrite("maskopenclose.jpg",mask);

【讨论】:

  • 这是一个很好的结果,但我想知道你是怎么得到像 50 或 10 这样的神奇数字的?是否有任何自适应方式来自动调整这些值?
  • 不幸的是,我现在没有能想到的自适应方法来确定值,在我们的例子中,对象内部的间隙是水平的,背景条是垂直的,并且两者的宽度几乎相同,这就是为什么结构元素是这种方式的原因。但总的来说,您应该尝试对称结构。我将尝试找出霍夫圆变换是否可以帮助我们确定最小的必要结构大小。
  • 谢谢 salemD,我找到了这个 youtube 视频:youtube.com/…,photoshop 是如何解决对齐问题的?我想应该有一个解决方案......
【解决方案3】:

【讨论】:

    【解决方案4】:

    我建议不要使用findHomography,而是尝试使用一些openCV的立体对应功能:http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html

    这里有一个示例代码:https://github.com/Itseez/opencv/blob/master/samples/cpp/stereo_calib.cpp

    【讨论】:

    • 立体对应功能需要两个校准过的摄像头吗?我只有一台未校准的相机..
    猜你喜欢
    • 1970-01-01
    • 2014-01-02
    • 2020-04-30
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多