APAP算法详解和VS代码实现「建议收藏」

APAP算法详解和VS代码实现「建议收藏」前段时间由于学习需要好好研究了一下APAP,由于对Matlab不熟悉,并且没有Matlab和C++混合编程的经验,因此看到原作者的代码的时候真的是头疼,我只能一点点的去测试语句,这里很感谢这位博主的详尽文章思路分析,可能有些人看这个就懂了。https://blog.csdn.net/chentianting/article/details/88869872这里也要感谢一下这位博主,我们的交流让…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前段时间由于学习需要好好研究了一下APAP,由于对Matlab不熟悉,并且没有Matlab和C++混合编程的经验,因此看到原作者的代码的时候真的是头疼,我只能一点点的去测试语句,这里很感谢这位博主的详尽文章思路分析,可能有些人看这个就懂了。

https://blog.csdn.net/chentianting/article/details/88869872

这里也要感谢一下这位博主,我们的交流让我对整体的思路有了更清楚的认识,很佩服他的能力

@模式识别实验室主任他的主页

我是结合论文内容、博客和代码,三合一进行学习的,有时候就自己有点混乱。其实整体思路非常明了

1.SIFT得到两幅图像的匹配点对

2.通过RANSAC剔除外点,得到N对内点

3.利用DLT和SVD计算全局单应性

4.将源图划分网格,取网格中心点,计算每个中心点和源图上内点之间的欧式距离和权重

5.将权重放到DLT算法的A矩阵中,构建成新的W*A矩阵,重新SVD分解,自然就得到了当前网格的局部单应性矩阵

6.遍历每个网格,利用局部单应性矩阵映射到全景画布上,就得到了APAP变换后的源图

7.最后就是进行拼接线的加权融合

这里有几个关键点文章和代码有出入的地方。(以下把目标图叫做左图,源图叫做右图)
1.较为常用的想法,我既然是把源图变换到目标图,那么我肯定是求解源图点到目标图点的单应性,但是并不是,代码中求的都是左图到右图,而且左图是目标图
2.代码中是在全景画布上面构建网格,然后在求解权重的时候,网格中心点坐标就需要变换成以(左图左上角)为原点,并与左图的内点计算权重
3.代码在最后的像素映射时,求得右图坐标后,直接取整,取得像素之后就赋值给左图,没有进行我常用的双线性插值,这里应该是叫做(邻近插值)?
4.代码在计算前,进行了Normalise和Condition,归一化即是代码中的T1 T1,能够将所有点均值变成0,标准差变成sqrt(2),而Condition我还是没明白在做什么,有明白的请指教。这两步很重要,不然后面的求解就不太正确
5.数据可能是影响结果的重要问题,我就是被此困扰了很久。代码是利用了Multi-GS的RANSAC改进版进行内点的选取,而我在opencv只是简单的利用RANSAC,而且这个代码分析还要得益于这位博主
https://blog.csdn.net/qq_25352981/article/details/51530751
但是,RANSAC始终没有那么优秀,我得到的内点数据跟作者差别较大,而且也受限于SIFT得到的原始点对只有801对,而论文可是有2100对,因此最开始我设定0.5阈值RANSAC得到的内点根本没法复现。

后来当我把所有点放入使用,竟然得到了较为近似的结果。直到那时候我才明白问题出错的关键所在。

当然,这个结果并不好
当然这个结果并不好,我也还没有进行加权融合,但是整个思路已经明确,收获较大。虽然特别的煎熬,但是也兴致盎然,成果出来的时候兴奋不已

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190768.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 学了一天java,我总结了这些知识点

    学了一天java,我总结了这些知识点大家好,我是KookNut39也是Tommy,在CSDN写文,写Java时候我是Tommy,分享一些自己认为在学习过程中比较重要的东西,致力于帮助初学者入门,希望可以帮助你进步。以前一直更新C/C++方面的知识,今天是我第一次更新Java方面的知识,以后会持续更新,感兴趣的欢迎关注博主,和博主一起从0学习Java知识。大家可以去专栏查看之前的文章,希望未来能和大家共同探讨技术。文章目录1.注释(1)单行注释(2)多行注释(3)文档注释2.关键字3.保留字4.标识符5.Java数据类型(1)基本数据类型.

    2022年4月27日
    53
  • 数据集网站_drone无人机模拟训练软件

    数据集网站_drone无人机模拟训练软件中国人不骗中国人。csdn李居然有人卖几十块智商税。其实只要外网一查就免费。看我来砸他生意。免费万岁!共享永存!GitHub-dasmehdix/drone-dataset:Dronedatasettoguideenemydrones(withsometools)…

    2022年8月15日
    2
  • linux命令行与shell脚本编程大全和鸟哥的私房菜_linux进入命令行

    linux命令行与shell脚本编程大全和鸟哥的私房菜_linux进入命令行一、基本bashshell命令创建文件:touch链接文件:符号链接:是一个实实在在的文件,两个通过符号链接在一起的文件,彼此的内容并不相同。使用ln-s命令。硬链接:会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但他们从根本上而言是同一个文件。原始文件必须事先存在,使用ln命令。查看文件类型:file查看整个文件:cat,more,less…

    2022年9月1日
    0
  • 使用JavaScript刷新验证码

    使用JavaScript刷新验证码今天学习了验证码的开发,日常生活中经常点验证码,今天自己也来做一个验证码                           首先是用一个文件产生随机验证码:  <%@pageimport="java.awt.*"%><%@pageimport="java.util.*"%><%@pa…

    2022年10月23日
    0
  • 列举6个常见且实用的Web前端性能优化方法[通俗易懂]

    列举6个常见且实用的Web前端性能优化方法[通俗易懂]在如今这个信息爆炸的时代,人们的节奏总是快速的,对于一个网站的耐心毕竟是有限的可怜的,如果网站不进行优化必定会流失相当一部分的客户,带来不必要的损失。那么从Web前端的性能优化上来说有哪些常见、实用的方法呢?下面小千就列举6个常见且实用的Web前端性能优化方法。1、使用CDNCDN(内容分发网络)部署在各大运营商机房,当用户通过浏览器请求资源时可以直接反馈给用户,极大的减轻了服务器数据中心的压力。本质上CDN也是一种缓存,如果你的所在地距离某个CDN节点很近,那么网站响应的速度提升也是非常明显的。另外

    2022年6月23日
    21
  • awvs原理_csgo奇葩武器代码

    awvs原理_csgo奇葩武器代码awvs10.5下载http://www.32r.com/soft/12986.html

    2022年9月22日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号