阅读笔记(ICIP2023)Rectangular-Output Image Stitching
“矩形输出”图像拼接
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展示了一个例子。这种方法从任何图像数据集中生成一组待拼接的图像()和标签拼接图像(
)。在制作我们的数据库过程中,我们使用MS-COCO[21]作为基础数据集。
首先,我们定义了算法中使用的参数,一个是重叠区域比例(),即
相对于
的覆盖率,设置为0.2到0.9之间的随机数。另一个是
四个角坐标的扰动量(
),它影响第二个输入图像的角度变换程度。接下来,我们需要计算生成的输入图像的适当大小(
)。为了充分利用MS-COCO中的图像内容,拼接
的结果应该尽可能覆盖原始图像的宽度,这可以表示为:
其中,是原始图像的宽度,
是水平方向上的扰动量。我们计算原始
区域和扰动后的
(
)之间的单应性矩阵
,使用h将原始图像变形以获得最终的
。
在原始图像中所在的区域是拼接图像。在这个阶段,我们获得了一个包含62400张图像的拼接数据集。
3.2. 真值获取
在第二步中,我们将标签拼接图像输入到矩形化方法[5]中以获得矩形拼接图像。然而,由于算法的学习能力有限,需要进行大量的手动筛选。首先筛选出内容模糊和明显失真的图像。其次,过滤掉带有白边的图像,因为白边很容易误导模型认为是不规则的边界。手动筛选一张图片需要大约5-30秒。最终,保留了52000张图像,包括在不同光照条件下室内外场景下的广泛类别。
4. 实验
4.1. 实现细节
在实验中,我们使用RDIS-D和UDIS-D[22]来评估性能。对于RDIS-D,训练集和测试集按照4:1的比例划分。每个输入图像的分辨率是随机的,每个真值图像的分辨率为384×512。我们的模型通过Adam优化器[23]进行训练,学习率设置为。所有实验都在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),用于学习和基准测试图像拼接和矩形化的新的联合任务。实验结果证明了我们提出的方法的有效性,并验证了矩形输出图像拼接的可行性。
相关文章:

阅读笔记(ICIP2023)Rectangular-Output Image Stitching
“矩形输出”图像拼接 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. 摘要 图像拼接的目的是将两幅视场重叠的…...

就业班 第二阶段 2401--3.26 day6 Shell初识 连接vscode
远程连接vs_code可能出现的问题 C:\Users\41703\.ssh 验证远程主机的身份,如果连不上vscode,可以尝试删除这里面的公钥代码。 重新安装那个扩展,排除扩展本身的问题 谁连过我,并操作了什么 curl https://gitea.beyourself.org.c…...

碳课堂|什么是碳资产?企业如何进行碳资产管理?
碳资产是绿色资产的重要类别,在全球气候变化日益严峻的背景下备受关注。在“双碳”目标下,碳资产管理是企业层面实现碳减排目标和低碳转型的关键。 一、什么是碳资产? 碳资产是以碳减排为基础的资产,是企业为了积极应对气候变化&…...

如何使用 ChatGPT 进行编码和编程
文章目录 一、初学者1.1 生成代码片段1.2 解释功能 二、自信的初学者2.1 修复错误2.2 完成部分代码 三、中级水平3.1 研究库3.2 改进旧代码 四、进阶水平4.1 比较示例代码4.2 编程语言之间的翻译 五、专业人士5.1 模拟 Linux 终端 总结 大多数程序员都知道,ChatGPT …...
学习java第二十四天
spring框架中有哪些不同类型的事件 Spring 提供了以下5种标准的事件: 上下文更新事件(ContextRefreshedEvent):在调用 ConfigurableApplicationContext 接口中的refresh方法时被触发。 上下文开始事件(ContextStart…...

中小型集群部署,Docker Swarm(集群)使用及部署应用介绍
1、Docker Swarm简介 说到集群,第一个想到的就是k8s,但docker官方也提供了集群和编排解决方案,它允许你将多个 Docker 主机连接在一起,形成一个“群集”(Swarm),并可以在这个 Swarm 上运行和管…...
gateway做负载均衡
在Spring Cloud中,Gateway可以通过配置文件来实现负载均衡。以下是一个简单的配置示例,它演示了如何将请求代理到名为service-instance的服务的两个不同实例。 spring:cloud:gateway:routes:- id: service-instance-routeuri: lb://service-instancepre…...
pytorch中的torch.hub.load()
pytorch提供了torch.hub.load()函数加载模型,该方法可以从网上直接下载模型或是从本地加载模型。官方文档 torch.hub.load(repo_or_dir, model, *args, sourcegithub, trust_repoNone, force_reloadFalse, verboseTrue, skip_validationFalse, **kwargs)参数说明&a…...

R语言学习——Rstudio软件
R语言免费但有点难上手,是数据挖掘的入门级别语言,拥有顶级的可视化功能。 优点: 1统计分析(可以实现各种分析方法)和计算(有很多函数) 2强大的绘图功能 3扩展包多,适合领域多 …...
触发器的工艺结构原理及选型参数总结
🏡《总目录》 目录 1,概述2,工作原理3,结构特点4,工艺流程4.1,掩膜制作4.2,晶片生长4.3,晶片切割4.4,晶片清洗4.5,掩膜光刻4.6,金属沉积5,选型参数5.1,触发类型5.2,触发频率...

Hana数据库 No columns were bound prior to calling SQLFetch or SQLFetchScroll
在php调用hana数据库的一个sql时报错了,查表结构的sql: select * from sys.table_columns where table_name VBAP SQLSTATE[SL009]: <<Unknown error>>: 0 [unixODBC][Driver Manager]No columns were bound prior to calling SQLFetch …...
DevOps是什么
DevOps 是一种将软件开发 (Dev) 和 IT运维 (Ops) 结合起来的实践、文化和哲学,旨在缩短系统开发生命周期,提供高质量的软件持续交付。它涉及多个关键实践和工具,其核心目的是加强开发和运维团队之间的协作和通信。以下是构成DevOps的一些重要…...

windows下的vscode + opencv4.8.0(C++) 配置
1.添加环境变量 D:\mingw64\bin 2.安装vscode 3.下载opencv 4.8.0 4.程序引用第三方库(opencv为例) 打开CMakeLists.txt,引入头文件,使用include_directories 加入头文件所在目录。静态链接库link_directories # 头文件 include_directories(D:/ope…...
微信小程序之多视频暂停播放,超出可视区域停止播放视频在自定义组件中实现案例
项目页面存在多个视频时,只播放视频可见范围内单个视频播放的解决方案 QQ录屏20240326175303 在自定义组件中无onPageScroll(e)监听页面滚动的函数所以在自定义组件中用<scroll-view>标签包裹所有组件(以下为WXML页面源码) <scroll…...
Java 加载外部 Jar 中的类并通过反射调用类中的方法
目录 问题 类加载器 获取外部 jar 包中的类以及方法 调用外部 jar 包中的方法 问题 工作中遇到一个需求,客户端将第三方的 jar 包上传到服务器中,系统需要解析出上传的 jar 中所有类以及类下的方法(方法名,方法输入参数类型&…...

Arduino+ESP8266+华为云物联网平台实现智能开关
前言 最近在做一个物联网项目,涉及到智能开关的开发。目前已经实现简单的TCP通信远程控制,但是考虑到后期的设备管理以及设备通信所需要的技术和服务器的维护成本,我决定将设备接入云平台。本文将详细阐述如何利用华为云的物联网平台&#x…...

使用 python 拆分 excel 文件
文章目录 1、安装虚拟环境(在特定文件夹内)2、脚本 split.sh3、运行脚本(在特定文件夹内)4、结果 1、安装虚拟环境(在特定文件夹内) brew install python3 xcode-select --install python3 -m venv my_pan…...
uniapp小程序中onShareAppMessage(OBJECT)实现带参数的分享功能
一、引言 小程序中用户点击分享后,在 js 中定义 onShareAppMessage 处理函数(和 onLoad 等生命周期函数同级),设置该页面的分享信息。 用户点击分享按钮的时候会调用。这个分享按钮可能是小程序右上角原生菜单自带的分享按钮&…...

5个免费的3D钣金CAD软件
如果你正在设计简单的折叠钣金零件,则只需设计一些具有圆角半径的法兰:一个简单的钣金模块。 首先,你可以采用老式方式绘图并以 2D 方式完成所有操作。 许多传统制造商仍在使用 2D DWG 和 DXF 图纸。 因此,你很有可能只需快速起草…...

3.26学习总结
java 实例变量和局部变量 实例变量是记录这个类中对象的特点的每一个对象的实例变量都可以不同(例如名字,性别等),其中一个对象的实例变量改变不会影响其他的变量. 类变量是一种特殊的实例变量,他的特殊在于所有的对象的类变量都是相同的,当一个对象改变了类变量那么所有对象…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...