ASIFT算法在WIN7 64位系统下利用VS2012生成


传统的sift算法在视角变化不大的情况下,可以获得良好的匹配效果,但如果在视角变化偏大时,其匹配效果会急剧下降,甚至找不到匹配点。由Guoshen Yu和Jean-Michel Morel提出的ASIFT算法很好的解决了在大视角变化条件下的图像配准问题,其原论文链接为:http://www.ipol.im/pub/art/2011/my-asift/

由于网上关于其在windows平台下VS实现C++工程的介绍很少,即使有也只是上传的已经实现好的C++工程。下面我就将其在VS2012下如何实现作一下操作,以便有需要的朋友自己实现一下该工程。我的工程实现是在VS2012 win64系统下执行的。

1.从上面提供的论文链接中下载其源码,即下面的TAR/GZ或者ZIP压缩包,下载下来后压缩包名称为demo_ASIFT_src。


2.下载CMake,用于生成VS工程,下载地址为:https://cmake.org/download/,我下载的版本是cmake-3.7.2-win64-x64.msi,用于64位系统。下载完成后安装,并在桌面上生成快捷方式CMake (cmake-gui)。

3.解压下载好的源码demo_ASIFT_src到计算机某个位置。打开CMake,在Where is the source code中将你的解压的源码的目录加进去,我的是E:\demo_ASIFT_src,并在该目录下新建一个文件夹BUILD,用于稍后生成的需要存放的工程。然后将该BUILD目录加到Cmake的Whereto build the binaries路径中,我的是E:/demo_ASIFT_src/BUILD。然后点击Configure进行编译,在弹出的选项中选中VS2012 win64版本的编译器。其他版本和系统的选则相应的选项即可。然后开始编译,编译的过程中可能会有Warnings,不去管它。生成结束,成功后,点击Cmake界面上的Generate,就可以在BUILD目录下生成工程。

ASIFT算法在WIN7 64位系统下利用VS2012生成_第1张图片

4.打开VS2012,并找到BUILD所在目录,打开该目录下的ASIFT.sin工程。将编译模式改为Release,并且将配置管理器改为x64,如果没有x64,则新建一个x64活动解决方案平台即可。然后将鼠标点击到解决方案'ASIFT'上,并按F7生成解决方案。这样一来,在BUILD/Release目录下就会有一个名为demo_ASIFT.exe的可执行文件。

ASIFT算法在WIN7 64位系统下利用VS2012生成_第2张图片


ASIFT算法在WIN7 64位系统下利用VS2012生成_第3张图片


ASIFT算法在WIN7 64位系统下利用VS2012生成_第4张图片

5.生成完成demo_ASIFT.exe后,可以将该解决方案下的除了demo_ASIFT的其他六个工程用不到了,可以卸载掉,当然也可以保留。但如果想要在debug条件下对demo_ASIFT进行调试的话,则要在解决方案资源管理器中右击demo_ASIFT,并在弹出的列表中将其设置为启动项目,否则将会报错。这是因为其他的Match,Numerics,png,zlib在之前进行F7生成解决方案的时候,所生成的lib将会被demo_ASIFT调用,所以此时直接对demo_ASIFT进行debug时,就不需要其他几个工程了。而且ALL_BUILD和ZERO_CHECK只是用于F7生成解决方案时用的,后面也用不到了。

6.为了方便测试,可以将生成的demo_ASIFT.exe拷贝到磁盘某文件夹下,并加入两张测试图像。例如,将demo放到桌面上,则demo文件夹的路径为桌面。这样,demo内有三个文件,注意图像要为png格式。

ASIFT算法在WIN7 64位系统下利用VS2012生成_第5张图片

7.运行cmd指令:将路径设置为当前路径文件夹路径,以便调用demo_ASIFT

ASIFT算法在WIN7 64位系统下利用VS2012生成_第6张图片

8.在cmd窗口中输入运行的参数:demo_ASIFT book1.png book2.png bookimgOutVert.png bookimgOutHori.png bookmatchings.txt bookkeys1.txt bookkeys2.txt

ASIFT算法在WIN7 64位系统下利用VS2012生成_第7张图片

其中,这些指令用空格隔开,且参数数目及格式需对应上,共8个参数:

demo_ASIFT:需要执行的exe名称,这个名称不要改动。

book1.png:输入的第一张图像,名称可以改动,但需要与你所需要匹配的图像名称一致。

book2.png:输入的第二张图像,名称可以改动,但需要与你所需要匹配的图像名称一致。

bookimgOutVert,png:输出的匹配结果,名称可以改动,该结果是经过对极几何(ORSA)优化过后的,两幅图竖直排列。

bookimgOutHori.png:输出的匹配结果,名称可以改动,该结果是经过对极几何(ORSA)优化过后的,两幅图水平排列。

bookmatchings.txt:找到的匹配点对,名称可以改动,该结果是经过对极几何(ORSA)优化过后的。

bookkeys1.txt:第一幅输入图像中找到的所有关键点,名称可以改动。

bookkeys2.txt:第二幅输入图像中找到的所有关键点,名称可以改动。

9.输入完上面的指令之后,点击enter运行,执行结束后,结果如下。并且在demo文件夹中,可以找到对应的输出文件: 

 ASIFT算法在WIN7 64位系统下利用VS2012生成_第8张图片      

ASIFT算法在WIN7 64位系统下利用VS2012生成_第9张图片


 如有问题,欢迎大家留言交流。下面是一些匹配的效果图:

ASIFT算法在WIN7 64位系统下利用VS2012生成_第10张图片


ASIFT算法在WIN7 64位系统下利用VS2012生成_第11张图片

ASIFT算法在WIN7 64位系统下利用VS2012生成_第12张图片




你可能感兴趣的:(图像配准,Asift,64位,VS2012,视角,图像配准)