wid*_*dgg 9 opencv surf image-stitching
所以,我正在尝试缝合由微芯片显微镜拍摄的图像,但很难将所有特征对齐.我已经在两个相邻图像之间有50%的重叠,但即便如此,它并不总是很合适.
我正在使用SURF和OpenCV来提取关键点并找到单应矩阵.但是,它仍然远远不是一个可接受的结果.
我的目标是能够完美地缝合2x2图像,所以这样,我可以递归地重复该过程,直到我有最终图像.
你有什么建议吗?一个很好的算法来解决这个问题.或者也许是一种转换图像的方法,以便能够从中提取更好的关键点.使用阈值(较小的一个获得更多的关键点,或更大的关键点?).
现在,我的方法是首先缝合两个2x1图像,然后将这两个图像拼接在一起.它与我们想要的很接近,但仍然不能接受.此外,问题可能是图像曾经是"源"(而第二个图像是通过矩阵与一个图像重叠而变换)可能不会有点错位,或者该图像上的小角度会影响整个结果.
任何帮助或建议表示赞赏.特别是允许使用OpenCV和SURF的任何解决方案(即使我不完全反对其他库......只是因为大部分项目都是用它开发的).
谢谢!
我发现在图像注册开发过程中使用TurboReg是一个有用的比较工具.它是一个免费的ImageJ插件,有许多不同的拟合类型.
您是否看过新的OpenCV拼接样本:stitching.cpp和stitching_detailed.cpp?
编辑:我忘了这是最前沿的OpenCV,因为我在家里使用主干:)为了获得这些新样本的访问权限,你需要从SVN查看OpenCV中继,如下所示:
svn co https://code.ros.org/svn/opencv/trunk/opencv opencv-trunk
Run Code Online (Sandbox Code Playgroud)
不幸的是,你需要重新编译它,但你应该能够使用新的拼接代码:)如果你之前没有从源代码构建OpenCV,这里有一个很好的小教程可以帮助你入门.我将提到OpenCV有比本教程中提到的更多可以启用/禁用的选项,因此您可能希望使用它cmake-gui来查看所有选项.您可以使用此命令来获取它:
> sudo apt-get install cmake-qt-gui
Run Code Online (Sandbox Code Playgroud)
此外,如果你更关心质量,你不介意性能下降; 您可以考虑使用Lucas-Kanade方法进行图像配准.这是一个讲座,这是一篇关于这个主题的论文,可能对你有所帮助.