小编Sil*_* JC的帖子

实时视频(图像)拼接

我想在Visual Studio 2008上使用OpenCV 2.3.1实时拼接来自2个或更多(当前可能是3或4个)相机的图像.

但是,我很好奇它是如何完成的.

最近我研究了一些基于特征的图像拼接方法.

其中大多数至少需要以下步骤:

1.特征检测2.特征匹配3.Finding Homography 4.目标图像转换为参考图像等

现在我阅读的大多数技术只处理"ONCE"图像,而我希望它处理从几个摄像头捕获的一系列图像,我希望它是"实时".

到目前为止,它可能仍然令人困惑.我正在描述细节:

将3个摄像机放在不同的角度和位置,同时每个摄像机必须与相邻的摄像机重叠,以构建实时视频拼接.

我想要做的是与以下链接中的内容类似,其中使用了ASIFT.

http://www.youtube.com/watch?v=a5OK6bwke3I

我试图咨询该视频的所有者,但我没有收到他的回复:(.

我可以使用图像拼接方法来处理视频拼接吗?视频本身由一系列图像组成,所以我想知道这是否可行.但是,无论您使用哪种特征检测器(SURF,SIFT,ASIFT等),检测特征点似乎都非常耗时.这让我怀疑进行实时视频拼接的可能性.

video image image-stitching

12
推荐指数
2
解决办法
2万
查看次数

关于图像拼接的一些问题 - 单应性?

我正在使用Visual Studio 2010上的OpenCV 2.3.1进行图像拼接项目.

我目前有2个问题.

(我的声誉不超过10,所以我只能在这篇文章中发布2个超链接.我会在评论区发布另外2个)

我按照以下链接中提到的步骤 在opencv中拼接2个图像

  1. 在两个图像中查找SURF功能并匹配它们
  2. 使用RANSAC删除异常值
  3. 计算Homography
  4. 将目标图像变形为参考图像

以下图片是我目前的结果:

使用相机在相同位置但在不同方向拍摄两张图像(我使用三脚架).

在此输入图像描述

然后我尝试了另一个测试.这次我仍然使用相同的相机拍摄2张图像.但是,我将相机从原来的位置移开了一点,然后拍了第二张照片.结果如下所示:

在此输入图像描述

问题1:**这是否意味着**如果2个摄像机处于不同的位置,标准的全景拼接技术(基于单应性或相机旋转模型)将不起作用?

我试图缝在不同位置拍摄的图像,因为在未来,我想实现对2台相机在不同位置的拼接算法,以拓宽视野,排序是这样的:(我会发布的图片在评论, plz检查加宽FOV)

但现在看起来我的方向错了:(.


我刚刚发现在算法期间,特征查找和匹配占用了大部分时间.

问题2:我可以只计算2幅图像的某个部分(重叠区域)中的特征并仍使用Homography执行变换吗?即,不计算整个图像.

我想是这样的,因为我认为如果我指定2个图像之间的重叠区域的数量,则不必计算整个图像中的特征.如果我可以计算和匹配重叠区域中的特征,它应该大大提高速度.

下面显示的第一个代码是原始代码,用于计算整个图像的特征.

    int minHessian = 3000;

    SurfFeatureDetector detector( minHessian );
    vector<KeyPoint> keypoints_1, keypoints_2;

    detector.detect( frm1, keypoints_1 );
    detector.detect( frm2, keypoints_2 );

    //-- Calculate descriptors (feature vectors)  
    SurfDescriptorExtractor extractor; ///

    Mat descriptors_1, descriptors_2;

    extractor.compute( frm1, keypoints_1, descriptors_1 );
    extractor.compute( frm2, keypoints_2, descriptors_2 );
Run Code Online (Sandbox Code Playgroud)

我做了以下事情,试图减少运行整个算法所需的时间:

    //detector.detect( frm1(Rect(0.5*frm1.cols,0,0.5*frm1.cols,frm1.rows)), keypoints_1 );
    //detector.detect( frm2(Rect(0,0,0.6*frm2.cols,frm2.rows)), keypoints_2 );

    //-- Calculate descriptors …
Run Code Online (Sandbox Code Playgroud)

opencv image homography

10
推荐指数
1
解决办法
5549
查看次数

多个相机图像拼接

我一直在运行一个拼接多个摄像头图像的项目,但我认为我遇到了瓶颈......我对这个问题有一些疑问.

我想在将来尝试将它们安装在车辆上,这意味着相机的相对位置和方向是固定的.

此外,由于我正在使用多个摄像头并尝试使用HOMOGRAPHY来拼接图像,我会尽可能地将摄像头放在一起以便出现错误(由于摄像机的焦点不在同一位置而且这是不可能的,因为相机占据一定的空间.)可以减少.

这是我的一个简短的实验视频. http://www.youtube.com/watch?v=JEQJZQq3RTY

如图所示,拼接结果非常糟糕......即使摄像机拍摄的场景是静态的,单应性仍然会变化.

以下链接是我到目前为止所做的代码,code1.png和code2.png是显示我在Stitching_refind.cpp中的部分代码的图片.

https://docs.google.com/folder/d/0B2r9FmkcbNwAbHdtVEVkSW1SQW8/edit?pli=1

我几天前在代码中更改了一些内容,比如执行第2,3和4步(请查看上面提到的2张图片)JUST ONCE.


总之,我的问题是:

1.在计算特征之前是否可以找出重叠区域? 我不想计算整个图像的特征,因为它会导致更多的计算时间和不匹配.我想知道是否可以在2个相邻图像的重叠区域中使用JUST计算机功能?

2.我能做些什么来使得到的单应性更准确? 有人谈到CAMERA CALIBRATION并尝试其他一些匹配方法.我还是计算机视觉的新手...我试着研究一些关于相机校准的材料,但我仍然不知道它是什么.

大约2个月前,我在这里问了一个类似的问题: 使用OpenCV在图像拼接方面遇到一些困难

,其中一位回答者克里斯说:

听起来你理智地谈论这个问题,但是如果你可以访问这两个摄像头,并且它们将相互保持静止,那么离线校准,只需在线应用转换就可以提高你的应用效率.

"离线校准"是什么意思?它有什么帮助?

感谢您的任何建议和帮助.

opencv homography image-stitching

6
推荐指数
1
解决办法
6257
查看次数

标签 统计

homography ×2

image ×2

image-stitching ×2

opencv ×2

video ×1