Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

Blender实践教程

发表于 2024-11-23 | 更新于 2024-11-24

记录各种使用Blender过程中遇到的问题。

基本常识

具体请参考:

  • 有大佬知道这些连着模型的黑线是啥吗,绑定父级的连接线
  • 在3D Max中查看模型引用的贴图
  • UV是什么以及如何查看、编辑3DMAX模型UV?
  • 材质槽
  • 视频教程:如何在Blender中压缩/减少3D模型的大小(GLB、GLTF、DAE、FBX、OBJ…)?

基本操作

具体请参考:

  • Blender设置物体的旋转中心点
  • Blender大纲视图中显示的空物体
  • Blender仅影响原点
  • 选中或隐藏物体
  • 给模型添加纹理–blender
  • Blender雕刻建模_笔刷纹理和顶点绘制
  • Blender:着色器编辑器
  • blender切换并锁定到摄像机视图
  • blender着色编辑器的使用方法介绍
  • blender中怎么将两个物体合成一个整体

材质

  • 漫反射颜色: 让渲染物体表面颜色更丰富真实,是环境颜色反射到物体上的
  • 高光级别: 那就是看这个物体到底是像汽车一样很亮,还是像鸡蛋一样高光比较弱
  • 光泽度: 那就是这是一个瓷杯子很光滑,还是桌子感觉有摩擦,或者一块砖头非常粗糙
  • 自发光: 那就是像荧光板一样,自己在发亮,但是不是灯一样,照亮周围的所有东西
  • 不透明: 那就是水、玻璃透明,冰块半透明,鸡蛋液体透光,瓷杯子子盘子、铁、木头、都不透明

这些东西共同控制了 一个物体给人材质的感觉,让软件里面做的东西,看起来更像真实的物体。

具体请参考:

  • 法线贴图
  • 反射贴图
  • 3DMax反射光泽度一般是多少?
  • Blender基础材质笔记

参考链接

  1. Blender设置物体的旋转中心点,by ftytotop.

系统设计面试:内幕指南读书笔记

发表于 2024-11-20 | 更新于 2024-12-12

一本好书,值得学习。

系统设计面试:内幕指南读书笔记(第一卷)

第01章:从0到百万用户

垂直扩展,又称为“纵向扩展”,指的是通过增加单个服务器的计算能力(CPU、RAM等)来提升其性能。
水平扩展,又称为“横向扩展”,允许通过向资源池中添加更多服务器来进行扩展。

引用自维基百科:“数据库复制可适用于许多数据库管理系统,通常在原始数据库(master)与副本数据库(slaves)之间建立主/从关系”。

主数据库通常仅支持写的操作。从数据库从主数据库中复制数据并且仅支持读操作。所有修改数据的命令,如:insert,delete,update 都必须发送到主数据库。

缓存是一个临时存储区域,用于将昂贵的响应结果或频繁的访问数据存储在内存中,以便之后的请求能被更快的处理。

CDN(内容分发网络)是一个由地理上分散的服务器组成的网络,用于提供静态内容。CDN服务器缓存静态内容,如:图片、视频、CSS、JavaScript文件等。

无状态的Web层

消息队列是一个持久性组件,存储在内存中,支持异步通信,它充当缓冲区并分发异步请求。消息队列的基础架构非常简单,输入服务,被称为生产者/发布者,创建消息,并将它们发送到消息队列中。其他服务或服务器,称为消费者/订阅者,连接到队列,并执行消息定义的动作。

第02章:粗略估算

高可用性是系统持续运行的能力,期望能够长时间保持操作。 高可用性通常以百分比表示,100%意味着服务没有任何停机时间。大多数服务的可用性介于99%到100%之间。

服务水平协议(SLA)是服务提供商常用的术语。这是你(服务提供商)与你的客户之间的协议,该协议正式定义了你的服务将提供的运行时间水平。

第03章:系统设计面试框架

有效系统设计面试的 4 步流程

  • 第1步 :了解问题并确定设计范围
  • 第2步:提出高层次的设计方案并获得认同
  • 第3步:深入设计
  • 第4步:总结

第04章:设计一个限流器

在网络系统中,限流器被用于控制客户端或服务端发送流量的速率。在HTTP世界中,限流器限制在指定时间内允许发送客户端请求数。 如果API请求次数超过了限流器设置的阈值,则所有超出的调用都会被阻止。

限流算法

流行算法的列表:

  • 令牌桶(Token bucket)

  • 漏桶算法(Leaking bucket)

  • 固定窗口计数器(Fixed window counter)

  • 滑动窗口日志(Sliding window log)

  • 滑动窗口计数器(Sliding window counter)

第05章:一致性hash设计

为了实现水平扩展,在服务器之间高效、均匀地分配请求/数据非常重要。一致哈希是实现这一目标的常用技术。

引用自维基百科:“一致性哈希是一种特殊的哈希,当重新调整哈希表的大小并使用一致性哈希时,平均只需要重新映射 k/n 个键,其中
k 是键的数量,n 是槽的数量。 相比之下,在大多数传统的哈希表中,数组槽数量的变化导致几乎所有键都被重新映射 [1]”

第06章:key-value 存储设计

分布式键值存储也称为分布式哈希表,它将键值对分布在许多服务器上。在设计分布式系统时,了解 CAP(C一致性、A可用性、P分区容错性)定理很重要。

CAP 定理指出,分布式系统不可能同时提供以下三种保证中的两种以上:一致性、可用性和分区容错性。让我们熟悉一些定义。

  • 一致性:一致性意味着所有客户端无论连接到哪个节点,都在同一时间看到相同的数据。

  • 可用性:可用性意味着即使某些节点已关闭,任何请求数据的客户端都会得到响应。

  • 分区容忍度:分区表示两个节点之间的通信中断,分区容错意味着系统在网络分区的情况下继续运行。

CAP 定理指出,必须牺牲三个属性之一来支持 3 个属性中的 2 个。

第07章:分布式系统中设计唯一 ID 生成器

可以使用多个选项在分布式系统中生成唯一ID。

  • 多主复制
  • 通用唯一标识符 (UUID)
  • Ticket 服务器
  • 推特雪花算法

第08章:短网址设计

短网址设计概念: 假设 URL https://www.systeminterview.com/q=chatsystem&c=loggedin&v=v3&l=long 是原始 URL。你的服务创建了一个长度较短的别名:https://tinyurl.com/y7keocwj。如果你单击较短的别名URL,它会将你重定向到原始 URL。

  • 301重定向。301重定向表明,请求的URL被 “永久 “地移到了长URL上。由于是永久重定向,浏览器会缓存响应,对同一URL的后续请求将不会被发送到URL缩短服务上。相反,请求将直接被重定向到长网址服务器。

  • 302重定向。302重定向意味着URL被 “暂时 “移到长URL上,这意味着对同一URL的后续请求将首先被发送到URL缩短服务上。然后,它们会被重定向到长网址服务器。

  • 哈希+碰撞解决

  • base 62 转换

第09章:网络爬虫设计

网络爬虫被称为机器人或蜘蛛。搜索引擎广泛使用它来发现 Web 上的新内容或更新内容。内容可以是网页、图像、视频、PDF 文件等。

第10章:设计一个通知系统

近年来,通知系统已经成为许多应用程序非常流行的功能。 通知提醒用户重要信息,如突发新闻、产品更新、活动、优惠等。

第11章:设计一个新闻提要系统

什么是信息推送? 根据 Facebook 帮助页面,“动态是位于首页中间不断更新的动态列表。动态包括您在 Facebook 上关注的用户、公共主页和小组发布的状态更新、照片、视频、链接、应用事件和点赞。”

  • 信息发布(Feed publishing):当用户发布帖子时,相应的数据被写入缓存和数据库。帖子被推送到她朋友的动态中。

  • 信息流构建(Newsfeed building):为简单起见,我们假设信息推送是通过按时间倒序聚合朋友的帖子来构建的。

Fanout 是将帖子传递给所有朋友的过程。两种类型的扇出模型是:写扇出(也称为推模型)和读扇出(也称为拉模型)。两种模型各有利弊。

第12章:设计一个聊天系统

当发送方通过聊天服务向接收方发送消息时,它使用久经考验的 HTTP 协议,这是最常见的 Web 协议。在此场景中,客户端打开与聊天服务的 HTTP 连接并发送消息,通知服务将消息发送给接收者。 Keep-Alive 对此很有效,因为 Keep-Alive 标头允许客户端与聊天服务保持持久连接。 它还减少了 TCP 握手的次数。

由于HTTP是由客户发起的,因此从服务器发送消息并非易事。多年来,许多技术被用来模拟服务器发起的连接:轮询(Polling)、长轮询(Long polling)和 WebSocket。

图12-9显示了1对1聊天的消息表。主键是 message_id ,它有助于决定消息的顺序。我们不能依靠 created_at 来决定消息的顺序,因为两条消息可以同时创建。

定期地,一个在线客户端向状态服务器发送一个心跳事件。如果状态服务器在一定时间内收到心跳事件,比如说来自客户端的X秒,那么用户被认为是在线的。否则,它就处于离线状态。

第13章:设计一个搜索自动完成系统

当你在谷歌上搜索或在亚马逊购物时,在搜索框中输入,会有一个或多个与搜索词相匹配的内容呈现给你。这一功能被称为自动完成、提前输入、边输入边搜索或增量搜索。

trie 的主要思想包括以下内容:

  • trie是一种树状的数据结构。

  • 根代表一个空字符串。

  • 每个节点存储一个字符并有 26 个子节点,每个节点对应一个可能的字符。 为了节省空间,我们不绘制空链接。

  • 每个树节点代表一个单词或一个前缀字符串。

第14章:设计 YouTube

当你在YouTube上观看一个视频时,它通常立即开始流媒体,你不会等到整个视频被下载。下载意味着整个视频被复制到你的设备上,而流媒体意味着你的设备不断接收来自远程源视频的视频流。当你观看流媒体视频时,你的客户端每次加载一点数据,所以你可以立即和连续地观看视频。

流媒体协议。这是一种控制视频流数据传输的标准化方式。流行的流媒体协议有:

  • MPEG–DASH:MPEG代表 “移动图像专家组”,DASH代表 “HTTP动态自适应流”。

  • 苹果 HLS:HLS是 “HTTP实时流媒体 “的缩写。

  • 微软 Smooth Streaming。

  • Adobe HTTP动态流(HDS)。

Facebook的流媒体视频引擎使用了一个有向无环图(DAG)编程模型,它分阶段定义任务,因此它们可以顺序或平行地执行。

第15章:设计 Google Drive

Google Drive 是一种文件存储和同步服务,可帮助您在云端存储文档、照片、视频和其他文件。您可以从任何计算机、智能手机和平板电脑访问您的文件。你可以轻松地与朋友、家人和同事共享这些文件。

  • 上传流程
  • 下载流程

系统设计面试:内幕指南读书笔记(第二卷)

第01章:邻近服务

附近地点服务用于发现附近的餐厅、酒店、剧院、博物馆等场所,是一个核心组件,为 Yelp 上查找附近最佳餐厅或 Google 地图上查找最近加油站等功能提供支持。

LBS服务(基于位置的服务)是系统的核心部分,用于在给定半径和位置范围内查找附近的商家。

从广义上讲,有两种类型的地理空间索引方法,如图1.5所示。

  • Hash: 均匀网格、geohash、笛卡尔层等。
  • Tree: 四叉树、Google S2、R树等。

第02章:附近的好友

对于选择加入并授予位置访问权限的用户,移动客户端会显示地理位置上靠近的好友列表。

第10章 实时游戏排行榜

什么是排行榜?排行榜在游戏和其他领域很常见,用于显示谁在特定的赛季或比赛对局中领先。用户在完成任务或挑战后会被分配分数,分数最高的用户就会在排行榜上名列前茅。

参考链接

  1. 系统设计面试:内幕指南,by Alex Xu.

Linux磁盘克隆方法

发表于 2024-11-19 | 更新于 2024-12-05

最近公司的一台 CentOS 服务器需要克隆一下,以便在另一台服务器或者虚拟机上运行,因此,研究了一下Linux的磁盘克隆方法。

基本常识

UEFI 与 BIOS 区别

UEFI引导与BIOS引导在结构上的区别:

  • BIOS引导的结构相对简单,由3个部分组成:BIOS程序、MBR(主引导记录)和操作系统引导程序。其中BIOS程序是由计算机制造商预装在ROM芯片中的,MBR是位于磁盘的名列前茅个扇区,用于存储操作系统引导程序的位置信息,操作系统引导程序则是由用户安装的操作系统自带的。

  • UEFI引导的结构相对复杂,由多个部分组成:UEFI固件、GPT(GUID分区表)、EFI系统分区、操作系统引导程序。其中UEFI固件是由计算机制造商预装在主板上的,GPT是磁盘分区表,EFI系统分区是用于存储操作系统引导程序和其他UEFI应用程序的特殊分区,操作系统引导程序则是由用户安装的操作系统自带的。

MBR (Master Boot Record,主引导记录)

主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,偏移地址0000H–0088H),它负责从活动分区中装载,并运行系统引导程序;第二部分是Partition table区(DPT分区表),占64个字节;第三部分是Magic number,占2个字节。

GPT 分区格式

GPT分区格式包含传统MBR(主引导记录)、分区表头、分区表、备份分区表头、备份分区表以及数据区。

使用工具

  • fdisk, 查看磁盘分区情况,或者用于磁盘分区,注意 fdisk 只支持 MBR 分区格式,只支持 2T 以下的磁盘

  • lsblk, 查看磁盘分区情况

  • blkid, 获取分区 UUID ,用于编辑 /etc/fstab 永久挂在分区

  • parted, 查看磁盘分区情况,或者用于磁盘分区,支持 MBR 或者 GPT 分区格式,支持 2T 以上的磁盘

  • mkfs.ext4, 用于分区后的磁盘文件系统格式化

  • mount, 挂载磁盘分区

  • dd, 磁盘克隆的工具

1
2
3
# 读取硬盘的mbr扇区
dd if=/dev/sdb of=mbr.bin bs=512 count=1 | hexdump
dd if=/dev/sdb of=mbr.bin bs=1 count=512 | hexdump

以上命令的使用方法请参考:

  • fdisk 管理磁盘分区

解决方案

目标磁盘大于原磁盘

需要磁盘克隆的服务器,其硬盘有4T大小,但只使用了不到512G,用于克隆的目标磁盘同样有4T大小。因此考虑先生成原磁盘的镜像文件,再向目标磁盘克隆。具体步骤如下:

  • 挂载目标磁盘,GPT分区,并ext4格式化。
  • 生成原磁盘的镜像文件
1
2
# /media/nvme1n1 为目标磁盘挂载目录
dd if=/dev/nvme0n1 status=progress bs=32M | gzip -c -9 > /media/nvme1n1/nvme0n1.dd.gz
  • 将生成的原磁盘镜像文件复制到原磁盘的 root 目录
1
mv /media/nvme1n1/nvme0n1.dd.gz /root
  • 使用原磁盘的镜像文件克隆磁盘
1
gzip -dc /root/nvme0n1.dd.gz | dd of=/dev/nvme1n1

目标磁盘小于原磁盘

如果目标磁盘小于原磁盘,就不能简单的使用dd命令进行全盘克隆了。好在原磁盘实际使用的空间不大,因此,采用的步骤如下:

  • 在目标磁盘安装同样的CentOS操作系统
  • 使用 dd 命令克隆 root 分区

对于 home 分区,应根据不同情况不同处理:

  • 如果 home 分区文件系统占有空间相对较小,可使用 tar 命令压缩 home 分区的文件,然后解压到目标磁盘的 home 分区,并更改 home 分区文件夹的所有者。
  • 如果 home 分区文件系统占用空间相对很大,那干脆用 dd 命令克隆 home 分区更省事。
  • 如果 home 分区为 ext 文件系统,可考虑使用 resize2f 缩小文件系统,在缩小文件系统后,在使用 fdsik 或者 parted 缩小 home 分区大小,没有问题后,考虑使用 dd 命令克隆 home 分区。
  • 如果 home 分区为 xfs 文件系统,由于 xfs 文件系统不支持缩小,可以考虑使用 xfsdump 备份,等缩小 home 分区后,使用 xfsrestore 还原 home 分区。

参考链接

  1. linux下使用fdisk进行磁盘分区详解,by 人生的哲理.
  2. fdisk 管理磁盘分区,by gnu.
  3. UEFI是什么意思?UEFI和BIOS的区别是什么?,by 小橙7.
  4. UEFI是什么?与BIOS的区别在哪?,by 平凡而伟大(心之所向).
  5. 装机、做系统必备:秒懂MBR和GPT分区表,by 张伟.
  6. GPT 磁盘分区格式简介及解析示例,by 一柯.
  7. GUID Partition Table (GPT) Disk Layout,by uefi.
  8. Linux下使用dd命令备份硬盘,by zuyunfei.
  9. How to gzip and keep original file on Unix or Linux command line,by Vivek Gite .
  10. BIOS 与 UEFI 引导流程,by LARRY1024.
  11. LVM原理与实现,by 戴思达.
  12. CentOS 7 调整 XFS 格式的 LVM 分区大小,by Tom Ma.
  13. CentOS 8 逻辑卷管理LVM详解(扩容、快照等),by 把倒立的世界腾空.
  14. resize2fs 缩小根分区 linux缩小根分区大小,by 编程小匠人.
  15. Linux下对LVM逻辑卷分区大小调整 [针对xfs和ext4文件系统],by 散尽浮华.
  16. Linux无损调整分区大小,by anuoua.
  17. 无损扩容Linux磁盘分区容量,by orchidflower.

Linux重启后进入initramfs导致无法开机的解决方案

发表于 2024-11-14 | 更新于 2024-11-15

最近遇到 Linux 重启后进入 initramfs 导致无法开机的问题,虽然问题没有解决,但是记录一下过程。

通用解决方法

在initramfs命令行接口下,输入如下命令:

1
2
3
4
5
# 使用如下命令查看和识别磁盘、分区或文件系统的信息
blkid

# fsck命令是用于检查和修复Linux文件系统中的错误
fsck -y -t ext4 /dev/sda1

由于无法修复文件系统中错误,linux 还是无法开机。

SuperBlock修复

1
2
3
4
sudo fdisk -l
sudo fsck.ext4 -v /dev/xxx
sudo mke2fs -n /dev/xxx
sudo e2fsck -b block_number /dev/xxx

参考链接

  1. Ubuntu重启后进入initramfs导致无法开机解决方案,by 修己xj.
  2. linux操作系统故障处理-ext4文件系统超级块损坏修复,by zhangatong.
  3. HOWTO: Repair a broken Ext4 Superblock in Ubuntu,by linuxexpresso.
  4. linux 检测SSD寿命,by 高压锅_1220.

Qt_Quick_3D加载3d模型的方法

发表于 2024-11-14

最近工作中使用的一个基于QT开发三维程序中有很多以 .mesh 扩展名结尾的三维模型,搜索了一下,原来是 QtQuick3D 使用的专有三维模型格式。

QtQuick3D 附带Balsam导入工具,用于将常见格式转换为QtQuick3D支持的格式。

Balsam的目的是让可以轻松获取在常用工具(Blender,Maya,或3dsMax)中创建的资源,并在QtQuick3D中使用它们。

通过balsamui导出mesh文件和qml文件。

参考链接

  1. Qt Quick 3D系列(一):加载3d模型,by 喵喵叫的猴.
  2. Qt Quick 3D模块初探,by 龚建波.
  3. Qt Quick 3D中将3D场景(如.obj)转换为.mesh,by 喵喵叫的猴.
  4. 12、Qt Quick 3D —– 模型加载,by weixin_41392061.

深度学习中注意力机制学习笔记

发表于 2024-11-03

学习理解注意力机制的目的是为了更好的掌握深度学习模型,指导实践。

注意力机制的优点

之所以要引入 Attention 机制,主要是3个原因:

  • 参数少

模型复杂度跟 CNN、RNN 相比,复杂度更小,参数也更少。所以对算力的要求也就更小。

  • 速度快

Attention 解决了 RNN 不能并行计算的问题。Attention机制每一步计算不依赖于上一步的计算结果,因此可以和CNN一样并行处理。

  • 效果好

在 Attention 机制引入之前,有一个问题大家一直很苦恼:长距离的信息会被弱化,就好像记忆能力弱的人,记不住过去的事情是一样的。

Attention 是挑重点,就算文本比较长,也能从中间抓住重点,不丢失重要的信息。

参考链接

  1. 一文看懂 Attention(本质原理+3大优点+5大类型),by easyAI-人工智能知识库.
  2. 一文搞定注意力机制(Attention),by markconca的博客.
  3. 注意力机制(Attention mechanism)基本原理详解及应用,by Jerry_Jin.
  4. 什么是词向量?(NPL入门),by mawenqi0729.
  5. 词向量Word Embedding原理及生成方法,by getui.
  6. 注意力机制,by wikipedia.

NTP协议学习笔记

发表于 2024-10-30 | 更新于 2024-11-02

最近遇到一个问题,需要程序进行严格的时间同步,因此学习一下网络时间协议。

NTP同步原理

网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。NTP服务器从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC,客户端再从服务器请求和接收时间。
NTP基于UDP报文进行传输,使用的UDP端口号为123。

NTP最典型的授时方式是Client/Server方式:

  1. 客户端首先向服务端发送一个NTP请求报文,其中包含了该报文离开客户端的时间戳t1;
  2. NTP请求报文到达NTP服务器,此时NTP服务器的时刻为t2。当服务端接收到该报文时,NTP服务器处理之后,于t3时刻发出NTP应答报文。该应答报文中携带报文离开NTP客户端时的时间戳t1、到达NTP服务器时的时间戳t2、离开NTP服务器时的时间戳t3;
  3. 客户端在接收到响应报文时,记录报文返回的时间戳t4。

客户端用上述4个时间戳参数就能够计算出2个关键参数:

  • NTP报文从客户端到服务器的往返延迟delay。

$delay=(t_4-t_1)-(t_3-t_2)$

  • 客户端与服务端之间的时间差offset。

联立方程组:

$t_2=t_1+offset+delay/2$

$t_4=t_3+offset+delay/2$

可得:

$offset=((t_2-t_1)+(t_3-t_4))/2$

NTP客户端根据计算得到的offset来调整自己的时钟,实现与NTP服务器的时钟同步。

NTP时间同步频率

NTP时间同步频率修改请参考:

  • windows修改ntp同步时间间隔

NTP时间同步精度

打开站点 https://time.is/ 可查看机器的时间精度。

参考链接

  1. 六千字详细图解网络时间协议(NTP),带你领略NTP的魅力!,by 网络技术联盟站.
  2. 什么是NTP?,by 高洋洋.
  3. 北斗授时原理及应用,by 西安同步.
  4. 各种Windows系统ntp客户端配置详解,by 西安同步.
  5. windows修改ntp同步时间间隔,by 梳碧湖的少年.

多网卡收UDP组播的问题分析

发表于 2024-10-27 | 更新于 2024-10-30

最近遇到一个问题,某个程序默认使用第一个网卡绑定组播地址,如果网卡顺序不对,将导致无法从组播地址上接收和发送数据。因此,必须指定某个网口绑定一个组播地址。具体方法有两种:

  • 调整网络高级设置,通过调整网卡顺序,使组播地址绑定在正确的网卡上
  • 修改网卡跃点数,通过修改网卡跃点数,使组播地址绑定在正确的网卡上

下面重点介绍第二种方法,修改网卡跃点数来调整组播地址绑定的网卡。

所谓“跃点”,即路由。一个路由为一个跃点。数据传输过程中需要经过多个网络,每个被经过的网络设备点(有能力路由的)叫做一个跃点,地址就是它的IP。

如果电脑中存在多个连接,哪个连接的跃点数小,哪个优先级就高。多播地址就会绑定在跃点数最小的网卡上。

参考链接

  1. Windows和Linux查看组播通信的方法,by huangwang.
  2. 多网卡的情况下收udp组播数据的坑,by 小鼬就是我.
  3. multiple multicast on multiple interfaces,by stackoverflow.
  4. Win10:如何修改双网卡的优先级?,by xosg.

HSV转RGB的效率问题探讨

发表于 2024-10-12

最近朋友遇到一个技术难题,我也没相关经验,只能记录以下,方便以后解决。

问题描述

朋友想高效地在一块嵌入式的板子上实现 640*480 HSV格式的图片转换成 RGB格式的图片,要求处理时延不能超过20ms。

解决方案

朋友试了很多中解决方案,包括:

  • 使用OpenCV的cvtColor函数,性能太差,可能是嵌入式板子的CPU处理器性能差的原因。
  • 使用OpenGL进行图像格式转换,性能还是不够。
  • 采用GPU加速图像处理,性能还是不够,GPU可能能够快速处理图像,但是图像数据在CPU和GPU之间的数据搬运也很耗时。
  • 使用OpenGL帧缓存双缓冲,性能还是不够

最后建议优化HSV转RGB格式的算法,提高CPU执行效率。

参考链接

  1. 数字图像处理——RGB与HSV图像互相转换原理,by 萌萌哒程序猴.
  2. OpenGL帧缓存,by 先锋小牛.
  3. OpenCV 自学笔记21. RGB色彩空间和HSV色彩空间的理解,by 两鬓已不能斑白.
  4. opencv中使用cuda加速图像处理,by 我是一个对称矩阵.

多传感器多目标跟踪方法研究学习笔记

发表于 2024-09-28

最近遇到一个问题,需要将多传感器多目标跟踪获得的航迹进行关联,因此学习研究一下。

关键技术

分布式多传感器多目标跟踪涉及的目标跟踪、传感器配准、航迹关联、数据融合4项关键技术。

目标跟踪

目标跟踪是指利用传感器获得的带噪声量测数据,对目标的状态和个数进行估计的过程。

目标跟踪按目标探测个数可分为单目标跟踪和多目标跟踪,通常它们都基于贝叶斯框架进行递归滤波。

单目标跟踪

多目标跟踪

传感器配准

在分布式多传感器多目标跟踪过程中,需要把来自多个传感器的数据转换到相同的时空参照系中。由于不同传感器传输速率及采样周期不同,而且存在传感器系统偏差和量测误差,直接进行转换会降低数据融合精度,因此在对多传感器数据处理时需要进行传感器时空配准。

时间配准

时间配准就是将各传感器对同一目标的异步量测信息配准到同一时刻。

空间配准

空间配准是利用多传感器对空间公共目标的探测信息对传感器的系统偏差进行估计和补偿的过程,它可以提高信息融合精度。

航迹关联

由于传感器间的探测区域存在重叠,来自不同系统的航迹可能代表同一目标。因此,如何找出同一目标对应的航迹就是分布式数据融合系统中的航迹关联问题。

航迹关联算法主要分为两类,一类是基于统计类的方法,一类是基于模糊数学的方法。

数据融合

分布式多传感器多目标跟踪又称分布式多传感器数据融合。在该系统中,各局部传感器首先基于单传感器多目标跟踪算法,形成各自目标航迹,
接着各传感器将目标航迹送入融合中心完成时空配准与航迹关联,然后融合中心基于某种融合准则对来自同一目标的航迹进行估计融合,最终形成稳定、
高精度的全局航迹。

参考链接

  1. 分布式多传感器多目标跟踪方法综述,by 曾雅俊, 王俊, 魏少明, 等.
上一页1234…53下一页

Jack Huang

521 日志
67 标签
© 2025 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse