阅读笔记(CVPR2020)Warping Residual Based Image Stitching for Large Parallax

基于变形残差的大视差图像拼接

K. -Y. Lee and J. -Y. Sim, "Warping Residual Based Image Stitching for Large Parallax," 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), Seattle, WA, USA, 2020, pp. 8195-8203, doi: 10.1109/CVPR42600.2020.00822.

0. 摘要

图像拼接技术将在不同观看位置处捕获的两个图像对齐到单个较宽图像上。 当捕获的3D场景不是平面的并且相机基线大时,两个图像表现出视差,其中场景结构的相对位置与每个视图非常不同。 现有的图像拼接方法往往无法对视差较大的图像进行拼接。 为此,提出了一种基于变形残差策略的图像拼接算法。 我们首先估计多个单应性,并找到它们在两个图像之间的内部特征匹配。 然后,我们评估每个特征匹配相对于多个单应性的变形残差。 为了消除视差伪影,我们将输入图像划分为超像素,并根据最优单应性自适应地对每个超像素进行变形,该最优单应性通过最小化由变形残差加权的特征匹配误差来计算。 实验证明,在视差较大的情况下,该算法能够得到更加精确的拼接结果,在定性和定量上均优于现有的方法。

1. 引言

图像拼接是计算机视觉应用中的一项重要技术,它将从不同观察位置捕获的多幅图像对齐到一个共同的坐标域上,以生成具有更宽视场的图像。 最近,已经发布了许多使用图像拼接技术的商业产品,例如360°全景相机和环绕视图监视系统。 此外,还提供了图像拼接软件产品来合成多个图像,例如, Adobe Photoshop PhotoshopTM和Autostitch [2]。

大多数传统的图像拼接方法遵循类似的过程[19]。 首先从一对输入图像中检测特征点,并且在图像之间找到它们的对应匹配。 然后,通过使用检测到的特征匹配来估计参数图像变形模型,其将目标图像变形到参考图像域上。 最后,通过确定变形后的目标图像与参考图像重叠区域的像素值,合成拼接后的输出图像。

图像拼接中最关键和最具挑战性的步骤之一是图像变形。 单应性是一种简单而传统的图像变形模型,它描述了基于平面场景假设的参数平面变换[9]。 然而,当捕获的场景不是平面的并且包括在不同场景深度处的前景对象并且相机基线较大时,我们观察到视差现象,其中对象的相对位置不同于两个图像。 在这样的情况下,使用诸如单应性的平面变换模型的拼接结果经常在对象边界附近呈现视差伪影。

为了减轻图像拼接的视差伪影,已经提出了自适应变形算法,其将图像划分为规则的网格单元或像素,并且通过不同的模型的变形分区[7,10,11,15,22,24]。 应用能量最小化框架来优化自适应变形,以防止变形图像中的失真[11,15,24]。 提出的局部配准技术,其仅对准特定图像区域,同时基于接缝切割方法隐藏其他未对齐区域中的伪影[8,14,23]。 然而,对于具有大视差的图像,在一个图像中的一组相邻像素可能不具有在另一个图像中彼此相邻的对应像素,这在通过现有的基于平滑变形的方法[7,11,15,22,24]获得的合成拼接图像中导致严重的视差伪影。 已经提出的一种视频拼接方法,该方法基于核线几何[10]来解决大视差问题,然而,由于缺乏视频序列的时间运动信息,该方法不能直接应用于图像拼接。

在本文中,针对大视差图像,我们提出了一种基于变形残差的拼接算法。 由于视差现象通常发生在物体边界附近,因此我们首先将输入图像划分为超像素,并自适应地变形超像素。 我们从两幅图像中检测特征点,并找到它们的对应匹配,然后用它们来估计多个单应性及其关联的内点匹配。 我们使用特征匹配为每个超像素找到最优单应性,其中每个特征点的贡献根据变形残差自适应地计算。 当通过强调位于具有相似场景深度的区域上的特征点来变形超像素时,针对给定超像素的变形残差减轻了视差伪影。此外,我们使用相邻超像素的单应性来改进每个超像素处的初始估计的单应性,以实现可靠的变形。 实验结果表明,所提算法能够精确对齐视差较大的图像,在定性和定量上均优于传统的图像拼接方法。

本文的其余部分组织如下。 第二节介绍了图像拼接的相关工作。 第三节提出了一种新的变形残差概念。 第4节描述了图像变形算法。 第5节给出了实验结果。 第六节是论文的总结。

2. 相关工作

自适应变形方法。Gao等人提出了一种双单应性方法,该方法根据特征点的位置自适应地混合远平面估计的单应性和地平面估计的单应性[7]。 Lin等人计算了一个空间变化的仿射变换,其中通过最小化成本函数将初始估计的全局变换细化为最佳变换[15]。 Zaragoza等人将输入图像划分为规则网格单元,并通过移动直接线性变换(MDLT)[22]估计每个单元的最佳单应性,该变换在计算对齐误差时将更多权重分配给空间上更接近目标单元的特征点。 Zhang等人采用尺度保持项和线保持项来最小化变形图像中的失真[24]。 Li等人通过使用基于薄板样条[18]和径向基函数[11]的分析变形函数来近似匹配点的单应性引起的投影偏差。 Lee和Sim提出了一种基于对极几何的大视差视频拼接算法[10]。 注意,[7]不处理具有两个以上平面结构的场景。其他方法[11,15,22,24]可以变形由多个平面区域组成的背景,然而,它们通常假设具有小视差的连续场景深度,并且通常无法对齐具有大视差的前景对象,这些前景对象具有与背景的突然深度变化。 此外,[10]需要前景物体的时间运动信息,这对于图像拼接是不可用的。 相反,所提出的方法可以变形的背景和多个前景物体在不同的场景深度之间的两个大视差的图像。

保形变形。虽然两幅图像之间的重叠区域通过使用有效的特征匹配很好地对齐,但非重叠区域通常表现出严重的透视失真。 Chang等人分别将单应性变换应用于重叠区域,并将相似性变换应用于非重叠区域[3]。 Lin等人提出了一种单应性线性化方法,该方法将重叠区域的变形平滑地外推到非重叠区域[13]。 Chen等人估计了每个图像的适当尺度和旋转,并设计了一个基于全局相似性先验的变形估计目标函数[4]。 Li等人提出了一种准单应性变形,通过线性缩放单应性的水平分量来解决[3]的单应性变换和相似性变换之间的线弯曲问题[12]。 注意,保形变形通常被设计为减轻两幅图像之间的非重叠区域中的透视失真,而本文的主要目的是对齐具有大视差的两幅图像之间的重叠区域中的共同视觉内容。

基于接缝的方法。Gao等人为单应性定义了一个接缝切割损失,用于测量变形的目标图像和参考图像之间的不连续性[8]。他们使用RANSAC [6]估计了多个单应性,并选择了具有最小接缝切割损失的最佳单应性。 Zhang等人估计了仅对齐某个图像区域的局部单应性,并应用内容保持扭曲(CPW)[16]来进一步细化对齐[23]。 通过接缝切割方法隐藏了错位伪影。 Lin等人通过使用迭代的变形和接缝估计[14]逐渐改善了拼接性能。 基于接缝的方法通常仅对准某些局部图像区域以提供视觉上令人满意的图像拼接结果,这在整个图像区域上可能不是几何上精确的。

3. 大视差的变形残差

我们回顾了MDLT [22]的数学框架,它是一种自适应图像变形模型之一。 然后,我们引入了一个新的变形残差的概念,在计算变形超像素的对齐误差时,将位于相似场景深度的特征点分配给给定的超像素的高权值。

3.1 移动直接线性变换

X是3D空间中平面\pi上的真实世界点,并且设x=[x_1,x_2,1]^T,y=[y_1,y_2]^T分别是投影到两个图像I,J上的X的像素。 两个像素之间的关系由平面\pi诱导的3\times 3单应矩阵H描述。

y\sim Hx,\quad (1)

其中,\sim表示按比例的相等。 由于HxyJ中的两个位置相同,我们有[22]

0_{3\times 1}=y\times Hx=\begin{pmatrix} 0_{1\times 3} & -x^T &y_2x^T \\ x^T& 0_{1\times 3} &-y_1x^T \\ -y_2x^T & y_1x^T &0_{1\times 3} \end{pmatrix}h,\quad (2)

其中,h是通过对H的行进行向量化而获得的。 当x,y不是从\pi上的同一场景点投影,并且I,J之间的相机基线不够小时,公式(2)不成立,并且范数y × Hx可以被认为是I,J的对齐误差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/470703.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Grok-1:参数量最大的开源大语言模型

Grok-1:参数量最大的开源大语言模型 项目简介 由马斯克领衔的大型模型企业 xAI 正式公布了一项重要动作:开源了一个拥有 3140 亿参数的混合专家模型(MoE)「Grok-1」,连同其模型权重和网络架构一并公开。 此举将 Gro…

行业模板|DataEase制造行业大屏模板推荐

DataEase开源数据可视化分析平台于2022年6月发布模板市场(https://templates-de.fit2cloud.com),并于2024年1月新增适用于DataEase v2版本的模板分类。模板市场旨在为DataEase用户提供专业、美观、拿来即用的大屏模板,方便用户根据…

智能合约语言(eDSL)—— 使用rust实现eDSL的原理

为理解rust变成eDSL的实现原理,我们需要简单了解元编程与宏的概念,元编程被描述成一种计算机程序可以将代码看待成数据的能力,使用元编程技术编写的程序能够像普通程序在运行时更新、替换变量那样操作更新、替换代码。宏在 Rust 语言中是一种功能&#x…

Nginx可视化管理实战攻略:提升管理效率新途径

nginx-proxy-manager 是一个反向代理管理系统,它基于 Nginx,具有漂亮干净的 Web UI。还可以获得受信任的 SSL 证书,并通过单独的配置、自定义和入侵保护来管理多个代理。 特征 基于 Tabler(https://tabler.github.io/) 的美观安全的管理界面…

代码学习记录23--回溯算法第四天

随想录日记part23 t i m e : time: time: 2024.03.19 主要内容:回溯算法在代码学习中尤其重要,所以今天继续加深对其的理解:1:复原IP地址 ;2.子集 ;3.子集II 93.复原IP地…

飞天使-k8s知识点26-kubernetes温故知新1-pod

文章目录 创建一个podpod的启动命令和参数更改pod 镜像拉取策略 pod 的三种探针pod 探针的实现方式prestop 和 prestart 创建一个pod apiVersion: v1 # 必选,API 的版本号 kind: Pod # 必选,类型 Pod metadata: # 必选,元数据name: nginx # …

学习总结1

算法 这两天对搜索(主要是dfs)进行了复习,写了四道题目. 解题思路 这道题我用dfs进行解题,这道题比起其他的只多了一个Z轴也就是多了两个方向. 代码 #include <string.h> #include <stdio.h> char g[31][31][31]; int ne[7][3]{{1,0,0},{-1,0,0},{0,1,0},{0,-1…

Java 设计模式系列:行为型-状态模式

简介 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;允许一个对象在其内部状态改变时改变其行为。状态模式中类的行为是由状态决定的&#xff0c;在不同的状态下有不同的行为。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂…

[Halcon学习笔记]标定常用的Halcon标定板规格及说明

1、介绍 大多数标定的要求都是以实心圆或方格来作为标志点&#xff0c;所以一般的标定板为棋盘格或矩阵圆点图&#xff0c;高精度的相机标定过程中&#xff0c;大多是以比较明确的特征点来作为参考&#xff0c;所以通过识别标定板的圆形&#xff0c;拟合出精确的中心位置&…

力扣--最小覆盖子串--双端队列+滑动窗口

滑动窗口思路&#xff08;双端队列实现&#xff09;&#xff1a; 可以参考一下&#xff1a;力扣hot8---滑动窗口-CSDN博客以及力扣hot9---滑动窗口-CSDN博客。 使用滑动窗口有以下几个步骤&#xff1a;初始化双端队列&#xff08;将s的前t_len个元素入队&#xff0c;此时检验是…

1.IP复习课作业

1.IP复习课作业 1.为路由器各接口配置IP以及环回 R1 R2 R3 R4 R5 R6 2.配置dhcp为主机下发IP PC1 PC2 3.配置静态路由 R1 R2 R3 R4 R5 PC端通信 4.防止成环 R1 R2、4、5一样 5.修改优先级 R1 R2、3、4、5同样进行修改 6.均可访问R6环回 R5配置easy IP R1 ping R6环回 PC ping R…

Mac版Jmeter安装与使用模拟分布式环境

Mac版Jmeter安装与使用&模拟分布式环境 1 安装Jmeter 1.1 安装Java环境 国内镜像地址&#xff1a;https://repo.huaweicloud.com/java/jdk/11.0.29/jdk-11.0.2_osx-x64_bin.dmg 下载dmg后&#xff0c;双击进行安装。 配置环境变量&#xff1a; # 1 打开环境变量配置文件…

【leetcode热题】 地下城游戏

恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0…

前端面试02(JS)

文章目录 前端面试02&#xff08;JS&#xff09;1、js的组成2、js内置对象3、操作数组的方法4、数据类型的检测方法5、闭包是什么6、前端内存泄漏7、事件委托8、基本数据类型和引用数据类型9、原型链10、JS如何实现继承 &#x1f389;写在最后 前端面试02&#xff08;JS&#x…

AI短视频制作一本通:文本生成视频、图片生成视频、视频生成视频

第一部分&#xff1a;文本生成视频 1. 文本生成视频概述 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;视频制作领域也迎来了创新的浪潮。文本生成视频是其中的一项令人激动的进展&#xff0c;它利用自然语言处理技术将文本内容转化为视频。这项技术在广…

element-ui出的treeselect下拉树组件基本使用,以及只能选择叶子节点的功能,给节点添加按钮操作

element-ui出的treeselect下拉树组件基本使用&#xff1a;Vue通用下拉树组件riophae/vue-treeselect的使用-CSDN博客 vue-treeselect 问题合集、好用的树形下拉组件&#xff08;vue-treeselect的使用、相关问题解决方案&#xff09;-CSDN博客 需求1&#xff1a;treeselect下拉…

Bert的一些理解

Bert的一些理解 Masked Language Model (MLM)Next Sentence Prediction (NSP)总结 参考链接1 参考链接2 BERT 模型的训练数据集通常是以预训练任务的形式来构建的&#xff0c;其中包括两个主要任务&#xff1a;Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。…

【Python】Miniconda+Vscode+Jupyter 环境搭建

1.安装 Miniconda Conda 是一个开源的包管理和环境管理系统&#xff0c;可在 Windows、macOS 和 Linux 上运行&#xff0c;它可以快速安装、运行和更新软件包及其依赖项。使用 Conda&#xff0c;我们可以轻松在本地计算机上创建、保存、加载和切换不同的环境 Conda 分为 Anaco…

MyBatis记录

目录 什么是MyBatis MyBatis的优点和缺点 #{}和${}的区别 Mybatis是如何进行分页的&#xff0c;分页插件的原理 Mybatis是如何将sql执行结果封装为目标对象并返回的 MyBatis实现一对一有几种方式 Mybatis设计模式 什么是MyBatis &#xff08;1&#xff09;Mybatis是一个…

【鸿蒙系统】 ---Harmony 鸿蒙编译构建指导(一)

&#x1f48c; 所属专栏&#xff1a;【鸿蒙系统】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢…