阅读笔记(BMSB 2018)Video Stitching Based on Optical Flow
参考文献
Xie C, Zhang X, Yang H, et al. Video Stitching Based on Optical Flow[C]//2018 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting (BMSB). IEEE, 2018: 1-5.
摘要
视频拼接在计算机视觉中仍然是一个具有挑战性的问题,特别是对于移动物体周围广泛存在的伪像,包括视差,鬼影等。传统方法通常依赖于单个投影模型,这可能导致重叠区域中移动物体的不准确对应。 在本文中,我们利用重叠区域中的光流场,提供像素密集投影,从而可以大大减少伪影。 然而,由于非重叠区域的投影是根据重叠区域的投影计算的,因此我们建议自动选择左框架或右框架作为参考,以避免当物体在重叠区域和非重叠区域之间的边界上移动时的不一致变换。 实验结果证明了我们的方法优于移动物体周围的最先进的方法。
简介
视频拼接是将包括重叠区域在内的多个视频合并为全景视频的过程[1]。视频拼接的神圣目标是获取尽可能自然的大视图视频。由于在安全监控,虚拟现实和医疗问题分析中的广泛应用,视频拼接已成为近年来的热门话题。
在过去几年中,图像拼接已经成为一个相对成熟的领域。有许多方法可以消除视差[2] [3],削弱曝光差异并减少重影[4]。但与图像拼接相比,视频拼接的工作到目前为止非常有限。马里乌斯等人 [5]提出了一种从阵列摄像机生成实时全景视频的系统。有些方法对视频序列中的所有帧使用一个公共对齐[6]。虽然它可以保持全景视频稳定并节省大量时间,但通常会导致无法消除重影。这种缺点通过APAP方法[2]得到缓解,该方法提出了一种移动直接线性变换来弱化或微调投影扭曲以减少重影。
大多数先前的视频拼接方法在合成阶段[6] [7]中使用缝合切割,当移动物体穿过接缝时,这会导致重影效应。为了克服这个问题,许多方法每帧都会改变接缝的位置,以避免尽可能多地移动通过接缝的物体。此外,提出了一种快速稳定的焊缝选择算法[8],以减少由连续视频帧之间的显着缝隙移动引起的伪影。在[9]中已经提出了在重叠的空间时间体积上使用3D图形切割的缝合缝。如图1所示,即使这些方法做出了一些贡献,它们仍然无法消除严重的鬼影,特别是在移动物体周围。
最终全景视频具有鬼影的原因可以分为两个方面:
- 1)左右帧之间的单个无变形投影模型是不够的。
- 一方面,传统方法总是使用单变换单应法将一帧映射到另一帧。左右帧之间的像素无法获得非常准确的对应关系。
- 另一方面,许多方法对视频序列中的所有帧使用不变的变换单应性,而不考虑视频内容的变化。
- 2)切缝对移动物体有巨大影响。
- 当移动物体穿过接缝时,它们的结构将很容易破裂,或者移动物体周围会出现鬼影。为了解决这些问题,本文提出了一种基于光流的视频拼接方法。光流[10]可以估计两帧之间的位移场。它是2D矢量场,其中每个矢量是位移矢量,表示从第一帧到第二帧的点的移动。
- 为了克服单个投射模型导致相应不准确的缺点,使用光学流场在左右帧之间的重叠区域中实现像素密集投影。换句话说,重叠区域中的每个像素都拥有其典型的投影模型。因此,可以在所提出的方法中获得更准确的对准。此外,在合成阶段,仅需要对相应的像素进行加权以获得最终的全景帧。也就是说,在所提出的方法中不需要缝合切割。我们不需要考虑由连续视频帧之间的戏剧性接缝移位引起的伪影。总而言之,移动物体可以更好地匹配。
本文的其余部分安排如下。所提出的算法在第2节中给出。第3节显示了我们为检验所提出的方法而进行的实验。最后,第4节给出了结论。
算法流程:
实验结果:
由于没有公开的视频拼接基准数据,我们在我们捕获的两组视频上评估所提出的方法。视频数据集由两个具有不同视图的固定摄像机捕获,这些摄像机是同步的。为了证明我们方法的稳健性,我们选择两个不同的场景来涵盖一系列具有挑战性的案例:室内场景和室外场景。室外场景总是宽阔明亮,但室内场景相对狭窄,黑暗。三组视频均由相同类型的相机拍摄,并且在30fps时为720p(1280×720)。由于参考帧可以交替更改,因此全景图有两个视图。我们将具有右视图的帧映射到左视图[14]。在我们的实验中使用了密集的光流场,这是通过重复使用Liuce的代码来计算的。比较方法包括具有固定接缝的OpenCV中的Autostitch基线[14],商业软件VideoStitch Studio [15]和每帧APAP [2]。在我们的实验中,我们使用论文作者提供的代码来获得比较结果。
对于主观性能比较,图4,图5和图6示出了几个对象在重叠区域中移动并且背景保持静止的帧。在图4中,AutoStitch在汽车后部有严重的重影。视差出现在VideoStitch Studio和APAP方法中。在提出的方法中,运动物体的边界非常清楚。在图5中,女孩的腿在AutoStitch方法中被破坏,VideoStitch Studio导致明显的鬼影。在APAP方法中,女孩的腿周围也有很多鬼影。在图6中,女孩的头部在AutoStitch方法中扭曲,VideoStitch Studio中的裙子和鞋子周围有明显的鬼影。在APAP的女孩身上也可以找到鬼影。
很明显,大多数视差和鬼影都在移动物体周围,因为移动物体正在经过缝隙切割或单个投射模型无法非常精确地匹配像素。但是,我们的方法没有这些工件。移动物体的边界相对清晰,不存在视差,这些视差受益于重叠区域之间的精确对应。
结论:
在本文中,我们提出了一种基于光流的新型视频拼接方法,可以进行像素投影。 我们的方法可以使像素的对应性比传统方法更准确。 实验结果表明,我们的方法比最先进的视频实现了更好的全景视频。 我们的算法进一步减少了移动物体周围的重影和视差。 通过我们的方法获得的全景视频也非常自然。将来,我们想加快算法速度。
相关文章:
阅读笔记(BMSB 2018)Video Stitching Based on Optical Flow
参考文献 Xie C, Zhang X, Yang H, et al. Video Stitching Based on Optical Flow[C]//2018 IEEE International Symposium on Broadband Multimedia Systems and Broadcasting (BMSB). IEEE, 2018: 1-5. 摘要 视频拼接在计算机视觉中仍然是一个具有挑战性的问题࿰…...
Ubuntu学习笔记-Ubuntu搭建禅道开源版及基本使用
文章目录 概述一、Ubuntu中安装1.1 复制下载安装包路径1.2 将安装包解压到ubuntu中1.3 启动服务1.4 设置开机自启动 二、禅道服务基本操作2.1 启动,停止,重启,查看服务状态2.2 开放端口2.3 访问和登录禅道 卜相机关 卜三命、相万生࿰…...
《苍穹外卖》知识梳理6-缓存商品,购物车功能
苍穹外卖实操笔记六—缓存商品,购物车功能 一.缓存菜品 可以使用redis进行缓存;另外,在实现缓存套餐时可以使用spring cache提高开发效率; 通过缓存数据,降低访问数据库的次数; 使用的缓存逻辑&#…...
[NSSCTF]-Web:[SWPUCTF 2021 新生赛]easy_sql解析
查看网页 有提示,参数是wllm,并且要我们输入点东西 所以,我们尝试以get方式传入 有回显,但似乎没啥用 从上图看应该是字符型漏洞,单引号字符注入 先查看字段数 /?wllm2order by 3-- 没回显 报错了,说明…...
vue3 codemirror yaml文件编辑器插件
需求:前端编写yaml配置文件 ,检查yaml语法 提供语法高亮 。 默认内容从后端接口获取 显示在前端 , 前端在codemirror 插件中修改文件内容 ,并提交修改 后端将提交的内容写入服务器配置文件中 。 codemirror 通过ref 后期编辑器…...
力扣经典题:环形链表的检测与返回
1.值得背的题 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode *detectCycle(struct ListNode *head) {struct ListNode*fasthead;struct ListNode*slowhead;while(fast!NULL&&fast->…...
【web | CTF】BUUCTF [BJDCTF2020]Easy MD5
天命:好像也挺实用的题目,也是比较经典吧 天命:把php的MD5漏洞都玩了一遍 第一关:MD5绕过 先声明一下:这题的MD5是php,不是mysql的MD5,把我搞迷糊了 一进来题目啥也没有,那么就要看…...
spring boot Mybatis Plus分页
文章目录 Mybatis Plus自带分页和PageHelper有什么区别?Mybatis Plus整合PageHelper分页 springboot自定义拦截器获取分页参数spring boot下配置mybatis-plus分页插件单表分页查询自定义sql分页查询PageHelper 参考 Mybatis Plus自带分页和PageHelper有什么区别&…...
elementui 中 el-date-picker 控制选择当前年之前或者之后的年份
文章目录 需求分析 需求 对 el-date-picker控件做出判断控制 分析 给 el-date-picker 组件添加 picker-options 属性,并绑定对应数据 pickerOptions html <el-form-item label"雨量年份:" prop"date"><el-date-picker …...
GlusterFS:开源分布式文件系统的深度解析与应用场景实践
引言 在当今大数据时代背景下,企业对存储系统的容量、性能和可靠性提出了前所未有的挑战。GlusterFS作为一款开源的、高度可扩展的分布式文件系统,以其独特的无中心元数据设计和灵活的卷管理机制,在众多场景中脱颖而出,为解决大规…...
第6个-滚动动画
Day 6 - Scroll Animation 1. 演示效果 2. 分析思路 布局 所有的内容进行水平垂直居中,可以使用**margin:0 auto;,也可以使用flex**布局: body {background-color: #efedd6;display: flex;flex-direction: column;justify-content: center…...
配置oracle连接管理器(cman)
Oracle Connection Manager是一个软件组件,可以在oracle客户端上指定安装这个组件,Oracle连接管理器代理发送给数据库服务器的请求,在连接管理器中,我们可以通过配置各种规则来控制会话访问。 简而言之,不同于专用连接…...
[N-142]基于springboot,vue停车场管理系统
开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本项目分为普通用户和管理员…...
DAY53:动态规划(买股票的最佳时机)
Leetcode: 121 买卖股票的最佳时机 代码随想录 1、确定下标和含义 dp[i][0]表示当天持有股票所得的最多现金 do[i][1]表示当天不持有股票的最多现金 2、递推公式 (1)如果第i天持有股票即dp[i][0], 那么可以由两个状态推出来 第i-1天就…...
快速实现用户认证:使用Python和Flask配合PyJWT生成与解密Token的教程及示例代码
生成token 与解密 token 和 拦截器 #学习交流 访问 # https://v.iiar.cnimport jwt import datetime from models import XUser from flask import request, jsonify from functools import wrapsSECRET_KEY XPay# 创建token def generate_token(user_id):try:payload {exp:…...
外汇110:外汇做空是什么意思?如何运作?一文读懂
外汇市场允许卖空,就像众多金融市场一样。但什么是卖空呢?如何外汇做空?在本文中,我们将讨论如何做空货币。什么是外汇做空? 外汇做空(Short Selling)是外汇市场上的一种投资方式。它指的是投资…...
【记录】个人博客或笔记中的数学符号设定
note 这里记录个人博客中常用的数学符号数学格式和对应含义 文章目录 note数与数组索引集合线性代数微积分概率和信息论数据与概率分布函数深度学习中的常用数学表达方式 数与数组 α 标量 α 向量 A 矩阵 A 张量 I n n 行 n 列单位矩阵 v w 单词 w 的分布式向量表示 …...
Redis Sentinel工作原理
Redis Sentinel是Redis的高可用性解决方案。它主要用来监控Redis master和slave服务器的运行状态,并在master宕机时自动进行故障转移,即从slave节点中选举出新的master节点,并让其余的slave节点指向新的master节点。 Redis Sentinel工作原理…...
GEE入门篇|遥感专业术语:理论介绍
本章的目的是介绍遥感图像的一些主要特征,以及如何在Earth Engine中检查它们。我们将讨论空间分辨率、时间分辨率和光谱分辨率,以及如何访问重要的图像元数据。将了解到来自不同卫星平台上的几个传感器的图像数据。在本章的学习完成后,您将能…...
react中如何做到中断diff过程和恢复
workLoop是 实现时间切片 和 可中断渲染的核心,简要说明如下: // 并发任务的入口function workLoopConcurrent() {// Perform work until Scheduler asks us to yield// 有任务 & 是否需要中断while (workInProgress ! null && !shouldYiel…...
IDEA 2023.3 配置 JavaWeb 项目完整流程:从新建到打包 War 的保姆级避坑指南
IDEA 2023.3 配置 JavaWeb 项目完整流程:从新建到打包 War 的保姆级避坑指南 作为一名长期使用 IntelliJ IDEA 进行 JavaWeb 开发的工程师,我深知在配置项目时可能遇到的各种"坑"。特别是对于刚接触 IDEA 的新手来说,从项目创建到最…...
Monocle 3实战:5步搞定单细胞marker基因筛选与可视化(R语言版)
Monocle 3实战:5步搞定单细胞marker基因筛选与可视化(R语言版) 单细胞RNA测序技术正在重塑我们对复杂生物系统的理解。在这个数据爆炸的时代,如何从海量的单细胞数据中快速准确地识别关键marker基因,成为每个研究者必须…...
从零到精通:Human Resource Machine 全关卡高效解法与思维跃迁指南
1. 为什么《Human Resource Machine》是程序员的最佳思维训练场 第一次打开《Human Resource Machine》时,我以为这不过是个披着编程外衣的小游戏。但当我卡在"第三年"的关卡整整一个下午后,才意识到这可能是最接近真实编程思维的训练场。这款…...
SpringBoot整合MQTT实战:手把手教你实现设备动态连接与主题订阅管理(附完整源码)
SpringBoot整合MQTT实战:动态连接与主题订阅管理的工程化实现 在物联网项目开发中,设备连接管理和消息路由的灵活性往往是系统设计的难点。想象这样一个场景:你的智慧农业系统需要随时接入新部署的土壤传感器,气象站设备可能因网…...
Qwen3.5-4B-Claude-Opus推理模型基础教程:Temperature/Top-P参数详解
Qwen3.5-4B-Claude-Opus推理模型基础教程:Temperature/Top-P参数详解 1. 模型概述 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个基于Qwen3.5-4B的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。该模型…...
别再死记硬背了!用Python脚本+Modbus Poll工具,5分钟搞懂Modbus功能码怎么用
用PythonModbus Poll实战:5分钟解锁功能码核心逻辑 第一次接触Modbus协议时,那些晦涩的功能码总让我头疼——01H、03H、05H这些十六进制代码就像天书,文档里的理论描述看完就忘。直到我发现用Python脚本配合Modbus Poll工具进行实操测试&…...
别再被ToggleGroup坑了!手把手教你写一个不自动选首项的CustomToggleGroup组件(附完整代码)
深度定制Unity ToggleGroup:打造无默认选中行为的智能组件 引言 在Unity UI开发中,ToggleGroup组件是构建选项卡式界面的常见选择,但许多开发者都遇到过这样的困扰:当ToggleGroup激活时,系统总会自动选中第一个Toggle项…...
SDMatte Web服务灰度发布:新模型版本AB测试与用户反馈闭环机制
SDMatte Web服务灰度发布:新模型版本AB测试与用户反馈闭环机制 1. 引言 在AI图像处理领域,模型迭代更新是持续提升服务质量的必经之路。SDMatte作为一款专注于高质量图像抠图的AI模型,近期完成了新版本SDMatte的研发工作。本文将详细介绍我…...
重新定义数据标注:Label Studio如何让AI训练效率提升300%?
重新定义数据标注:Label Studio如何让AI训练效率提升300%? 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/labe…...
RAG的墓志铭:当AI不再需要检索
上个月读到一篇在 Hacker News 上引发热议的文章——《The RAG Obituary: Killed by Agents, Buried by Context Windows》。作者 Nicolas Bustamante 是金融科技公司 Fintool 的创始人,他在文中抛出了一个颇具争议的观点:RAG(检索增强生成&a…...
