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