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得到的内点根本没法复现。

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • HP发布Jenkins最新UFT开源插件

    HP发布Jenkins最新UFT开源插件就在UFT11.5发布之时,HP同时也发布了针对UFT的Jenkins开源插件1)通过此插件可以运行来自HPALM/QC或本地存储的测试脚本2)你可以选择多个指定脚本甚至是文件夹3)此插件会运行文件夹下的所有测试脚本4)在build机上可以通过配置运行测试脚本5)当然也可在远程机器上指定6)如果你的测试脚本存储在HPALM/QC的测试集中,则可以通过配置jenkins运

  • 算法学习–分酒问题(BFS)[通俗易懂]

    算法学习–分酒问题(BFS)[通俗易懂]有4个红酒瓶子,它们的容量分别是:9升,7升,4升,2升开始的状态是[9,0,0,0],也就是说:第一个瓶子满着,其它的都空着。允许把酒从一个瓶子倒入另一个瓶子,但只能把一个瓶子倒满或把一个瓶子倒空,不能有中间状态。这样的一次倒酒动作称为1次操作。假设瓶子的容量和初始状态不变,对于给定的目标状态,至少需要多少次操作才能实现?本题就是要求你编程实现最小操作次数的计算。输入:最终状…

    2022年10月19日
  • Hive数据存储结构「建议收藏」

    Hive数据存储:  Hive没有专门的数据存储格式,也没有为数据建立索引,用户可以自由组织Hive中的表,只需要在创建表的时候告诉Hive数据中的分隔符(列分隔和行分隔),Hive就可以解析数据。  hive的数据都存储在HDFS,我们这地方讲的存储主要只Hive中的数据模型存储。Hive中的数据模型主要由:数据库(Database)、表((table)内部表table、外部

  • 《开源安全运维平台-OSSIM最佳实践》已经上市

    《开源安全运维平台-OSSIM最佳实践》已经上市经多年潜心研究开源技术,历时三年创作的《开源安全运维平台OSSIM最佳实践》一书即将出版。该书用100多万字记录了作者10多年的OSSIM研究应用成果,重点展示了开源安全管理平台OSSIM在大型企业网运维管理中的实践。国内目前也有各式各样的运维系统,经过笔者对比分析得出这些工具无论在功能上、性能上还是在安全和稳定性易用性上都无法跟OSSIM系统想媲美,而且很多国内的开源安全运维项目在发布几年后就逐步淡出了舞台,而OSSIM持续发展了十多年。

    2022年10月25日
  • Golang 新手要注意的陷阱和常见错误(一)[通俗易懂]

    Golang 新手要注意的陷阱和常见错误(一)

  • windows ios文件_苹果电脑 装windows

    windows ios文件_苹果电脑 装windows安装及注册过程不再陈述,百度搜索一大堆windwos端配置打开charles图中1,如果是抓手机,关闭此处图中2点开如下所示:注意打勾此时手机可以连接了,但是https请求会出现unknow,因此配置完成电脑端再解决手机端安装ssl证书以上pc端配置完成iphone配置iphone点击所连接的wifi,进入后在最下方设置代理,ip和…

    2022年10月27日

发表回复

您的电子邮箱地址不会被公开。

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