OpenCV图像注册模块

  • 操作系统: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 来配准一对图像。

相关推荐
AI服务老曹10 小时前
GB28181接入AI视频分析常见问题与排查清单:从国标平台注册、通道同步到心跳断线的工程实践
人工智能·音视频
mounter62510 小时前
BPF 的进化史:从网络过滤器到 AI 时代的 Linux 核心引擎
linux·网络·人工智能·ebpf·linux kernel·kernel
名不经传的养虾人10 小时前
从0到1:企业级AI项目迭代日记 Vol.65|最危险的故障不是崩溃,是悄悄换掉了正确答案
数据库·人工智能·ai编程·ai-agent·企业ai
程序员佳佳10 小时前
模型网关灰度不是调百分比:把放量、观测和回滚做成账本
java·数据库·人工智能·redis·gpt·aigc·embedding
CryptoPP10 小时前
BSE股票K线数据接入实战:从接口调用到前端图表展示
大数据·前端·网络·人工智能·websocket·网络协议
Ulyanov10 小时前
雷达导引头信号模型与脉冲压缩技术:从理论到工程实现
人工智能·计算机视觉·目标跟踪
JasonMa121010 小时前
Agent平台工程蓝图_场景逻辑规范(国际对标增强总纲)中
人工智能
望易10 小时前
相变外驱定理理论
人工智能·架构
JasonMa121010 小时前
第三部分:工具与多模态能力扩展
人工智能
码农阿强10 小时前
GPT-5.6 Sol/Terra/Luna 三模型全量上架StartAPI|分层选型+可运行调用代码实战
大数据·人工智能·gpt·ai·aigc