拼接菱形的冲突判定方法(二)

本文介绍了一种通过离散化背景网格来避免菱形拼接时出现部分重叠或错位的方法。通过规定菱形移动步长和坐标奇偶性规则,确保了菱形间的正确对齐,利用哈希表记录每个网格块的状态以快速判断冲突。

上次我尝试 从 坐标轴映射, 或者说是数学分析的方法判定冲突, 但是很难做到, 因为 难以计算点在仿射坐标系的投影, 并且也有一定精度问题


下面采用 离散的方式:

首先对于一个拼接菱形的话, 如果我们假设它的位置是离散化的, 如下图:

只能允许菱形和菱形之间的边是对齐的,

而不能出现有错位的情况


如何避免这种情况呢, 有一种方法:

我们可以把整个背景离散化, 根据单位菱形的宽度的一半sizeX 和高度的一半 把整个背景网格化, 同时要求每个拼接菱形 的包围矩形的左上点 和这个网格点对齐



每个拼接菱形 在水平移动的时候,每次跨动两个单位, 垂直移动的时候, 每次跨动 2个单位, 

而斜着移动的时候,水平跨越1个单位, 垂直跨越1个单位 如图:

为了满足这个条件, 避免出现两个菱形只有一半相交的情况,  首先如何表示坐标;

既然是离散化的我们可以采用两个整数 作为 天然的坐标 x, y

只要保证x  y 的奇偶 性相同(或者时刻相反), 就可以满足上面的移动规律。


我们需要把一个拼接菱形所有的占据的块计算出来, 已知左上角 为 x, y 编号

那么 根据上一篇文章中的结论, 拼接菱形最上面的点的编号是:(sx, sy 是拼接菱形的宽度和高度)

(x+ sy,  y)

for i  < sx

   for j < sy

开始遍历每一个方块, 根据定义, 向右x正方向, 向 下 y正方向

菱形x方向移动, 则initX+1 initY+1

y方向移动, initX-1 initY+1

这样就能得到所有块的编号


采用一个哈希表存储, 键值是x*10000+y   值是一个数组包含所有占用该块的建筑 序列


下一章我们描述如果进行冲突判定




<think>好的,用户让我介绍一下如何用DeepSORT和Tube实现视频浓缩的流程图。首先,我需要确认自己对这两个技术的理解是否正确。DeepSORT是一种目标跟踪算法,结合了深度学习的检测和卡尔曼滤波进行跟踪,对吧?而Tube可能指的是时空管,也就是在视频中跟踪同一物体在不同帧中的运动轨迹形成的管道结构。 接下来,视频浓缩的目的是将长时间的视频内容压缩成较短的版本,保留重要事件,比如行人出现、车辆移动等。这需要检测、跟踪,然后分析哪些时间段可以剪接或压缩。那么,用户可能希望了解整个流程的步骤,从输入视频到最终的浓缩视频,每个环节如何利用DeepSORT和Tube。 我需要考虑流程图的结构。通常流程图分为输入、处理步骤、输出。处理步骤可能包括目标检测、跟踪生成Tube、分析Tube选择关键部分、视频合成。需要明确每个步骤之间的连接和数据流向。 首先,输入原始视频。然后进行目标检测,这里可能会用YOLO或者Faster R-CNN这样的模型。检测到的目标传递给DeepSORT进行跟踪,生成每个目标的轨迹,也就是Tube。接下来,需要对所有的Tube进行分析,比如根据出现时间、运动路径等筛选重要的Tube,或者合并重叠的Tube。之后,基于筛选后的Tube,提取对应的视频片段,进行时间上的压缩或拼接,生成浓缩视频。 可能还需要考虑时间轴的处理,比如如何将不同时间段的目标合并到同一时间轴,避免重叠。此外,可能需要处理视频的背景,保持连贯性。不过用户主要关注的是流程图,所以需要将步骤模块化,用箭头连接起来。 需要确认是否有遗漏的步骤,比如预处理、后处理,或者是否需要使用其他技术如光流法辅助跟踪。但根据用户提到的DeepSORT和Tube,可能主要步骤是检测、跟踪、分析、合成。流程图应该包括这四个主要部分,每个部分下可能有子步骤,比如目标检测模块,跟踪生成Tube,分析选择关键Tube,合成浓缩视频。 还要注意术语的准确性,确保使用DeepSORT和Tube的正确表述。可能需要解释Tube在流程中的作用,即在跟踪过程中形成的时空轨迹,用于后续分析和浓缩。 最后,流程图是否需要分支判断?比如在分析Tube时是否有条件判断来决定保留或丢弃。可能需要根据应用场景调整,但用户可能希望一个通用的流程,所以保持线性步骤可能更合适。不过如果有筛选条件,可能需要条件判断的菱形框。 总结步骤:输入视频→目标检测→DeepSORT跟踪生成Tube→Tube分析与选择→视频合成→输出浓缩视频。每个步骤之间的箭头表示流程顺序。可能需要在分析Tube部分说明如何基于规则或算法选择关键Tube,比如出现频率、停留时间等。 现在需要将这些步骤转化为流程图,使用合适的图形,如开始/结束的椭圆,处理步骤的矩形,判断的菱形。但用户可能只需要文字描述的流程图结构,所以用文字分描述每个步骤和连接即可。可能需要用Mermaid语法来画流程图,但用户没有明确要求格式,所以用文字说明结构,再给出一个Mermaid示例。 需要检查是否有错误,例如DeepSORT是否直接生成Tube,或者是否需要后续处理。实际上,DeepSORT生成的是跟踪轨迹,Tube可能是将这些轨迹在时空上整合的结果,可能需要额外的处理步骤来形成Tube结构。因此,流程图中可能需要将跟踪后的轨迹合并成Tube的步骤。 另外,视频合成部分可能需要将不同Tube对应的视频片段在时间轴上重新排列,可能涉及视频剪辑、背景融合等技术,但流程图可以简化为合成模块。 最终,确保每个步骤清晰,逻辑连贯,正确反映DeepSORT和Tube在视频浓缩中的作用。可能还需要考虑并行处理或多个对象的处理,但流程图应保持简洁,突出主要步骤。</think>以下是基于DeepSORT和时空管(Tube)技术实现视频浓缩的流程图及说明: ```mermaid graph TD A[输入原始视频] --> B[目标检测] B --> C[DeepSORT目标跟踪] C --> D[生成时空管Tube] D --> E{分析Tube属性} E -->|重要目标| F[提取时间片段] E -->|冗余目标| G[丢弃] F --> H[时间轴压缩/拼接] H --> I[输出浓缩视频] ``` **流程详解**: 1. **目标检测**(YOLO/SSD等) - 逐帧检测视频中的目标(行人/车辆等) - 输出检测框和特征向量 2. **DeepSORT跟踪** - 通过卡尔曼滤波预测目标位置 - 使用匈牙利算法匹配检测框与跟踪轨迹 - 输出连续的目标轨迹 3. **构建时空管(Tube)** - 将同一目标的跨帧轨迹合并为Tube - 记录时空属性:出现时间、运动路径、持续时间等 4. **Tube分析筛选** - 根据预设规则过滤: - 保留:长时间停留、特定区域活动 - 丢弃:短暂出现、重复路径 - 应用轨迹聚类算法合并相似Tube 5. **视频合成** - 对保留的Tube进行时间轴操作: - 时间压缩:加速播放 - 空间叠加:同屏显示多时段目标 - 关键片段拼接:按事件逻辑重组时间线 6. **输出优化** - 背景融合处理 - 时间平滑过渡 - 生成浓缩视频文件(MP4/AVI) **核心优势**: - 通过Tube保持目标时空一致性 - 基于轨迹分析实现智能剪辑 - 相比传统方法减少90%+冗余内容 - 支持多目标并行处理 需要说明的是,实际部署时需考虑: 1. 检测-跟踪延迟平衡 2. Tube存储的数据结构设计 3. 时间轴冲突解决方法 4. GPU资源分配优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值