阅读笔记(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,一经查实,立即删除!

相关文章

CSS学习2

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

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

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

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)可能引起的常见问题,并学会相应的解决方…

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元…

01 JDBC介绍

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

【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…

蓝桥杯--完全二叉树

import java.util.Scanner;import static java.lang.Math.log;public class top9 {//求树的每一层的和public static void main(String [] args){Scanner scannernew Scanner(System.in);int nscanner.nextInt();int [] arrnew int[n];for(int i0;i<n;i){arr[i]scanner.next…

Android Studio实现内容丰富的安卓志愿者平台

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号122 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查看岗位 4.浏览新闻&#xff0c; 5.个人中心…

1、Java虚拟机学习-类的生命周期-加载阶段-以及怎样查看方法区中的对象和堆中对象的关联以及静态变量存在什么地方

类的生命周期 其中连接又可以分为3个小阶段 一、加载阶段 1、加载阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息。 渠道: 2、类加载器在加载完类之后&#xff0c;Java虚拟机会将字节码中的信息保存在内存的方法区中。 方法区是虚拟…

使用Vscode连接云进行前端开发

使用Vscode连接云进行前端开发 1、ssh连接腾讯云 本人使用的是腾讯云。 然后vscode,用最新版&#xff0c;插件选择remote ssh&#xff0c;或者remote xxx下载过来。 然后点击远程资源管理器&#xff0c;选择SSH通道 然后输入命令如下。 ssh rootip然后输入密码 腾讯云应该…

Source Insight使用-添加新的文件类型

目录 遇到的问题解决方法结果 遇到的问题 在Source Insight中我们通常查看.c和.h文件&#xff0c;当使用其查看.java 或者.hal等类型文件时&#xff0c;发现找不到 解决方法 以添加.hal文件为例: 选择Options 下面的File Type Options… 选项。 点击左侧的 “C/C Source F…

哈尔滨工业大学 《材料物理》 笔记-3

原内容请参考哈尔滨工业大学何飞教授&#xff1a;https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》&#xff08;哈尔滨工业大学出版社&#xff09; 量…

YOLOv9改进策略:卷积魔改 | 分布移位卷积(DSConv),提高卷积层的内存效率和速度

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a; YOLOv9如何魔改卷积进一步提升检测精度&#xff1f;提出了一种卷积的变体&#xff0c;称为DSConv&#xff08;分布偏移卷积&#xff09;&#xff0c;其可以容易地替换进标准神经网络体系结构并且实现较低的存…