视频拼接融合产品的产品与架构设计(一)

news2024/10/5 19:21:19

1视频拼接产品概述

将多达8个视频拼接在一起,拼成上帝视角的大图,并且可以共享最终生成的画面。

1.1 三维方案

三维方案是我在晚上思考的时候无意想到,这种方案应该是最接近事实的方案,多个画面应该是在三个维度,x,y,z 上面进行缩放,平移,旋转吗,可以形成柱面立体的图像,而底座的平面不一定是平面,有可能是一个曲面。不过这个方案虽然好,难度却比较大, 自己做一个三维引擎还是用unity,ue等工具直接编辑,这个难度在于掌握unity工具的一般不具备视频概念,因此我做了一个比较劣质的三维工具,可以在三维中显示视频,也做了一些文字,天空盒,点击选择等等的功能,思考到后面,有一个问题没有解决,就是三维合成二维图像的问题,多个视频在三维空间中不能直接拼接成二维的图像,压缩成jpeg,h264,h265等的流进行发送,存储是这个拼接工具的最直接的功能,三维非常直观,但是要达到这种地步还是要做大量的算法工作,因此暂时停一下,使用二维先解决问题。

1.2 二维平面方案

2 界面问题

界面是最大的问题,不像是一个服务器,本身是逻辑的组合,而界面比较麻烦的是:设计问题,如何做到设计比较符合常理?
首先我设计了一个基本的界面,如下图所示:
在这里插入图片描述

它是一个带有尺度刻度的界面,可以加载树来展示所有的实时摄像头,文件也可以。这个界面首先是利于观察,所有的画面展示出来,用于人眼可以看清楚所有的综合画面是什么样子的。

2.1 画面调整

那么,每个小窗口画面都是必须能要改变大小的,意味着画面可以随时调整大小,

3 算法

里面的算法比较多
在这里插入图片描述
首先我考虑到的是画面调整完后,有可能需要恢复到原始状态,但是畸形矫正不用恢复,所以畸形矫正应该是一个选项,要么选取(勾上),要不未选(没有勾),很有可能有的画面不需要矫正。

3.2 透视变换和裁剪

裁剪是必然的,那么像透视变换和仿射变化,以及单应矩阵可能先做,透视变化和仿射变化我设计了一个界面去调整
在这里插入图片描述
首先要选择两个画面,进行算法,在这里插入图片描述
如透视变化,这时候画面会取到最后一帧,出现1,2,3,4 四个方块,调整方块的位置则可以改变矩阵,从而生成新画面,同时这个必须记录下来,确定以后以便于主界面在渲染的时候进行透视变换。

3.3 移动

移动和记录移动的像素,进行记录
在这里插入图片描述

如上图所示,由于摄像头的角度,偏移,高度豆可能不仅相同,所以这个必须经过画面的裁剪移动来进行图片帧对齐。
在这里插入图片描述
除了窗口的拖动,单帧在窗口里是可以使用键盘移动的,使用w a s d 键盘来移动帧,符合很多人游戏的上手。不过这样留下了黑边,所以必须进行裁剪
在这里插入图片描述

3.4裁剪

因此裁剪框也是一个需要的功能,

3.5 透视变换

透视变换是一个最最核心的功能。代替那些orb,shft 特征变换

3.6 鱼眼矫正

上面的图片经过矫正以后,图像被拉直,同时,部分画面被切割掉了
在这里插入图片描述

4 关于特征

特征抓取是网上最多的人写过很多文章,这一部分就是使用ORB 特征,和 SIFT 等特征抓取匹配,然后再拼接,生成单应矩阵,这种方案不可取,是最差的方案,因为在实际的项目中,你连特征都抓不到,根本自动化不了,所以尽早放弃这种想法,除了一种情况例外,硬件是自己做的,自己知道自己的单应矩阵。

5 真正可靠的做法

把多路摄像头接入画面,缩小,观察,进行矫正,缩放,变换,裁切,放大,记录,这就是商业上做的做法
在这里插入图片描述

5.1 数字放大技术

这个太重要了,就算使用gpu 速度也没有那么快,那么尽量使用小的图,然后放大,读者会说,那不是失真了么。不会,这要用上真正的数字放大技术
下面是原图:模糊了
在这里插入图片描述
下面是原图的矫正:
在这里插入图片描述
下面左边是原图放大4倍,使用双线性差值,右边是数字放大技术4倍,就是这么的离谱,就是上面的小图放大的,出家人不打诳语。
在这里插入图片描述

6 架构设计

6.1 插件式编程

所有的算法编写成为插件

6.2 gpu编程

使用glsl 和 cuda 两种语言

6.3 放小接入,放大接出

这个步骤太重要了 ,一切为了速度

6.4 硬件盒子

硬件分为两种,我们考虑了
1 瑞芯微国产硬件的布局
2 jetson nano

6.5 输出

1 输出为mp4文件
2 输出为内存共享,为了给AI 输出,将合成的图像给AI以后,本来的跨境追踪reid好做了很多,是不是?
在这里插入图片描述

3 输出为rtmp ,rtsp 服务

等我第二遍进行代码上的讲解

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

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

相关文章

智慧产业园区管理系统主要包含哪些

智能设备管理 本文介绍的是智慧产业园区管理系统中的智能设备管理。智能设备管理是智慧产业园区管理系统中的重要组成部分,它可以为企业提供高效、智能化的设备管理服务。通过智能设备管理系统,企业可以对设备进行实时监控和在线运维,及时发…

JS知识点汇总(五)--执行上下文

1. JavaScript中执行上下文和执行栈是什么? 1、执行上下文 执行上下文是一种对Javascript代码执行环境的抽象概念,也就是说只要有Javascript代码运行,那么它就一定是运行在执行上下文中 执行上下文的类型分为三种: 全局执行上…

2023年智慧水利综合解决方案,数字孪生,领导驾驶舱,水文监测

导读:原文《2023年智慧水利综合解决方案》共56页PPT(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式: 如需获取…

C++数据结构笔记(4)企业链表的实现(Linux内核链表)

1.企业链表本质上是一种Linux内核链表。 2.最本质的区别在于,传统的结点类型中直接同时包含了指针域和数据域,用来实现和其他结点之间的串联;而在企业链表中,结点本身只含有指针域,而数据部分的具体实现则在测试文件中…

细数 List 的10个坑,保证你一定遇到过!

List 在实际的业务开发中,使用的非常频繁,但同样也有不少的坑,一旦使用不当,就可能带来一系列的问题;今天我们主要来说一说这些问题,以及面对这些坑的时候我们要怎么解决。 Arrays.asList转换基本类型数组…

深度学习----第J2周:ResNet50V2算法实现

深度学习----第J2周:ResNet50V2算法实现 文章目录 深度学习----第J2周:ResNet50V2算法实现前言一、ResNetV2与ResNet结构对比二、模型复现2.1 Residual Block2.2 堆叠的 Residual Block2.3 ResNet50V22.4 查看模型结构2.5 tf下全部代码 三、Pytorch复现3…

有哪些数据分析的工具?

来了,9款大数据&数据分析工具推荐,分享点和别人不一样的。 一、基于 Apache Hudi 的 Onehouse https://www.onehouse.ai 近日,开源大数据项目 Apache Hudi 创始人 Vinoth Chandar 发文官宣基于 Hudi 构建的商业公司和产品 Onehouse&…

Linux +Docker镜像打包导出,上传至内网服务器

1. docker容器打包成镜像和压缩 (1)首先查看镜像所在的容器,获取到容器id docker ps -a(2)将容器保存成镜像 sudo docker commit -a yjw e007d8b7e1b7 my_projectv2:v2sudo:以管理员权限运行命令&#x…

Unity快速上手系列1之:2D物理弹球

大家好。 以“跳一跳”为开端,微信小游戏从前几年起以迅雷不及掩耳盗铃儿响叮当之势席卷了用户的手机。从创意小游戏,到页游遗风的挂机游戏,一时间百花齐放。 当然,前者说是创意,其实绝大部分也就是直接把其他平台上的…

5.8.2 TCP报文段首部格式

5.8.2 TCP报文段首部格式 TCP报文段首部格式在很大程度上体现了TCP协议的功能 一、数据封装过程 如图 应用层报文传送到传输层之后,加上TCP报文段的首部构成了TCP数据传送单位,我们称之为TCP报文段。在发送时TCP报文段是作为IP数据报的数据部分&#…

linux虚拟内存管理

目录 虚拟内存分布 进程虚拟内存空间的管理 内核如何划分用户态和内核态虚拟内存空间 内核如何管理虚拟内存区域 定义虚拟内存区域的访问权限和行为规范 关联内存映射中的映射关系 虚拟内存区域在内核中是如何被组织的 程序编译后的二进制文件如何映射到虚拟内存空间中 …

探索图像处理的利器——OpenCV

目录 引言: 一、OpenCV简介: 二、OpenCV的特点: 三、OpenCV的应用领域: 四、实际案例: 结论: 引言: 在当今信息化的时代,图像处理已经成为了日常生活中不可或缺的一部分。从社…

4742. 电(acw每日一题)

来源:Google Kickstart2022 Round H Problem C 题目描述 某城市有 N个电力节点,编号 1∼N。 这些电力节点形成的电力网络,可以看作一个 N 个节点 N−1 条边的连通图。 每个电力节点都有一个固定的电容,其中第 i 个节点的电容为…

CSS 备忘录-基础内容

目录 1、CSS的基本结构 2、样式表的来源以及优先级 3、选择器的优先级 4、源码顺序 5、px、em、rem单位 6、视口相对单位 7、使用 calc() 来定义属性值 8、一些无单位的属性 9、自定义属性 10、使用 JavaScript 来动态修改自定义属性 11、overflow 属性 12、子元素…

【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

文章目录 定时器1_定时中断定时器2_定时中断定时器3_定时中断定时器4_定时中断定时器5_定时中断 高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): 定时器1_定时中断 TIM1是高级定时器,使用的时钟总线是R…

bochs编译安装

编译命令 ./configure --prefix‘/usr/local/bochs2.7’ --enable-debugger --enable-disasm --enable-iodebug --enable-x86-debugger --with-x --with-x11 make sudo make install 配置文件 bochsrc # configuration file generated by Bochs plugin_ctrl: unmapped1, biosde…

让开源项目从易用到好用 | 亚马逊的开源文化

亚马逊的领导力准则是亚马逊文化的核心,它如同亚马逊的 DNA 融入贯穿每一个重要决策,深深影响着每一位亚麻人、影响着每一位亚马逊的客户、合作伙伴以及每一位亚马逊云科技的构建者。同时,亚马逊的领导力准则对亚马逊与开源的互动方式也产生着…

如何设计一个文件系统?需要考虑哪些因素?

文件系统的实现 在对文件有了基本认识之后,现在是时候把目光转移到文件系统的实现上了。之前用户关心的一直都是文件是怎样命名的、可以进行哪些操作、目录树是什么,如何找到正确的文件路径等问题。而设计人员关心的是文件和目录是怎样存储的、磁盘空间…

数字孪生和GIS融合会为城市交通带来哪些便利?

数字孪生和GIS的融合对于城市交通领域带来了诸多便利,从智能交通管理到出行体验的提升,为城市交通带来了全新的发展机遇。 首先,数字孪生技术与GIS的结合可以实现智能交通管理。通过GIS建立城市交通网络的数字孪生模型,可以实时模…

程序员找工作难!拿到外包公司的 offer 我应该去么?

引言 前一阵子有一个帖子引起了非常广泛的讨论,描述的就是一个公司的外包工作人员,加班的时候因为吃了公司给员工准备的零食,被公司的HR当场批评!这个帖子一发出来,让现在测试行业日益新增的外包公司备受关注。那么外包公司和非外…