大家好,又见面了,我是你们的朋友全栈君。
代码见:https://cs.adelaide.edu.au/~tjchin/apap/ 详细代码论文
此次实验选用的代码是2013年的版本:
由于文档中的代码块截图不一定清楚,需要的可以去上面的网址下载代码对照着看。
文章目录 - 一、代码
- 1.1、加载文件
- 1.2、编译Mex文件
- 1.3、设置VLFeat工具箱
- 1.3.1 什么是VLFeat工具?
- 1.4、Matlab中的并行计算
- 1.4.1 matlab并行运算函数
- 1.4.2 matlab并行原理
- 1.5、使用定义的参数
- 1.6、输入测试图片
- 1.7、正常化点分布及显示图片
- 1.8、删除离群点,同时利用RANSAC算法得到匹配图
- 1.9、求全局单应性,DLT
- 1.10、使用单应矩阵拼接图像
- 1.11、APAP,Moving DLT
- 1.12、使用DLT拼接图像
- 二、运行程序
- 三、参考:
- 1.1、加载文件
- 1.2、编译Mex文件
- 1.3、设置VLFeat工具箱
- 1.3.1 什么是VLFeat工具?
- 1.4、Matlab中的并行计算
- 1.4.1 matlab并行运算函数
- 1.4.2 matlab并行原理
- 1.5、使用定义的参数
- 1.6、输入测试图片
- 1.7、正常化点分布及显示图片
- 1.8、删除离群点,同时利用RANSAC算法得到匹配图
- 1.9、求全局单应性,DLT
- 1.10、使用单应矩阵拼接图像
- 1.11、APAP,Moving DLT
- 1.12、使用DLT拼接图像
一、代码
1.1、加载文件
在程序开始前调用close、clear等函数清除原先工作空间的操作,然后将此次实验所需的文件文件添加到环境中。
1.2、编译Mex文件
经过对代码块添加测试代码,证明了此处的代码块并未执行,在命令行仅仅输出了对文件的判断,而未输出if-end代码块中的测试代码。结果显示三个输出都是3,如下图所示:
1.3、设置VLFeat工具箱
1.3.1 什么是VLFeat工具?
VLFeat开源库实现了很多著名的机器视觉算法,如HOG、SIFT、MSER、hierarchical、k-means, agglomerative information bottleneck、SLIC superpixels和quick shift,专门用于图像理解和局部特征提取和匹配。VLFeat开源库是用C语言写的,以确保其效率和兼容性,同时VLFeat还提供了MATLAB接口和详细的文档,可以在windows, Mac, 和Linux上使用。下载地址是:http://www.vlfeat.org/
如何在MATLAB中配置VLFeat请参考文章:matlab配置vlfeat工具箱(https://blog.csdn.net/u013531940/article/details/86758215?ops_request_misc=%7B%22request%5Fid%22%3A%22163117581216780265435350%22%2C%22scm%22%3A%2220140713.130102334.pc%5Fall.%22%7D&request_id=163117581216780265435350&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v29_ecpm-2-86758215.pc_search_result_control_group&utm_term=matlab中设置VLFeat工具箱作用&spm=1018.2226.3001.4187 )
1.4、Matlab中的并行计算
1.4.1 matlab并行运算函数
在matlab较老的版本,如2013,2014版本中,使用的并行运算函数是:matlabpool函数
在matlab较新的版本,如2017,2018版本中,换成了:parpool函数
我在这次实验中使用的是2017版本的,需要对作者的代码进行一定的修改,如下图所示:
1.4.2 matlab并行原理
Matlab的并行计算实质还是主从结构的分布式计算。当你初始化Matlab并行计算环境时,你最初的Matlab进程自动成为主节点,同时初始化多个(具体个数手动设定,详见下文)Matlab计算子节点。Parfor的作用就是让这些子节点同时运行Parfor语句段中的代码。Parfor运行之初,主节点会将Parfor循环程序之外变量传递给计算子节点。子节点运算过程时互不干扰,运算完毕,则应该有相应代码将各子节点得到的结果组合到同一个数组变量中,并返回到Matlab主节点。当然,最终计算完毕应该手动关闭计算子节点。
参考:https://blog.csdn.net/luolang_103/article/details/84870735?ops_request_misc=%7B%22request%5Fid%22%3A%22163117962216780255233923%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=163117962216780255233923&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-3-84870735.pc_search_result_control_group&utm_term=parpool&spm=1018.2226.3001.4187
1.5、使用定义的参数
这里不做过多的解释。
1.6、输入测试图片
这里使用了两种方式,第一种是使用作者定义的图片,如下图所示,根据使用者输入的数字不同(如图中①所示),选用不同的图片进行实验,同时加载SIFTdata文件夹中的数据。
第二种方式是实验者自己选择照片,进行实验,如下图所示。本次实验我们选用的是第二种方式,用我们自己的图片进行测试。
1.7、正常化点分布及显示图片
显示的输入图片:
1.8、删除离群点,同时利用RANSAC算法得到匹配图
匹配点结果图:
1.9、求全局单应性,DLT
具体的分析步骤见参考1。
1.10、使用单应矩阵拼接图像
拼接的结果:
1.11、APAP,Moving DLT
1.12、使用DLT拼接图像
拼接的结果:
二、运行程序
找到main.m文件,将其添加到当前工作目录下,点运行即可
三、参考:
1、https://blog.csdn.net/chentianting/article/details/88869872
2、https://blog.csdn.net/qq_32095699/article/details/80448170?ops_request_misc=%7B%22request%5Fid%22%3A%22163115436616780271522172%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=163115436616780271522172&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-3-80448170.pc_search_result_control_group&utm_term=APAP&spm=1018.2226.3001.4187
3、 https://blog.csdn.net/qq_32095699/article/details/80448170?ops_request_misc=%7B%22request%5Fid%22%3A%22163115436616780271522172%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=163115436616780271522172&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-3-80448170.pc_search_result_control_group&utm_term=APAP&spm=1018.2226.3001.4187
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/192793.html原文链接:https://javaforall.cn