当前位置: 首页 > news >正文

2024年度学习总结

2024年是我学业生涯的结束,是我职业生涯的开始。2024年6月19日我顺利研究生毕业,进入体制内,陆止于此,海始于斯,知识和文化最大的魅力,大概就是教会人谦卑和敬畏。读研的目的不是为了单纯拿到哪个证书,这是一次人生格局的扩展,是完成的一次修行,是思考逻辑能力、技术专业性上、专刊文笔上的一次个人突破,这种突破对于将来的工作发挥至关重要,记录以下2024年的成长,回顾过去,展望未来。我将从工作成长、生活娱乐和身体健康三个方面进行总结。

工作成长生活娱乐身体健康
总结单目相机标定算法
总结双目相机标定算法
总结IMU标定算法
使用ORB-SLAM3运行自制数据集
图像增强技术的总结
改进ORB-SLAM3算法
自学SolidWorks学习总结
Unity实现数字变化
VI-SLAM技术讨论
毕业设计
通过Vxlan实现数据中心
新华三H3C NE网络工程师认证学习
运维工作中对反爬虫的一些思考
信息化建设总结
网络安全对抗
信息系统项目管理师软考学习总结

本课题基于应急管理部重大科技项目“应急救援专用增强现实(AR)智能头盔关键技术和设备研发”,旨在设计出适合用于应急救援专用增强现实(AR)智能头盔的定位算法。
整个系统分为四部分,第一部分是传感器标定部分,对相机和IMU进行联合标定。目的是为得到IMU相机的内外参数,减少图像噪声的影响。第二部分是数据预处理,在IMU 模式下,跟踪线程还有进行 IMU 预积分的计算,以供后续局部地图构建线程视觉结合 IMU 进行局部 BA 优化,将视觉和 IMU 对齐,对 IMU 预积分的传递做了分析,将自适应关键帧阈值算法嵌入跟踪线程,改进初始化的问题。第三部分是采用 RANSAC 算法进行平面拟合,根据 SLAM 模块提供的点云信息计算出最佳平面参数,第四部分是根据 SLAM模块提供的相机位姿将虚拟模型通过透视投影变换渲染至平面。
本系统创新性的针对无GPS信号的情况,研究利用视觉与IMU融合的SLAM技术实现应急救援专用增强现实(AR)智能头盔的自主定位,并搭建一套高鲁棒、低运算负载、高精度的适合于智能头盔的自主定位系统。

import cv2
import numpy as np
import glob# 标定板的大小,标定板内角点的个数
# CHECKERBOARD = (6,9)
CHECKERBOARD = (6,7)
# 角点优化,迭代的终止条件
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)# step1:定义标定板在真实世界的坐标
# 创建一个向量来保存每张图片中角点的3D坐标
objpoints = []
# 创建一个向量来保存每张图片中角点的2D坐标
imgpoints = []# 定义3D坐标:[row,col,z]
objp = np.zeros((1, CHECKERBOARD[0]*CHECKERBOARD[1], 3), np.float32)
objp[0,:,:2] = np.mgrid[0:CHECKERBOARD[0], 0:CHECKERBOARD[1]].T.reshape(-1, 2)# step2:提取不同角度拍摄的图片
# images = glob.glob('./images1/*.jpg')
images = glob.glob('./images2/*.jpg')
images = sorted(images)
for i,fname in enumerate(images):img = cv2.imread(fname) # 读取图片gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # RGB转换成灰度图# step3:计算标定板的角点的2D坐标# 寻找角点坐标,如果找到ret返回True, corners:[col, row],原点在左上角ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD, cv2.CALIB_CB_ADAPTIVE_THRESH+cv2.CALIB_CB_FAST_CHECK+cv2.CALIB_CB_NORMALIZE_IMAGE)if ret == True:objpoints.append(objp)# 调用cornerSubpix对2D角点坐标位置进行优化corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)imgpoints.append(corners2)# 绘制寻找到的角点,从红色开始绘制,紫色结束img = cv2.drawChessboardCorners(img, CHECKERBOARD, corners2,ret)cv2.imshow(fname+" succeed", img)else:print(f"第{i}张图,{fname}未发现足够角点")cv2.imshow(fname + " failed", img)cv2.waitKey(1)
cv2.destroyAllWindows()h,w = img.shape[:2]# step4:相加标定
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1],None,None)print("相机内参:") # [[fx,0,cx],[0,fy,cy],[0,0,1]]
print(mtx,"\n")
print("畸变参数:") # k1,k2,p1,p2,k3
print(dist,"\n")
print("旋转矩阵:")
print(rvecs,"\n")
print("平移矩阵:")
print(tvecs,"\n")# step5:去畸变
# img = cv2.imread('./images/image_2.jpg')
img = cv2.imread('./images2/left12.jpg')
h, w = img.shape[:2]
newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, (w,h), 1, (w,h))# 使用undistort矫正图像
dst = cv2.undistort(img, mtx, dist, None, newcameramtx)
# 图片裁剪
x, y, w, h = roi
dst2 = dst[y:y+h, x:x+w]
print(f"ROI: x:{x},y:{y},w:{w},h:{h}")
cv2.imshow("original image", img)
cv2.imshow("image undistorted1", dst)
cv2.imshow("image undistorted1 ROI", dst2)
cv2.imwrite('./undistorted/img_undistort.png', dst2)# 使用remapping
mapx, mapy = cv2.initUndistortRectifyMap(mtx, dist, None, newcameramtx, (w,h), 5)
dst = cv2.remap(img, mapx, mapy, cv2.INTER_LINEAR)# crop the image
x, y, w, h = roi
dst2 = dst[y:y+h, x:x+w] # x,宽,y,高
cv2.imshow("image undistorted2", dst)
cv2.imshow("image undistorted2 ROI", dst2)
cv2.imwrite('./undistorted/img_remap.png', dst2)
cv2.waitKey(0)
cv2.destroyAllWindows()# step6:计算重投影误差:
mean_error = 0
for i in range(len(objpoints)):# 使用内外参和畸变参数对点进行重投影imgpoints2, _ = cv2.projectPoints(objpoints[i], rvecs[i], tvecs[i], mtx, dist)error = cv2.norm(imgpoints[i], imgpoints2, cv2.NORM_L2)/len(imgpoints2) # L2范数,均方误差mean_error += errormean_error /= len(objpoints)
print("total error: {}".format(mean_error))

相关文章:

2024年度学习总结

2024年是我学业生涯的结束,是我职业生涯的开始。2024年6月19日我顺利研究生毕业,进入体制内,陆止于此,海始于斯,知识和文化最大的魅力,大概就是教会人谦卑和敬畏。读研的目的不是为了单纯拿到哪个证书&…...

我的博客年度之旅:感恩、成长与展望

目录 感恩有你 技能满点 新年新征程 嘿,各位技术大佬、数码潮咖还有屏幕前超爱学习的小伙伴们!当新年的钟声即将敲响,我们站在时光的交汇点上,回首过往,满心感慨;展望未来,豪情满怀。过去的这…...

undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12

目录 我的解决方法: 测试: 报错: undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12 from torch._C import * # noqa: F403 ImportError: /mnt/pfs/users/lbg/envs/mmpano/lib/python3.9/site-packages/torch/lib…...

【OTA】论文笔记--《智能网联汽车整车OTA功能设计研究》智能网联汽车OTA系统设计分析报告

智能网联汽车OTA系统设计分析报告 引言 随着汽车智能化、网联化水平不断提升,现代汽车中电子控制单元(ECU)的数量和复杂度持续增加。据统计,高级轿车上电子电气元件的成本已占整车开发成本的60%~70%。为了实现对这些电控单元的软件开发调试、数据标定、文件更新和故障修复,…...

c#String和StringBuilder

目录 一,String 1,string的特点: 2,string常用方法 (1)Length (2)Substring() (3)ToUpper() (4)ToLower() (5&…...

【Linux】HTTP协议

之前,我们已经做过了自定义协议,事实上,已经有很多现成已经做好又非常好用的协议,它们都是相同的,比如HTTP协议。所谓HTTP协议,就是超文本传输协议,定义了客户端和服务器之间是如何通信的&#…...

计算机网络 (14)数字传输系统

一、定义与原理 数字传输系统,顾名思义,是一种将连续变化的模拟信号转换为离散的数字信号,并通过适当的传输媒介进行传递的系统。在数字传输系统中,信息被编码成一系列的二进制数字,即0和1,这些数字序列能够…...

《向量数据库指南》——Milvus Cloud 2.5:Sparse-BM25引领全文检索新时代

Milvus Cloud BM25:重塑全文检索的未来 在最新的Milvus Cloud 2.5版本中,我们自豪地引入了“全新”的全文检索能力,这一创新不仅巩固了Milvus Cloud在向量数据库领域的领先地位,更为用户提供了前所未有的灵活性和效率。作为大禹智库的向量数据库高级研究员,以及《向量数据…...

Unity3D 网络框架设计详解

前言 Unity3D是一款强大的跨平台游戏开发引擎,网络框架的设计对于实现客户端与服务器之间的稳定通信至关重要。本文将详细介绍Unity3D网络框架的设计原理、技术要点以及代码实现。 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一…...

网络渗透测试实验四:CTF实践

1.实验目的和要求 实验目的:通过对目标靶机的渗透过程,了解CTF竞赛模式,理解CTF涵盖的知识范围,如MISC、PPC、WEB等,通过实践,加强团队协作能力,掌握初步CTF实战能力及信息收集能力。熟悉网络扫描、探测HTTP web服务、目录枚举、提权、图像信息提取、密码破解等相关工具…...

Wend看源码-Java-Collections 工具集学习

摘要 java.util.Collections它提供了一系列静态方法,用于对集合(如List、Set、Map等)进行操作。这些操作包括排序、查找、替换、同步等多种功能,帮助开发者更方便地处理集合数据。以下是Collections 提供的一些主要方法的总结。…...

[JAVA]MyLogger

import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.*;/*** 可以自已定义日志打印格式,这样看起来比较方便些**/ class MyFormatter extends Formatter {Overridepublic String format(LogRecord ar…...

玩转OCR | 腾讯云智能结构化OCR初次体验

目录 一、什么是OCR(需要了解) 二、产品概述与核心优势 产品概述 智能结构化能做什么 举例说明(选看) 1、物流单据识别 2、常见证件识别 3、票据单据识别 4、行业材料识别 三、产品特性 高精度 泛化性 易用性 四、…...

记一次 dockerfile 的循环依赖错误

文章目录 1. 写在最前面1.1 具体循环依赖的例子 2. 报错的位置2.1 代码快速分析2.2 代码总结2.3 关于 parser 的记录 3. 碎碎念 1. 写在最前面 笔者在使用 dockerfile 多阶段构建的功能时,写出了一个「circular dependency detected on stage: xx」的错误。 解决方…...

Trimble天宝X9三维扫描仪为建筑外墙检测提供了全新的解决方案【沪敖3D】

随着城市化进程的快速推进,城市高层建筑不断增多,对建筑质量的要求也在不断提高。建筑外墙检测,如平整度和垂直度检测,是衡量建筑质量的重要指标之一。传统人工检测方法不仅操作繁琐、效率低下,还难以全面反映墙体的真…...

【MySQL】深度学习数据库开发技术:使用CC++语言访问数据库

**前言:**本节内容介绍使用C/C访问数据库, 包括对数据库的增删查改操作。 主要是学习一些接口的调用, 废话不多说, 开始我们的学习吧! ps:本节内容比较容易, 友友们放心观看哦! 目录 准备mysql…...

LabVIEW化工实验室设备故障实时监测

化工实验室中,各类设备的运行状态直接影响实验的精度与安全性。特别是重要分析仪器的突发故障,可能导致实验中断或数据失效。为了实现设备运行状态的实时监控与故障快速响应,本文提出了一套基于LabVIEW的解决方案,通过多参数采集、…...

单例模式懒汉式、饿汉式(线程安全)

饿汉式单线程安全吗 饿汉式单例(Eager Singleton)是线程安全的。这种实现方式在类加载时就创建了单例实例,因此在多线程环境中,不存在多个线程同时创建实例的问题。 饿汉式单例的实现 以下是一个饿汉式单例的示例: …...

Cursor登录按钮点击没反应

问题 系统:Windows11 Cursor:Cursor 0.44.9 当安装Cursor打开进行登录时,点击Sign in没反应 解决方案 1.打开window11的设置 2.点击应用中的默认应用 3.在设置应用程序的默认值中搜索Google(没有Google浏览器的尝试下载一个&a…...

论文实现:Reactive Nonholonomic Trajectory Generation via Parametric Optimal Control

1. 多项式螺旋 曲率: κ ( s ) a 0 a 1 s a 2 s 2 a 3 s 3 a 4 s 4 a 5 s 5 \begin{align} \kappa(s) a_0 a_1s a_2s^2 a_3s^3 a_4s^4 a_5s^5 \end{align} κ(s)a0​a1​sa2​s2a3​s3a4​s4a5​s5​​ 机器人朝向: θ ( s ) a 0 s a 1 …...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...