• 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

注册模块实现了参数化图像配准。所实现的方法是直接对齐(direct alignment),即,它直接使用像素值来计算一对图像之间的配准,与基于特征的配准方法相对。该实现基本上遵循了[254]中对应的部分。

基于特征的方法在尝试配准在不同光照条件或曝光时间下拍摄的图像,或当图像仅部分重叠时,相比基于像素的方法具有一些优势。另一方面,与基于特征的方法相比,基于像素的方法的主要优势在于,对于某些图像(在相似光照条件下拍摄且具有显著重叠的图像),其精度更高,这是因为我们使用了图像中所有可用的信息,从而能够实现亚像素精度。这对于某些应用(如多帧去噪或多帧超分辨率)尤其重要。

事实上,基于像素和基于特征的配准方法可以相互补充:一个应用程序可以首先使用特征获得粗略的配准,然后在图像的重叠区域上使用基于像素的方法来细化配准。所开发的代码允许这种使用场景。

该模块实现了从抽象类 cv::reg::Map 或 cv::reg::Mapper 派生的类。前者对两个参考帧之间的坐标变换进行建模,而后者封装了一种调用方法的方式,该方法计算两个图像之间的映射(Map)。尽管目标是实现基于像素的方法,但该模块可以扩展以支持其他能够计算图像间变换的方法(基于特征的方法、光流等)。

每个从 Map 派生的类实现了一种运动模型,如下所示:

MapShift:对简单的平移进行建模。
MapAffine:对仿射变换进行建模。
MapProjec:对投影变换进行建模。

MapProject 也可以用于对仿射运动或平移进行建模,但它的一些操作成本更高,这就是定义另外两个类的原因。

从 Mapper 派生的类有:

MapperGradShift:基于梯度的对齐,用于计算平移。它产生一个 MapShift(两个参数,对应于平移向量)。
MapperGradEuclid:基于梯度的对齐,用于欧几里得运动,即旋转和平移。它计算三个参数(角度和平移向量),尽管结果为了方便存储在 MapAffine 对象中。
MapperGradSimilar:基于梯度的对齐,用于计算相似性变换,即在欧几里得运动的基础上增加了缩放。它计算四个参数(两个用于反对称矩阵,两个用于平移向量),尽管结果为了更好的方便性存储在 MapAffine 对象中。
MapperGradAffine:基于梯度的对齐,用于仿射运动模型。参数数量为六个,结果存储在 MapAffine 对象中。
MapperGradProj:基于梯度的对齐,用于计算投影变换。参数数量为八个,结果存储在 MapProject 对象中。
MapperPyramid:它使用高斯金字塔实现分层运动估计。它的构造函数接受任何实现 Mapper 接口的其他对象作为参数,并且正是该 mapper 被 MapperPyramid 在金字塔的每个尺度上调用。

如果图像之间的运动不是非常小,使用这些类的正常方式是创建一个 MapperGrad* 对象并将其用作创建 MapperPyramid 的输入,然后调用 MapperPyramid 来执行计算。然而,如果图像之间的运动足够小,我们可以直接使用 MapperGrad* 类。另一种可能性是先使用基于特征的方法进行粗略配准,然后通过 MapperPyramid 或直接使用 MapperGrad* 对象进行细化。mappers 的 “calculate” 方法接受运动的初始估计作为输入。

在决定使用哪个 MapperGrad 时,我们必须考虑到,参数更多的 mappers 可以处理更复杂的运动,但涉及更多的计算,因此速度更慢。此外,如果我们对序列遵循的运动模型有信心,增加超出我们需要的参数数量会降低精度:最好使用我们能用的最少自由度数量。

在模块测试中有示例,展示了如何使用任何已实现的 mappers 来配准一对图像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919055.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919055.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919055.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模型驱动与分布式建模:技术深度与实战落地指南

摘要 在AI、云原生与全球化协作的大潮中,模型驱动架构(MDA)与分布式建模不再是概念,而是支撑复杂系统设计与持续演化的核心引擎。本文从元模型、模型转换引擎,到协同协议、冲突解决算法,再到AI辅助建模与自…

计算机基础速通--数据结构·图的基础应用二(基础图算法)

如有问题大概率是我的理解比较片面,欢迎评论区或者私信指正。 最近了解到了一个新的改变和提高自己的方法时刻记录不论多小的事情都记下,我目前用了4天,之前感觉一天天忙死但没啥收获,但是记录了之后知道自己的时间花在了哪里&…

设计模式-策略模式 Java

模式概述 策略模式是一种行为型设计模式,它通过定义一系列可互换的算法,并将每个算法封装成独立类,使客户端能够根据需要动态切换算法 简单代码示例 // 1. 抽象策略接口 interface PaymentStrategy {void pay(int amount); }// 2. 具体策略实…

【机器学习深度学习】客观评估训练程度

目录 前言 一、什么是客观评估? 二、客观评估的两大核心方法 1. 判别式评测(Discriminative Evaluation) 2. 生成式评测(Generative Evaluation) 三、为什么客观评估成本更高? 1.训练目标收紧 2.训…

Linux软件编程:线程间通信

目录 一、线程间通信基础 1. 概念 2. 通信基础:共享空间 二、互斥锁(Mutex) 1. 概念 2. 使用流程 3. 函数接口 三、死锁 1. 概念 2. 死锁产生的 4 个必要条件 3. 避免死锁的方法 四、信号量(Semaphore) 1…

【学习笔记】JVM GC回收机制

1.三种基本的垃圾回收算法 1>标记-清除法 ①先将从树根开始,可以到达的对象标记为可达(JVM中的对象们存储为一颗树) ②将没有标记的对象清除掉 缺点:会产生大量内存碎片 2>复制算法(新生代) ①先将a区…

软件的终极:为70亿人编写70亿个不同的软件

这是个脑洞大开的想法。昨天晚上,我在用Claude code帮我写一个小工具,用来管理我本地那些乱七八糟的文档。写着写着,突然意识到一个问题:这个工具完全是按照我的工作习惯定制的——我喜欢用Markdown,习惯把TODO放在文件…

LakeHouse--湖仓一体架构

大家可能发现了,近些年湖仓一体数据架构被提及的频率越来越高。各家大厂也有湖仓一体架构的实践,也有很多公开分享。 那什么是湖仓一体?为什么出现了湖仓一体架构,换言之,它解决了以前数据仓库、数据湖+数仓两层架构所不能解决的什么问题? 本文会从数仓、数据湖依次介绍…

基于FPGA的实时图像处理系统(1)——SDRAM回环测试

SDRAM回环设计 文章目录SDRAM回环设计一、SDRAM简介1、引脚2、内部结构框图3、操作指令二、系统设计三、实现流程1、SDRAM接口2、FIFO设置3、内部SDRAM的控制模块4、其他四、实现效果五、总结六、代码1、top2、sdram_top3、sdram_ctrl一、SDRAM简介 SDRAM英文全称“Synchronou…

一键检测接口是否存活:用 Python/Shell 写个轻量级监控脚本

网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…

优秀工具包-Hutool工具详解

优秀工具包-Hutool工具详解 课程概述 Hutool简介 定位: 小而全的Java工具库,简化开发流程。对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装。 核心优势:零依赖、高性能、中文网页完善。 应用场景:Web开发、数…

《深度解构:构建浏览器端Redis控制台的WebSocket协议核心技术》

Redis作为高性能的内存数据库,其原生客户端多依赖命令行或桌面应用,而浏览器端控制台的缺失,成为制约Web化管理的关键瓶颈,WebSocket协议的出现,打破了HTTP协议单向通信的局限,为浏览器与Redis服务之间建立持久、双向的实时连接提供了可能。本文将从协议本质、交互逻辑、…

Pushgateway安装和部署,以及对应Prometheus调整

目录Pushgateway简介安装验证Prometheus的配置:其它命令Pushgateway简介 Pushgateway 是 Prometheus 生态系统中的一个组件。主要特点是推送而非拉取:Prometheus 默认采用拉取(pull)模式收集指标,但 Pushgateway 允许…

JAVA面试汇总(四)JVM(一)

久违的重新写了一篇面试汇总的,关于JVM的一篇,一共三篇,今天写了第一篇,继续重新学习,重新卷起来,come on baby 1.什么情况下会触发类的初始化? (1)首先是类未被初始化时…

Agent中的memory

rag系列文章目录 文章目录rag系列文章目录前言一、Memory机制作用二、memory分类三、langgraph实践总结前言 众所周知,大模型是无状态的。但是基于大模型的agent一般是有状态的,也就是它有记忆功能。在AI Agent框架中,Memory机制是核心组件之…

AI与IT从业者的未来:替代焦虑还是协作革命?

​​引言:技术渗透与核心命题​​2025年,人工智能技术已从实验室走向产业核心。国务院《关于深入实施“人工智能”行动的意见》推动AI在医疗、制造、金融等领域的规模化落地,全球AI应用用户规模突破2.3亿,生成式AI工具渗透率达16.…

手机版碰一碰发视频系统批量剪辑功能开发,支持OEM贴牌

引言在当今短视频盛行的时代,视频内容的快速生产与分享变得愈发重要。手机版碰一碰发视频系统,借助 NFC 等近场通信技术,实现了便捷的数据交互与视频分享,而在此基础上集成的批量剪辑功能,更是为内容创作者和商家带来了…

Spring AMQP如何通过配置文件避免硬编码实现解耦

在使用Spring AMQP基于注解声明监听者时,可通过抽取常量来避免硬编码:RabbitListener(bindings QueueBinding(exchange Exchange(MQConstant.USER_EXCHANGE),value Queue(MQConstant.USER_QUEUE),key MQConstant.USER_REDIS_BINDING))public void de…

解决zabbix图片中文乱码

要把 Zabbix 前端字体替换为 simkai.ttf(楷体,解决乱码常用),按以下步骤操作:1. 确认 simkai.ttf 路径 先找到系统里 simkai.ttf 字体文件,若没有,可从 Windows 系统(C:\Windows\Fon…

实例分割-动手学计算机视觉13

介绍 实例分割(instance segmentation)的目的是从图像中分割出每个目标实例的掩模(mask)。与语义分割相比,实例分割不但要区分不同的类别,还要区分出同一种类别下的不同目标实例。如图13-1所示 语义分割的结果中,不同的羊对应的标签是一样的…