阅读笔记(ICIP2023)Rectangular-Output Image Stitching

news2024/11/18 12:21:14

“矩形输出”图像拼接

Zhou, H., Zhu, Y., Lv, X., Liu, Q., & Zhang, S. (2023, October). Rectangular-Output Image Stitching. In 2023 IEEE International Conference on Image Processing (ICIP) (pp. 2800-2804). IEEE.

0. 摘要

图像拼接的目的是将两幅视场重叠的图像进行拼接,以扩大视场(FoV)。 然而,现有的拼接方法拼接的图像不规则,需要进行矩形化处理,耗时且容易出现不自然的现象。 本文提出了第一个端到端框架--矩形输出深度图像拼接网络(RDISNet),该框架可以将两幅图像直接拼接成一幅标准的矩形图像,同时学习图像对之间的颜色一致性并保持内容的真实性。 为了进一步保留拼接图像中大对象的结构,我们设计了一个扩张的BN-RCU块来扩展RDISNet的感受野,以提取丰富的空间上下文。 在此基础上,设计了一种新的数据合成流水线,构建了第一个矩形输出的深度图像拼接数据集(RDIS-D),实现了图像拼接与矩形化的连接。 实验结果表明,RDISNet的求解质量明显优于对比已有的求解方法。

1. 引言

图像拼接的目的是通过拼接多个具有重叠区域的图像来扩展原始视场(FoV)[1, 2, 3]。然而,将拼接结果应用于其他图像处理任务是困难的,因为结果中缺失的区域对网络特征的识别和梯度的计算有严重影响。因此,现有方法通常使用矩形化方法[4, 5]进行图像后处理,如图1所示,这是既耗时又劳神的。此外,传统的矩形化方法,如裁剪、合成[6, 7]和变形[4],无法达到保留图像内容和真实性的目的。Nie等人提出的最新深度学习方法[5]可以维持线性和非线性结构,但他们使用深度学习模型强行学习初始网格,这导致了网格之间的像素错位和更大尺度上的直线结构畸变。

另一方面,缺乏高质量图像拼接数据集限制了现有基于学习方法的性能[8, 9]。Dai等人[10]使用现有的拼接方法创建伪真实标签(pseudo-GT labels),但这样的图像质量受到拼接方法性能的限制。Song等人[11]在GARLA上模拟真实场景,但对真实世界图像的影响有限。Nie等人[12]使用随机几何变换从自然图像中裁剪子图像作为输入和真实标签对,实现了作为自然存在图像的真实标签,但这无法涵盖自然图像的丰富内容信息。图像拼接中的另一个大挑战是在图像对的重叠区域保持颜色一致性。现有方法[13, 14, 15]通常设计特殊算法或模型来实现全局颜色优化,这增加了拼接方法的复杂性。在本文中,我们提出了一个新的任务,称为矩形输出图像拼接,旨在直接将两幅图像拼接成一个标准的矩形图像,同时保持颜色一致性和真实性。为了解决这些问题,我们设计了一个矩形输出深度图像拼接网络(RDISNet),这是第一次尝试以端到端的方式而不是两阶段设计来解决将图像拼接成矩形输出的问题。为了进一步保持拼接图像中大型物体的结构特征,我们设计了一个扩张的BN-RCU模块来扩展RDISNet的感受野。此外,我们设计了一个新的数据合成流程,并构建了第一个矩形输出深度图像拼接数据集(RDIS-D),包含52000个图像对。我们的贡献总结如下:

- 我们提出了一个矩形输出深度图像拼接网络(RDISNet),这是第一次将图像拼接和矩形化统一为一个端到端的过程,同时学习图像对之间的颜色一致性。
- 我们设计了一个扩张的BN-RCU模块来增加RDISNet的感受野,并保持大型物体的结构特征。
- 我们设计了一个新的数据合成流程,并构建了一个矩形输出深度图像拼接数据集(RDISD),包含52000个图像对。

2. 提出的方法

图2展示了所提出的RDISNet的整体结构。RDISNet由三个组件组成:带有扩张BN-RCU模块的双编码器、局部-全局上下文融合模块和卷积解码器。

2.1. 带有扩张BN-RCU模块的双编码器

如[16, 17]所示,大的感受野对于提供更丰富的信息以理解图片至关重要。因此,我们设计了一个轻量级的双编码器,有效地提取两幅图像的代表性特征。在每个编码器中,我们设计了一个扩张BN-RCU模块来扩大RDISNet的感受野,以在拼接图像中保留大型物体的结构。扩张BN-RCU模块遵循RefineNet[18]中残差转换单元(RCU)的基本结构,它使用级联的残差块进行特征细化。具体来说,我们用扩张卷积替换了RCU中的卷积。此外,我们在块中的卷积和激活函数之间添加了一个批量归一化层,以帮助深度网络快速收敛。扩张BN-RCU模块的总体结构如图3所示。此外,双编码器分别将两个输入图像下采样到较低的分辨率,以节省网络的计算成本。

2.2. 局部-全局上下文融合模块

在以前的方法中,深度学习网络通常用于计算从初始图像到目标图像的单应性矩阵,这是图像拼接的第一步。因此,拼接过程自然地分为两个阶段:对齐和融合。实际上,transformer可以完全胜任这两个阶段,这是设计端到端学习方案的关键。我们采用了视频修复的思想,专注于相邻帧之间的内容融合,并使用FuseFormer[19]作为RDISNet的主干。使用transformer而不是纯粹的卷积神经网络(CNN)[8, 9, 20]是为了利用多头注意力机制来捕获局部-全局上下文,这对于特征融合至关重要。为了解决融合阶段的伪影和错位问题,我们采用了软分割和软合成操作,以实现特征图的精确次标记级别融合。具体来说,我们使用软分割将双编码器的连接输出分割成512长度的标记,这些标记在结合位置编码后输入到主干网络中。软合成在主干的输出上执行,以实现标记和特征图之间的高效映射,帮助在相邻标记之间传播特征。

2.3. 卷积解码器

为了获得矩形拼接图像结果,我们设计了一个简单的卷积解码器,其中包含多个上采样和卷积层。我们采用卷积跟随插值上采样的策略,以减少结果中的棋盘格伪影。最终,特征图被均匀恢复到384×512的大小。.

3. 改进数据集

为了训练一个端到端的模型,我们构建了一个包含多个待拼接图像及其相应拼接矩形真值的数据库,分为两个步骤进行。

3.1. 拼接图像生成

受到[12]的启发,我们设计了一种拼接标签图像生成方法,可以最大化原始图像信息的利用。图4展示了一个例子。这种方法从任何图像数据集中生成一组待拼接的图像(I_1,I_2)和标签拼接图像(I_{label})。在制作我们的数据库过程中,我们使用MS-COCO[21]作为基础数据集。

首先,我们定义了算法中使用的参数,一个是重叠区域比例(shift),即I_2相对于I_1的覆盖率,设置为0.2到0.9之间的随机数。另一个是I_2四个角坐标的扰动量(rho),它影响第二个输入图像的角度变换程度。接下来,我们需要计算生成的输入图像的适当大小(box)。为了充分利用MS-COCO中的图像内容,拼接I_1,I_2的结果应该尽可能覆盖原始图像的宽度,这可以表示为:

(2*box-shift*box)+max(rho_x)=width,\quad (1)

其中,width是原始图像的宽度,rho_x是水平方向上的扰动量。我们计算原始I_2区域和扰动后的I_1dst)之间的单应性矩阵h,使用h将原始图像变形以获得最终的I_2I_1,dst在原始图像中所在的区域是拼接图像。在这个阶段,我们获得了一个包含62400张图像的拼接数据集。

3.2. 真值获取

在第二步中,我们将标签拼接图像输入到矩形化方法[5]中以获得矩形拼接图像。然而,由于算法的学习能力有限,需要进行大量的手动筛选。首先筛选出内容模糊和明显失真的图像。其次,过滤掉带有白边的图像,因为白边很容易误导模型认为是不规则的边界。手动筛选一张图片需要大约5-30秒。最终,保留了52000张图像,包括在不同光照条件下室内外场景下的广泛类别。

4. 实验

4.1. 实现细节

在实验中,我们使用RDIS-D和UDIS-D[22]来评估性能。对于RDIS-D,训练集和测试集按照4:1的比例划分。每个输入图像的分辨率是随机的,每个真值图像的分辨率为384×512。我们的模型通过Adam优化器[23]进行训练,学习率设置为10^{-4}。所有实验都在Ubuntu 20.04、PyTorch 1.8.2和单个GeForce RTX 3090上执行。

4.2. 与两阶段方法的比较

为了验证RDISNet的有效性,我们将其与两阶段SOTA方法[22, 5]进行比较。对于UDIS[22]和DIR[5],我们采用作者提供的预训练模型来评估性能。所有方法都在UDIS-D[22]的测试集上进行比较。从表1可以看出,我们的RDISNet在拼接后接矩形化输出的两阶段方法中表现更好。

我们还对RDISNet与两阶段方法进行了定性比较。如图5所示,RDISNet更好地满足了矩形输出的要求,并且对视差失真和结构保持具有良好的鲁棒性。

图5. 拼接和矩形化质量的视觉比较。第1行:输入。第2行:Nie等人的UDIS[22]。第3行:Nie等人的DIR[5]。第4行:RDISNet。

4.3. 消融研究

我们在RDIS-D上进行了消融研究,以验证所提出的带有扩张BN-RCU块的双编码器的有效性。表2显示了所提出的模块带来了合理的性能提升。使用两个编码器可以更好地提取图像特征。扩张卷积在保持特征图大小不变的情况下扩大了网络的感受野,这提高了基线10.4%的PSNR和15.0%的SSIM。此外,在生成数据集时,我们使用了数据增强方法,允许模型自主学习颜色一致性。如图6所示,如果没有使用数据增强方法,结果中会出现不合适的明亮区域。

图6. 使用数据增强保持颜色一致性的实验比较,左侧是输入,右上角的图像是使用数据增强方法的输出,底部是没有使用数据增强方法的输出。

5. 结论

本文提出了一个端到端的矩形输出深度图像拼接网络(RDISNet),它直接将两张图像拼接成一个标准的矩形图像,同时学习颜色一致性并保持内容的真实性。RDISNet的主要贡献在于设计了带有扩张BN-RCU块的双编码器和局部-全局上下文融合模块。前者有助于在特征提取阶段保存大型物体的结构,后者学习次标记级别的特征融合。此外,我们提出了一种新颖的数据合成流程,并构建了第一个矩形输出深度图像拼接数据集(RDIS-D),用于学习和基准测试图像拼接和矩形化的新的联合任务。实验结果证明了我们提出的方法的有效性,并验证了矩形输出图像拼接的可行性。

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

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

相关文章

GDC期间LayaAir启动全球化战略

3 月 18 日至 3 月 22 日,一年一度的游戏开发者大会(GDC)在美国旧金山举行。在此期间,Layabox宣布LayaAir引擎启动全球扩张战略,这标志着引擎将步入快速发展的新阶段。此举旨在利用公司先进的3D引擎技术,将…

力扣每日一题 2024/3/23 统计桌面上的不同数字

题目描述 用例说明 思路讲解 给定整数n&#xff0c;找出循环十亿天后桌上的数字。可以先通过一天来找找规律。 第一天 n%i1 &#xff08;1<i<n&#xff09;只有n-1符合.加入桌面 第二天(n-1)%i1 &#xff08;1<i<n-1&#xff09;只有n-2符合 加入桌面 依次类推…

RHEL9部署Docker环境

华子目录 Docker引擎架构docker引擎架构示意图执行过程示例 RHEL9上安装Docker1.系统要求2.安装yum-utils工具包3.yum安装docker-ce4.配置docker镜像加速docker拉取镜像的过程配置阿里云镜像仓库重新加载守护进程重启Docker服务 5.拉取并运行hello-world镜像6.测试是否安装成功…

【LabVIEW FPGA入门】FPGA 存储器(Memory)

可以使用内存项将数据存储在FPGA块内存中。内存项以2kb为倍数引用FPGA目标上的块内存。每个内存项引用一个单独的地址或地址块&#xff0c;您可以使用内存项访问FPGA上的所有可用内存。如果需要随机访问存储的数据&#xff0c;请使用内存项。 内存项不消耗FPGA上的逻辑资源&…

stm32平衡车

目录 一.所需材料 二.PID算法&#xff08;简单说明&#xff09; 直立环 速度环 串级PID 三.使用到的外设 1.定时器输出比较-PWM 2.定时器编码器模式 3.编码器读取速度 4.电机驱动函数 5.外部中断 四、小车 调试 一.所需材料 1.陀螺仪MPU6050--读取三轴的加速度…

C++类和对象进阶

CSDN成就一亿技术人 C类的6个默认成员函数(构造)-CSDN博客https://blog.csdn.net/lh11223326/article/details/136917667?spm1001.2014.3001.5502 目录 一.再谈构造函数 1.构造函数体赋值&#xff1a; 在创建对象时&am…

# Maven Bom 的使用

Maven Bom 的使用 文章目录 Maven Bom 的使用概述BOM特点优点缺点 MavenMaven 安装安装步骤settingx.ml常用仓库地址Idea 使用maven常见坑 SpringBoot 项目Bom使用案例项目结构主项目 zerocode-back-servezc-dependency&#xff08;第三方jar管理&#xff09;子模块zc-serve子模…

Qt creator构建DLL库

文章目录 一、构建DLL库二、隐式调用DLL库 一、构建DLL库 Qt creator创建DLL项目。 实现功能函数。 运行代码&#xff0c;debug目录下会有.dll和.lib文件。 二、隐式调用DLL库 QT新建控制台项目。将.lib文件和与之关联的头文件赋值到项目文件夹。 3. 添加头文件和外部依赖库…

目标检测——YOLOR算法解读

论文&#xff1a;YOLOR-You Only Learn One Representation: Unifified Network for Multiple Tasks 作者&#xff1a;Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/abs/2105.04206 代码&#xff1a;https://github.com/WongKinYiu/yolo…

Python界面库Flet(1)介绍和快速使用

Python界面库Flet(1)快速上手使用 Author&#xff1a;Once Day Date&#xff1a;2024年3月19日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: Pyt…

利用sealos安装k8s集群

1. 环境准备 准备三台干净&#xff08;未安装过k8s环境&#xff09;的虚拟机 # 所有的主机都要配置主机名和域名映射 # 设置主机名 hostnamectl set-hostname k8s-master01 # vim /etc/hosts 192.168.59.201 k8s-master01 192.168.59.202 k8s-worker01 192.168.59.203 k8…

飞鸟写作能用吗 #笔记#笔记

飞鸟写作是一个强大的论文写作工具&#xff0c;不仅可以帮助用户高效、准确地完成论文写作&#xff0c;还能帮助用户对论文进行查重和降重。那么&#xff0c;飞鸟写作能用吗&#xff1f;答案是肯定的&#xff0c;飞鸟写作非常好用&#xff01; 首先&#xff0c;飞鸟写作拥有强大…

视频记录历史播放位置效果

简介 每次打开页面视频从上一次的播放位置开始播放 利用lodash库做节流 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

MySQL | 视图

视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 1. 基本使用 1.1. 创建视图 create view 视图名 as select语句&#xff1b; 创建测…

自动驾驶轨迹规划之时空语义走廊(一)

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.摘要 2.系统架构 3.MPDM 4.时空语义走廊 ​4.1 种子生成 4.2 具有语义边界的cube inflation ​4.3 立方体松弛 本文解析了丁文超老师…

JetBrains数据库驱动下载失败解决方法

本方法可通用于解决PyCharm等JetBrains家的IDE下载数据库驱动问题。 在Jet家IDE内连接数据库时&#xff0c;mysql、sqlite等的驱动有部分在 https://download.jetbrains.com 网站上&#xff0c;可能由于网络问题无法访问。 解决方法是修改 JetBrains 路径下的 jdbc.drivers.xm…

计算机基础系列 —— 从 Nand 门、DFF 到 RAM

Memory: The faculty of the brain by which data or information is encoded, stored, and retrieved when needed.It is the retention of information over time for the purpose of influencing future action —— Wikipedia 文中提到的所有实现都可以参考&#xff1a;nan…

Typecho如何去掉/隐藏index.php

Typecho后台设置永久链接后&#xff0c;会在域名后加上index.php&#xff0c;很多人都接受不了。例如如下网址&#xff1a;https://www.jichun29.cn/index.php/archives/37/&#xff0c;但我们希望最终的形式是这样&#xff1a;https://www.jichun29.cn/archives/37.html。那么…

【Oracle】Linux——Centos7安装Oracle12c

安装前拍快照、安装前拍快照、安装前拍快照 目录 安装前拍快照、安装前拍快照、安装前拍快照1.下载Oracle12C安装包2.基本环境搭建2.1创建用户和组2.2创建oralce安装目录,oracle用户分配目录权限2.3上传安装包 3.系统参数配置及服务器设置3.1依赖安装3.2内核参数配置3.3配置完成…

【项目自我反思之vue的组件通信】

为什么子组件不能通过props实时接收父组件修改后动态变化的值 一、现象二、可能的原因1.响应式系统的限制2.异步更新队列3.父组件和子组件的生命周期4.子组件内部对 props 的处理 三、组件通信的几种场景&#xff08;解决方案&#xff09;1.子组件想修改父组件的数据2.子组件传…