网站主题模板下载安装,上海浦东建筑建设网站,网站怎么注销备案号,品质网站设2024年是我学业生涯的结束#xff0c;是我职业生涯的开始。2024年6月19日我顺利研究生毕业#xff0c;进入体制内#xff0c;陆止于此#xff0c;海始于斯#xff0c;知识和文化最大的魅力#xff0c;大概就是教会人谦卑和敬畏。读研的目的不是为了单纯拿到哪个证书…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_THRESHcv2.CALIB_CB_FAST_CHECKcv2.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:yh, x:xw]
print(fROI: 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:yh, x:xw] # 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))