阅读笔记(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的对齐误差。

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

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

相关文章

突破编程_C++_C++11新特性(列表初始化)

1 基本概念与使用 C11 引入了许多新特性,其中列表初始化(List Initialization)或统一初始化(Uniform Initialization)是其中之一。列表初始化是一种新的语法,用于初始化对象,可以使得代码更加清…

CSS学习2

自己在工作中总是有一些自动化开发的需求,总是以为自己是有前端基础的,但是一写页面,布局都布不好,真是搞笑,说起来还是基本功不扎实啊,这里在重新复习一下,然后记录一下文档。后边在写两个综合…

C++从零开始(day54)——位图,布隆过滤器

这是关于一个普通双非本科大一学生的C的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于位图, 布隆过滤器相关的知识点 1.位…

【linux】环境变量(进程二)

这里写目录标题 命令行参数:环境变量: 命令行参数: 不谈命令行参数就谈环境变量就是耍流氓。 相信我们在C语言阶段都在main函数里见过参数。 例如int main(int argc, char* argv[]) 这是什么东西呢? 话不多说我们直接打印一下看…

java.lang.ArithmeticException: Rounding necessary错误解决方法

今天使用BigDecimal的setScale方法控制小数位时遇到了java.lang.ArithmeticException: Rounding necessary错误,经查,setScale方法有2中使用方法: 1.只设置小数位 setScale(n),例如: BigDecimal bigDecimal new Bi…

JupyterNotebook 如何切换使用的虚拟环境kernel

在Jupyter Notebook中,如果需要修改使用的虚拟环境Kernel: 首先,需要确保虚拟环境已经安装conda上【conda基本操作】 打开Jupyter Notebook。 在Jupyter Notebook的顶部菜单中,选择 “New” 在弹出的窗口中,列出了…

“JavaScript: void(0)的替代方案有哪些?”

学习目标: 理解javascript:void(0)的工作原理,以及它在前端开发中的作用和用途。掌握javascript:void(0)的正确用法,包括在HTML中使用和在事件处理程序中使用。能够识别javascript:void(0)可能引起的常见问题,并学会相应的解决方…

python 基础语法

python 基础语法 一、基础语法1. 标识符2. python保留字3. 注释分类4. 行与缩进5. 数字(Number)类型6. 字符串(String)7. 空行分割8. 等待用户输入9. 多个语句构成代码组10. import 与 from...import 二、代码概览 一、基础语法 1. 标识符 第一个字符必须是字母表中字母或下划…

numpy的数组深度叠加dstack详解

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 numpy的dstack函数用于沿着第三个维度(深度)将数组堆叠起来。它将多个数组按照深度方向进行堆叠,生成一个新的数组。具体来说,dstack函数会将输入的…

docker部署开源多功能监控系统

HertzBeat 是一个无需 Agent、高性能、易扩展、功能强大的开源实时监控告警系统,无需 Agent、高性能、易扩展、功能强大,由 Dromara 团队开发并开源,能够帮我们轻松监控应用、服务、基础设施等各种资源的运行状况 部署 docker run -d -p 11…

腾讯云服务器按月收费价格表,优惠价格5元一个月起

2024腾讯云服务器多少钱一个月?5元1个月起,腾讯云轻量服务器4核16G12M带宽32元1个月、96元3个月,8核32G22M配置115元一个月、345元3个月,腾讯云轻量应用服务器61元一年折合5元一个月、4核8G12M配置646元15个月、2核4G5M服务器165元…

2024 年 AI 辅助研发趋势-人才培养与教育

2024 年 AI 辅助研发趋势随着人工智能技术的持续发展与突破,2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计,从软件开发到材料科学,AI正逐渐渗透到研发的各个环节,变革着传统的研发模式。在这一背景下&am…

01 JDBC介绍

文章目录 JDBC本质版本使用核心APIDriverDriverManager驱动注册连接对象获取 Connection获取执行对象事务管理 Statement概述 ResultSet概述 JDBC本质 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口各个数据库厂商去实现这套接…

im-system学习

文章目录 LimServerLimServersnakeyaml依赖使用配置类配置文件 私有协议解码MessageDecoderByteBufToMessageUtils 这个很全: IM即时通讯系统[SpringBootNetty]——梳理(总) IO线程模型 Redis 分布式客户端 Redisson 分布式锁快速入门 Lim…

【Week Y2】使用自己的数据集训练YOLO-v5s

Y2-使用自己的数据集训练YOLO-v5s 零、遇到的问题汇总(1)遇到git的import error(2)Error:Dataset not found(3)Error:删除中文后,训练图片路径不存在 一、.xml文件里保存…

框架篇常见面试题

1、Spring框架的单例bean是线程安全的吗? 2、什么是AOP? 3、Spring的事务是如何实现的? 4、Spring事务失效的场景 5、SpringBean的声明周期 6、Spring的循环依赖 7、SpringMVC的执行流程 8、SpringBoot自动配置原理 9、Spring常见注解

Java中的实用类讲解(中篇)

如果想观看更多Java内容 可上我的个人主页关注我,地址子逸爱编程-CSDN博客https://blog.csdn.net/a15766649633?spm1000.2115.3001.5343 使用工具 IntelliJ IDEA Community Edition 2023.1.4 使用语言 Java8 代码能力快速提升小方法,看完代码自己敲…

AV1:帧内预测(一)

​VP9支持10种帧内预测模式,包括8种角度模式和非角度模式DC、TM(True Motion)模式,AV1在其基础上进一步扩展,AV1帧内预测角度模式更细化,同时新增了部分非角度模式。 扩展的角度模式 AV1在VP9角度模式的基础上进一步扩展&#xf…

CSharp的lambda表达式匿名类扩展方法

c#的lamba表达式 之前已经写过一些关于委托还有事件的文章,今天就来介绍一下lambda表达式。 首先定义需要的函数以及委托 { public delegate void DoNothingDelegate(); public delegate void StudyDelegate(int id, string name);private void DoNothing() {Cons…

P1678 烦恼的高考志愿(二分查找)

题目描述 现有 m 所学校,每所学校预计分数线是 ai​。有 n 位学生,估分分别为 bi​。 根据 n 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分…