yhwang-hub
还是什么也不写吧
展开
-
鱼眼镜头校准
01.简介当我们使用的鱼眼镜头视角大于160°时,OpenCV中用于校准镜头“经典”方法的效果可能就不是和理想了。即使我们仔细遵循OpenCV文档中的步骤,也可能会得到下面这个奇奇怪怪的照片:从3.0版开始,OpenCV包含了cv2.fisheye可以很好地处理鱼眼镜头校准的软件包。但是,该模块没有针对读者的相关的教程。02.相机参数获取校准镜头其实只需要下面2个步骤。利用OpenCV计算镜头的2个固有参数。OpenCV称它们为K和D,我们只需要知道它们是numpy数组外即可。通过K和D对图原创 2020-11-28 16:18:10 · 562 阅读 · 0 评论 -
张正友标定法-完整学习笔记-从原理到实战
文章目录(零)前言:1 为什么需要标定?2 相机标定的已知条件和待求解是什么?标定前的已知条件:待求信息:(一)概念介绍和成像几何模型1.张正友标定处于什么水平,为啥提到相机标定,就不得不提他张博士的方法?2 简单介绍张博士----张氏标定法发明人3【WHY:为什么要进行相机标定?】4【HOW:相机标定的原理】在这里我们先引入「棋盘」的概念:1.从世界坐标系到相机坐标系(零)前言:1 为什么需要标定?我们拿到一个新的相机,用来拍照,将三维世界的信息,投影到二维平面,得到一张RGB图像。一般来说,小原创 2020-10-16 10:06:41 · 1443 阅读 · 0 评论 -
相机标定的基本原理与改进方法
1、相机模型(1)各个坐标系确定空间某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型(各个坐标系),这些坐标系之间的转换参数就是相机参数,求解参数的过程叫做相机标定(摄像机标定)。建立立体视觉系统所需要的各个坐标系,包括世界坐标系、相机坐标系、以及图像坐标系(物理和像素坐标系)。首先明确各个坐标系之间的转换关系:① 世界坐标系与相机坐标系这是将一个三维的坐标系转换成另一个三维的坐标系,这两个坐标系之间的转换属于刚体转换,物体只改变在两个坐标系中的空间位置(平移)和朝原创 2020-10-03 20:55:40 · 616 阅读 · 0 评论 -
鱼眼镜头标定及畸变校正
鱼眼摄像头畸变校正的方法:棋盘矫正法经纬度矫正法。相机为什么会出现畸变?当前相机的畸变主要分为径向畸变和切向畸变两种。径向畸变产生的原因:相机的光学镜头厚度不均匀,离镜头越远场景的光线就越弯曲从而产生径向畸变。切向畸变产生的原因:镜头与图像传感器不完全平行造成的。相机参数有哪些?相机内参:主要包括相机矩阵(包括焦距,光学中心,这些都是相机本身属性)和畸变系数(畸变数学模型的5个参数 D = {K1,K2,K3,P1,P2})。相机外参:通过旋转和平移将实际场景3D映射到相机的2D坐原创 2020-10-03 17:29:03 · 2264 阅读 · 0 评论 -
OpenCV中的鱼眼相机模型详解
针孔相机、鱼眼相机模型推导:一、针孔相机模型空间的三维物体要成像到相机的 CMOS/CCD 上面,形成了图像。图像上的每个点对应空间上的一个点。将世界坐标系上的一点 (x,y,z)映射到CMOS/CCD图像坐标系上,只要两步:1、世界坐标系的坐标转化到相机坐标系。2、相机坐标系坐标转化到图像坐标系。1.1 世界坐标系到相机坐标系即要将师姐坐标系上的点(Xw,Yw,Zw)T转化成相机坐标系上的点(Xc,Yc,Zc)T。根据线性代数(计算机图形学)的知识可以知道,坐标系的转化只需要将原坐标乘以原创 2020-10-03 15:39:56 · 1505 阅读 · 0 评论 -
鱼眼相机的相关知识
鱼眼镜头鱼眼镜头是具有超广视角的镜头。与一般的广角镜头、超广角镜头相比,在设计规格上,鱼眼镜头的焦距更短、视角更广。相同画幅和像素尺寸下,鱼眼镜头能容纳更多景物信息。根据鱼眼投影圆与成像面的几何关系分类:圆形鱼眼图鼓型鱼眼图全帧鱼眼图鱼眼镜头模型分类其中r是在成像平面上,对象到光轴的距离f是镜头的焦距a是入射光线与光轴的夹角鱼眼镜头模型优缺点比较:径向畸变公式:薄透镜畸变公式:离心畸变公式:其中δxr表示在二维平面坐标系中x轴上的径向畸变距离,δxr表示在y原创 2020-10-02 23:28:51 · 595 阅读 · 0 评论 -
无人车传感器 IMU 深入剖析
为了能让无人驾驶系统更高频率地获取定位信息,就必须引入频率更高的传感器。这就是这一次内容的主角——IMU(Inertial Measurement Unit)惯性测量单元。下图就是百度Apollo计划推荐使用的IMU——NovAtel SPAN-IGM-A1。GPS得到的经纬度信息作为输入信号传入IMU,IMU再通过串口线与控制器相连接,以此获取更高频率的定位结果。IMU的原理当我们晚上回到家,发现家里停电时,眼睛在黑暗中什么都看不见的情况下,只能根据自己的经验,极为谨慎地走小碎步,并不断用手摸周原创 2020-07-26 16:05:33 · 1125 阅读 · 0 评论 -
无人车传感器 GPS 深入剖析
如果要完成 Apollo 1.0 的“封闭场地寻迹自动驾驶”功能,需要解决一个重要的问题:我(无人车)在哪?“我在哪”这个问题,在 Apollo 1.0 的架构中完全依赖 GPS(全球定位系统) 和 IMU(惯性测量单元)。GPS定位原理很简单GPS是全球定位系统(Global Position System)的简称,常见于汽车、手机中。民用GPS的定位精度在10~20米之间,这是为什么用手机的GPS定位,有时候明明在陆地上,却被认为在河里的原因。GPS定位的原理很简单,叫做三角定位法(Trian.原创 2020-07-26 15:57:24 · 569 阅读 · 0 评论 -
多传感融合内外参标定:lidar-imu外参标定工具lidar_align
多传感融合多传感融合是目前移动机器人、无人驾驶、带Marker AR等前沿人工智能技术的重要解决方案和发展方向之一。由于上述技术都不可避免地涉及在欧式空间定位这一基本感知问题,本系列涉及的传感器就包括了惯性位姿传感器imu/gps/ins、测地激光雷达lidar、摄像机camera等等传感器,会介绍一些标定各传感器内外参数的工具。多数工具会提供其Github链接,并对其适用情况和局限性进行评述。传感器内参与外参标定传感器时必须要遵守的一大原则是:用精度高的测量规范对精度低的测量规范进行校正,例如:量原创 2020-07-26 11:23:51 · 1973 阅读 · 0 评论 -
KITTI 64线激光点云投影相机图像
代码链接:https://gitee.com/long_xiao_wyh/KITTI_FUSIONKITTI DatasetKITTI数据集是一个非常有名的自动驾驶场景下的计算机视觉算法评测数据集。该数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,4个变焦镜头,一个Velodyne 64线激光雷达,一个GPS导航系统:1惯性导航系统(GPS / IMU):OXTS RT 30031 Laserscanner:Velodyne HDL-64E2个灰度相机,1.4百万像素:Point Gre原创 2020-07-26 00:08:06 · 1787 阅读 · 1 评论 -
激光雷达和相机联合标定
实现联合标定的框架主要有Autoware、Apollo、lidar_camera_calibration、but_velodyne,具体请参考:激光雷达和相机的联合标定。虽然这些框架已经帮我们实现了,但是框架对使用的雷达和相机的品牌有要求。准备工作需要一个标定板,尺寸可以自己定,但是需要雷达和相机都能捕捉到的,当然,雷达捕捉到的数据越多越好。然后把标定板悬空放置,如下图所示。为什么要这么做呢?其实就是方便后序在激光雷达捕获的点云中,分离出这个标定板。好了,现在调整好雷达和相机,转到合适位置,在相同位原创 2020-07-17 23:49:25 · 2155 阅读 · 0 评论 -
camera-imu内外参标定
在vio系统中,camera-imu间内外参精确与否对整个定位精度起着重要的作用。所以良好的标定结果是定位系统的前提工作。目前标定算法主要分为离线和在线标定,离线标定以kalibr为代表,能够标定camera内参、camera-imu之间位移旋转、时间延时以及imu自身的刻度系数、非正交性等。本文基于kalibr[2]整体框架,介绍标定算法原理。相机投影模型这里以常用的针孔相机投影为例,而畸变模型包括最常见rantan、equidistant两种。对于其他投影、畸变模型可查阅相关资料,这里不详细叙说转载 2020-07-15 11:30:22 · 1136 阅读 · 0 评论 -
学习Kalibr工具--Camera与IMU联合标定过程
上一节介绍了,用kalibr工具对camera进行标定的操作流程,在camera标定之好之后,进行camera与IMU进行联合标定的操作的学习,即求取相机和IMU 之间的转换关系(坐标系之间的相对位姿矩阵);需要先知道相机的内外参数(单目的内外参数和双目的内外参数),用kalibr工具进行 单目标定或者双目标定上一节已介绍。这里以双目+IMU为例进行介绍相机和IMU 的联合标定,也叫多传感器融合;一、camera - IMU相机标定介绍参考链接:https://github.com/ethz-asl/转载 2020-07-15 10:19:49 · 2426 阅读 · 1 评论 -
学习Kalibr工具--Camera标定过程
这里介绍用kalibr工具对相机进行单目和双目的标定;在kalibr中不仅提供了IMU与camera的联合标定工具,也包含了camera的标定工具箱;准备:安装好kalibr之后,开始准备标定板,在kalibr中适用于三种标定板,分别是:Aprilgrid,Checkerboard和Circlegrid。其中checkboard最常用,但是aprilgird精度最好,因为它可以提供序号信息,能够防止姿态计算时出现跳跃的情况。制作标定板:这里使用aprilgrid标定板,可以使用kalibr自带工转载 2020-07-15 09:41:00 · 2224 阅读 · 0 评论 -
Camera-LIDAR 联合标定方法总结
Autoware 提供了一个 CalibrationToolKit 联合标定雷达和相机的工具,下面的链接记录了标定过程,建议使用这个工具来标定,精度要高点:Autoware 工具 CalibrToolKit 标定 Robosense 雷达和 ZED 相机!Robosense-16 雷达和 ZED 双目相机的联合标定过程:Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定!一、Camera-Lidar 联合标定标定就是找到雷达到相机的空间转换关系,在不同的坐标系之间原创 2020-07-14 21:34:42 · 1539 阅读 · 0 评论 -
深度学习基于摄像头和激光雷达融合的3-D目标检测
论文地址:https://arxiv.org/abs/2004.03080源码地址:https://gitee.com/long_xiao_wyh/pseudo-LiDAR_e2e以前在传感器融合讲过数据级的融合(深度图)和任务级的融合(比如检测),大家有时候讨论前融合和后融合的区别,或者是一种中间层融合。提到过的摄像头和激光雷达在目标检测任务的融合方法,有AVOD、PointFusion、RoarNet和F-PointNets等。这里列出一些论文讨论。“MLOD: A multi-view 3D o转载 2020-07-03 09:42:28 · 7242 阅读 · 2 评论 -
相机标定的基本原理
来源:3D视觉工坊第二期直播课PPT链接:https://pan.baidu.com/s/1N3m8kvDL9VjlfsUa-VosUw 密码:eunc原创 2020-07-01 22:54:01 · 272 阅读 · 0 评论 -
传感器融合-SFND_3D_Object_Tracking源码解读(五)
matching2D_Student.cpp#include <numeric>#include "matching2D.hpp"using namespace std;// 根据几种匹配方法找到两张相机图像中关键点的最佳匹配void matchDescriptors(std::vector<cv::KeyPoint> &kPtsSource, std::vector<cv::KeyPoint> &kPtsRef, cv::Mat &原创 2020-06-14 17:03:51 · 449 阅读 · 0 评论 -
传感器融合-SFND_3D_Object_Tracking源码解读(四)
camFusion_Student.cpp#include <iostream>#include <algorithm>#include <numeric>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include "camFusion.hpp"#include "dataStructures.h"using names原创 2020-06-14 16:32:40 · 499 阅读 · 0 评论 -
传感器融合-SFND_3D_Object_Tracking源码解读(三)
lidarData.cpp#include <iostream>#include <algorithm>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include "lidarData.hpp"using namespace std;// 根据X,Y,Z的最小和最大值去除激光雷达点void cropLidarPoints(std::v原创 2020-06-13 23:08:20 · 411 阅读 · 0 评论 -
传感器融合-SFND_3D_Object_Tracking源码解读(二)
objectDetection2D.cpp此文件主要做的是在OpenCV上使用YOLOv3,YOLO是什么原理?我们可以把目标检测看成是目标定位和目标识别的结合。在传统的计算机视觉方法中,采用滑动窗口查找不同区域和大小的目标。因为这是消耗量较大的算法,通常假定目标的纵横比是固定的。早期的基于深度学习的目标检测算法,如R-CNN和快速R-CNN,采用选择型搜索(Selective Search)来缩小必须测试的边界框的数量(本文的边界框指的是,在预测到疑似所识别到的目标后,在图片上把对象框出的一个矩原创 2020-06-13 18:28:45 · 724 阅读 · 0 评论 -
传感器融合-Lidar and Radar Sensorfusion源码解读
1.完整代码地址:链接:https://pan.baidu.com/s/1bV7ImmrRmee7KBQRKdQX6Q提取码:x8hn2.理论部分:3.代码部分(1)初始化(initialization)使用Eigen库中非定长的数据结构,下图中的VerctorXd表示X维的列矩阵,其中的元素数据类型为double。#include "Eigen/Dense"class KalmanFilter {public: KalmanFilter(); ~KalmanFilt原创 2020-06-12 23:50:06 · 1000 阅读 · 0 评论 -
传感器融合-SFND_3D_Object_Tracking源码解读(一)
1.FinalProject_Camera.cpp这个文件中存放的主要是主函数首先先放出需要用到的自定义结构体struct LidarPoint { // single lidar point in space double x,y,z,r; // x,y,z in [m], r is point reflectivity};struct BoundingBox { // bounding box around a classified object (contains both 2D a原创 2020-06-12 16:44:46 · 895 阅读 · 0 评论 -
传感器融合-SFND_3D_Object_Tracking环境配置
1.环境:cmake >= 2.8All OSes: click here for installation instructionsmake >= 4.1 (Linux, Mac), 3.81 (Windows)Linux: make is installed by default on most Linux distrosMac: install Xcode command line tools to get makeWindows: Click here for install原创 2020-06-11 10:56:17 · 940 阅读 · 1 评论