7

所以想象一下,有一个摄像头正盯着你的电脑屏幕。我要做的是确定相机旋转了多少,离屏幕有多远,以及它相对于屏幕中心的位置。简而言之,旋转和平移矩阵。

我正在使用 opencv 来执行此操作,并按照他们的相机校准示例使用棋盘图案和来自网络摄像头的框架来完成此任务。我想处理任何通用图像,即屏幕帽和网络摄像头的框架。

我尝试使用特征检测算法从两个图像中获取关键点列表,然后将这些关键点与 BFMatcher 匹配,但遇到了问题。具体来说,SIFT 无法正确匹配关键点,并且 SURF 无法在缩放图像上正确找到关键点。

这个问题有更简单的解决方案吗?我觉得这会是人们常做的事情,但在网上没有找到太多的讨论。

谢谢!!

4

1 回答 1

4

寻找自然平面标记是计算机视觉中的一项常见任务,但在您的情况下,您的屏幕会根据您在屏幕上可视化的内容而有所不同,它可以是您的桌面、浏览器、电影……

所以你不能应用通常的方法进行标记检测,你应该尝试形状识别。一个想法是在屏幕框架的相同尺寸(通过不同比例)的矩形模板上尝试粒子过滤器,应用第一个边缘检测。

粒子过滤器将使模板适合框架区域。完成此操作后,您将知道该位置。对于方向,您需要计算单应性,并且您需要在“标记”中为此设置 4 个点,因此您可以应用直接线性变换(cv::findHomography() 为您执行此操作)。所以你的四个点可以是四个角。这只是一个想法,祝​​你好运!

于 2012-06-20T13:19:50.960 回答