点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

整理丨古月居

相机的参数

参考:

https://blog.csdn.net/weixin_43206570/article/details/84797361

摄像机标定(Camera calibration)是从空间点及其对应的像素点,获得相机的位置信息和内部参数信息的过程。

  • 相机外参:从世界坐标坐标系到相机坐标系

  • 相机内参:从相机坐标系到图像坐标系

简要总结:单目相机共有 16 个参数:

补充知识:齐次坐标

参考:相机标定详细讲解

https://www.jianshu.com/p/7d97fccd79bb

齐次坐标系:能够明显的区分点与向量,并且便于计算机做图形处理时进行仿射变换的坐标系。

例如,在欧式空间,表示一个三维的点和一个三维的向量可以采用如下的方法:

由于向量只有方向和大小,如果只给出( x , y , z ) , 如何确定这是向量还是点呢?

P可以看做是一个相对于原点的位移,那么

写成矩阵的形式:

可以看到,点和向量区分的方式是最后一个数值是否为1。

从普通坐标系变换到齐次坐标系,如果是点( x , y , z ) 则变换为( x , y , z , 1 ),如果是向量( x , y , z ) 则变换为( x , y , z , 0 ) 。

1.1 小孔成像原理

相机中有四个坐标系,分别为{world},{camera},{image},{pixel}

1.2 相机外参

从{world}到{camera}坐标系变换

1.3 相机内参

从{camera}到{image} 坐标系变换

从{image}到{pixel}的坐标变换

1.4 综合:从{world}到{pixel} 的坐标转换

矩阵表示为:

1.5 畸变参数

径向畸变(桶形畸变和枕形畸变)

径向畸变产生原因:光线在远离透镜中心的地方偏折更大。

矫正公式:

式中,( x , y ) 是畸变后图像像素点的坐标, (x_{cor},y_{cor})是理想的无畸变的坐标(图像坐标系),r是该点距成像中心的距离

切向畸变 (薄透镜畸变和离心畸变)

切向畸变产生原因:透镜制造上的缺陷使得透镜不完全平行于图像平面,这种现象发生于成像仪被粘贴在摄像机的时候。

矫正公式:

由此得到相机的5个畸变参数:D ( k 1 , k 2 , k 3 , p 1 , p 2 )

对于质量比较好的相机来说,切向畸变很小,可忽略,径向畸变系数k 3也可忽略,只计算k 1 , k 2 两个参数。张正友标定中就默认p 1 , p 2 为0。

1.6 一个实例:Azure kinect 相机的参数

K4A Calibration Blob:

RGB Camera Format: bgra

RGB Camera Resolution: 720P

Depth Camera Mode: NFOV_UNBINNED

/depth/camera_info

rgb/camera_info

2. 相机内参标定

2.1 相机标定方法

总上所述,单目相机共有 16 个参数:

通常所说的相机标定即标定相机的内参。一般采用张正友标定法。

张正友标定法只考虑了径向畸变,没有考虑切向畸变。

标定流程:

1.准备棋盘格

棋盘格黑白间距已知,可采用打印纸或者购买黑白棋盘标定板(精度要求高)。

2.拍摄若干张标定板图片

此处分两种情况:

(1) 标定畸变系数和相机内参,拍摄照片需要包含完整棋盘,同时需要不同距离,不同方位,同时需要有棋盘不同倾斜角度。

(2) 标定畸变系数,相机内参和相机外参,图片包含上述要求,同时标定程序生成结果中每张照片会计算一个相机外参数因此根据实际需求,增加几张棋盘在工作位置的照片。(相机外参建议采用solvePnP函数获取)

3.检测图片中的棋盘格内角点,提取亚像素角点信息

4.估算理想无畸变的情况下,五个内参和六个外参。

5.应用最小二乘法估算实际存在径向畸变下的畸变系数。

6.极大似然法,优化估计,提升估计精度。

2.2 camera_calibration

  • ros:camera_calibration

    http://wiki.ros.org/camera_calibration/

  • ros:How to Calibrate a Monocular Camera

    http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration

camera_calibration 是一个ros功能包,可以方便快捷的完成相机标定。

标定步骤如下(未亲测):

首先,请下载标定板。教程中使用的是8X6,边长为108mm的棋盘标定板。

由于标定过程使用的是棋盘内部的角点进行,所以实际上我们使用的是9格X7格的棋盘标定板。

请确保标定环境拥有一个5m×5m的无遮挡环境。

1.安装 camera_calibration

rosdep install camera_calibration
rosmake camera_calibration

或者下载github:camera_calibration包,放到catkin_ws/src下,编译:

https://github.com/ros-perception/image_pipeline/tree/noetic/camera_calibration

cd catkin_ws
catkin_make

2.启动相机驱动,如 azure kinect 相机为:

roslaunch azure_kinect_ros_driver driver.launch
rostopic list #可以看到相机发布 /rgb/image_raw ,/rgb/camera_info 等话题

3.运行标定结点。

需要加载你要标定的相机的 image topic。

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/rgb/image_raw  # camera:=?

来运行标定结点的python脚本,其中

  • -–size 8x6 为当前标定板的大小。

  • -–square 0.108为每个棋盘格的边长,单位为米。

  • image:=/rgb/image_raw 标定当前订阅图像来源自名为/rgb/image_raw的topic。

  • camera:=/rgb为像机名。

之后,将会出现如下图所示的UI。

如果没有打开,请在启动标定节点时添加 --no-service-check 参数,来检查服务结点是否工作。

如果没有看到如图所示的彩色点,请确认–size参数是否正确,尤其注意是否将size设置为了棋盘格数而非其标定角点的数目。

4.移动标定板

为了达到良好的标定效果,需要在像机周围移动标定板:

  • 移动标定板到画面的最左、右,最上、下方

  • 移动标定板到视野的最近和最远处

  • 移动标定板使其充满整个画面

  • 保持标定板倾斜状态并使其移动到画面的最左、右,最上、下方

当标定板移动到画面的最左、右方时,此时,UI的x会达到最小或满值。

同理,y指示标定板的在画面的上下位置,size表示标定板在视野中的距离。

在每个步骤中,保持棋盘格静止,直到图像在标定窗口中高亮显示。

当calibration按钮亮起时,代表你已经有足够的数据进行摄像头的标定,此时请按下calibration并等待一分钟左右。

最后生成到/tmp/calibrationdata.tar.gz一个包,包内如下图。

2.3 查看标定结果

标定完成后,将在终端中看到标定结果,并在标定窗口中看到校准后的图像。

如果标定成功,可以看到本来弯曲标定板的边变成了直线。

如果对标定结果满意,点击Save将结果保存到默认文件夹,点击COMMIT。

数据会自动导入下次启动相机驱动节点时,会自动调用保存的.yaml。

使用camera_calibration_parsers可以进行标定文件格式转换。

版权声明:本文为CSDN博主「zxxRobot」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://blog.csdn.net/zxxxiazai/article/details/108168120

备注:作者也是我们「3D视觉从入门到精通」知识特邀嘉宾:一个超干货的3D视觉学习社区

本文仅做学术分享,如有侵权,请联系删文。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~

机器人抓取—— 相机参数与标定 camera_calibration相关推荐

  1. 物体抓取位姿估計算法綜述_3D视觉技术在机器人抓取作业中的应用

    摘要本文主要研究3D视觉技术在机器人抓取作业中的应用,总 结了3D视觉技术在识别.定位物体时面临的挑战,给出了抓取作业机器 人3D视觉系统的设计方法,归纳了现有的3D表面成像方法和视觉处理算 法,最后 ...

  2. 基于视觉的机器人抓取:从物体定位、物体姿态估计到平行抓取器抓取估计

    编者荐语 抓取综合方法是机器人抓取问题的核心,本文从抓取检测.视觉伺服和动态抓取等角度进行讨论,提出了多种抓取方法. 转载自丨3D视觉开发者社区 目 录 / contents 1. 引言 1.1  抓 ...

  3. 【科普】3D视觉技术在机器人抓取作业中的应用

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 摘要 本文主要研究3D视觉技术在机器人抓取作业中的应用,总 结了3 ...

  4. 【论文笔记】基于深度学习的机器人抓取虚拟仿真实验教学系统

    文章目录 摘要 关键词 0 引言 1 基于深度学习的机器人抓取实验原理 2 机器人抓取虚拟仿真实验设计方案 2.1 虚拟仿真实验系统总体设计 2.2 机器人抓取实验教学过程 3 实验教学考核与管理 4 ...

  5. 机器人识别抓取笔记(基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计:综述)

    Real-Time Deep Learning Approach to Visual Servo Control and Grasp Detection for Autonomous Robotic ...

  6. 伯克利AI实验室最新发文:公布用于机器人抓取的Dexterity Network (Dex-Net) 2.0数据集...

    雷锋网AI科技评论按:伯克利AI实验室最新发文公布了用于机器人抓取的Dexterity Network (Dex-Net) 2.0数据集,这些数据集可以用来训练根据实际机器人的点云做抓取规划的神经网络 ...

  7. 谷歌X最新开源任务驱动的类级别机器人抓取CaTGrasp!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨bowen 来源丨计算机视觉life 大家好,今天给大家介绍谷歌X最新开源任务驱动的类级别机器人 ...

  8. open source 3d map_3D视觉技术在机器人抓取作业中的应用实例

    原标题:3D视觉技术在机器人抓取作业中的应用实例 关键词:3D视觉:工业机器人:抓取 1 引言 3D视觉技术作为新兴的技术领域还存在很多亟待解决的问题,但2D视觉已不能满足空间抓取的应用要求.与2D视 ...

  9. 【机器人识别抓取】基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计

    目录 导读 1 引言 1.1 抓取综合方法 1.2 基于视觉的机器人抓取系统 2 抓取检测.视觉伺服和动态抓取 2.1抓取检测 2.2 视觉伺服控制 2.3 动态抓取 3 本文实现的方法 3.1 网络 ...

最新文章

  1. 【FFmpeg】ffmpeg命令详解(二)
  2. 【GZAdmin】开源BS demo快速搭建
  3. python sys模块作用_浅谈Python中的模块
  4. POJ2446【建图建图】
  5. a*算法matlab代码_NSGAII多目标优化算法讲解(附MATLAB代码)
  6. 38 MM配置-采购-采购订单-采购订单审批-定义采购订单审批过程
  7. 小黑框运行java_初探Java类加载机制
  8. html/css静态网页制作
  9. Singleton(单件)
  10. 黑马程序员传智播客 python 迭代器学习笔记
  11. 【Https(二】】实战 openssl 配置 tomcat
  12. 嗜血法医第一二三季/Dexter全集迅雷下载
  13. 2-5暴力破解防范措施和防范误区
  14. Android 12/12L 全面升级、微信和“吃鸡”都在用 Flutter,2021 Google 开发者大会你看了吗?
  15. Android学习日记(yzy):intent传递的多种数据类型
  16. php eclipse xampp,PHP版eclipse配置xampp
  17. 搭建Vue3 后台管理框架 —— 登录页面
  18. 【HTPC】第一期jellyfin windows版使用显卡硬件转码
  19. 三极管电路共集、共基、共射的区别
  20. MySQL 8 复制(十)——组复制性能与限制

热门文章

  1. 工具管理(资源管理)
  2. mysql上线脚本规范_专业规范的MySQL启动脚本
  3. VMWare网络链接三种方式
  4. ValueError: operands could not be broadcast together with shapes (320,320,4) (3,) (320,320,4)
  5. mqtt协议调用示例(包括MQTT一键启动服务+测试工具 MQTTFX云盘下载),对捷顺门禁温感一体机进行人员信息下发
  6. Chisel 教程翻译 之 第一章:概述介绍《Digital Design with Chisel》
  7. DevExpress Winform LabelControl 文本竖向纵向显示
  8. 平板电脑更新鸿蒙系统,平板电脑已预装鸿蒙系统
  9. unturned服务器重置,《Unturned》服务器建立方法详解
  10. 2020亚太杯数学建模_2020年“博学杯”数学建模竞赛获奖名单公布