Apap图像配准算法[通俗易懂]

Apap图像配准算法[通俗易懂]Apap图像配准算法

大家好,又见面了,我是你们的朋友全栈君。

图像配准

图像配准是将两张场景相关的图像进行映射,寻找其中的关系,多用在医学图像配准、图像拼接、不同摄像机的几何标定等方面,其研究也较为成熟。OpenCv中的stitching类就是使用了2007年的一篇论文(Automatic panoramic image stitching using invariant features)实现的。虽然图像配准已较为成熟,但其实其精度、鲁棒性等在某些场合仍不足够,如光线差异很大的两张图片、拍摄角度差异很大的图片等。2013年,Julio Zaragoza等人发表了一种新的图像配准算法Apap(As-Projective-As-Possible Image Stitching with Moving DLT),该算法的效果还是不错的,比opencv自带的auto-stitch效果要好。而2015年也有一篇cvpr是介绍图像配准(Non-rigid Registration of Images with Geometric and Photometric Deformation by Using Local Affine Fourier-Moment Matching),其效果貌似很牛,但没有源码,难以检验。本文简单介绍Apap。

Apap

项目地址:http://cs.adelaide.edu.au/~jzaragoza/doku.php?id=mdlt
下面简单介绍Apap的实现流程:

  1. 提取两张图片的sift特征点
  2. 对两张图片的特征点进行匹配,匹配的过程引用了论文(Distinctive Image Features from Scale-Invariant Keypoints)
  3. 匹配后,仍有很多错误点,此时使用论文(Accelerated Hypothesis Generation for Multi-Structure Robust Fitting)提到的RANSAC的改进算法进行特征点对的筛选。筛选后的特征点基本能够一一对应。
  4. 使用DLT算法(Multiple View Geometry p92提到),将剩下的特征点对进行透视变换矩阵的估计。
  5. 因为得到的透视变换矩阵是基于全局特征点对进行的,即一个刚性的单应性矩阵完成配准。为提高配准的精度,Apap将图像切割成无数多个小方块,对每个小方块的变换矩阵逐一估计。

实验效果

两张原图:这里写图片描述
特征提取和匹配:这里写图片描述
红点为改进RANSAC筛选的错误点,绿线为正确点,能看出所有连线一一对应,并没有明显的错误特征对。
刚性配准:这里写图片描述
Moving_DLT配准:这里写图片描述

结论

Apap虽然能够较好地完成配准,但非常依赖于特征点对。若图像高频信息较少,特征点对过少,配准将完全失效,并且对大尺度的图像进行配准,其效果也不是很好,一切都决定于特征点对的数量。

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

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

(0)
上一篇 2022年4月19日 上午8:00
下一篇 2022年4月19日 上午8:20


相关推荐

  • pycharm系统环境变量未生效

    pycharm系统环境变量未生效利用 python 连接 oracle 数据库 安装 instantclien cx Oracle 后 设置环境变量 在命令行中可以执行 python 脚本 在 pycharm 中无法执行 找不到客户端的启动文件错误 在 RUN editconfig 设置中 可进行变量的配置 需要先执行对应文件 editconfig 灰色显示无法点击 在 pycharm 的对应文件执行后 点击 RUN 按下图执

    2026年3月27日
    2
  • linux usb urb,usb中urb接口函数

    linux usb urb,usb中urb接口函数一 简介 usb 总线是一种轮询式总线 协议规定所有的数据传输都必须由主机发起 usb 主机与设备之间是通过管道 pipe 传输的 管道两边分别对应主机中的数据缓冲区和设备侧的端点 endpoint 端点是通信的发送和接收点 要发送数据 只要把数据发到对应的端点就可以 而这个数据发送的动作由 usb 主机实现 驱动中只需确定接收端点 然后把数据提交给主机控制器 主机会把数据发送给接收端点 原理同 i2c

    2026年3月17日
    2
  • Pytest(15)pytest分布式执行用例「建议收藏」

    Pytest(15)pytest分布式执行用例「建议收藏」前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

    2022年7月28日
    7
  • Double 转 String

    Double 转 String场景Double整数部分超6位时用科学计数法表示,如123456789.50表示为1.234567895E8解决doubled=123456789.50;DecimalFormatformat=newDecimalFormat("#.00");Stringstr=format.format(d);System.out.println(str);…

    2025年8月6日
    6
  • 我的书单

    整理了一下自己购物车里的书单,推荐一下。

    2022年3月11日
    43
  • SELinux系列(五)——SELinux工作模式设置(getenforce、setenforce和sestatus命令)[通俗易懂]

    SELinux系列(五)——SELinux工作模式设置(getenforce、setenforce和sestatus命令)[通俗易懂]除了通过配置文件可以对SELinux进行工作模式的修改之外,还可以使用命令查看和修改SELinux工作模式。首先,查看系统当前SELinux的工作模式,可以使用getenforce命令;而如果想要查看配置文件中的当前模式和模式设置,可以使用sestatus命令,下面的代码显示了这两个命令:[root@localhost~]#getenforce#查询SELinux的运行模式Enforcing#当前的SELinux是强制模式[root@localhost~]#s.

    2022年6月27日
    42

发表回复

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

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