精华内容
下载资源
问答
  • 双目相机标定

    2019-07-03 10:17:29
    双目相机标定 标定板下载 #安装标定软件 sudo apt install ros-kinetic-camera-calibration #查看话题 rostopic list #运行/改成自己的话题 rosrun camera_calibration cameracalibrator.py --size 8x6 -...

    双目相机标定

    标定板下载

    #安装标定软件
    sudo apt install ros-kinetic-camera-calibration
    
    #查看话题
    rostopic list
    
    #运行/改成自己的话题
    rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.025 right:=/mynteye/right/image_color left:=/mynteye/left/image_color right_camera:=/mynteye/right left_camera:=/mynteye/left  --approximate=0.1
    

    若不能打开窗口,运行以下语句(加上–no-service-check):

    rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.025 right:=/mynteye/right/image_color left:=/mynteye/left/image_color right_camera:=/mynteye/right left_camera:=/mynteye/left --no-service-check --approximate=0.1
    

    接下来就是慢慢移动标定板,确保图像清晰一点,直到“X”, “Y”, “Size”, “Skew” 底下的长条都变绿了,就可以点击“CALIBRATE”了。

    然后就可以点“SAVE”了, 会在这个路径下生成一个yaml文件: ~/.ros/camera_info

    所用到的图片SAVE之后会保存到这里: /tmp/calibrationdata.tar.gz

    然后点击 “COMMIT”。

    最后重启一次launch文件,就可以自动加载

    Left:
    ('D = ', [0.22900305905164284, 0.1996695880377751, 0.06055069112109537, -0.028099179412161314, 0.0])
    ('K = ', [959.6007440012269, 0.0, 547.575253994228, 0.0, 959.6099160071514, 456.84207687923515, 0.0, 0.0, 1.0])
    ('R = ', [0.9906135330337045, -0.023940285797326565, 0.13457968229426104, 0.0197066651932521, 0.9992708194734359, 0.03270285455199579, -0.13526446509502404, -0.029743773547252685, 0.990362980132904])
    ('P = ', [1217.41632962326, 0.0, 396.5917663574219, 0.0, 0.0, 1217.41632962326, 434.37548828125, 0.0, 0.0, 0.0, 1.0, 0.0])
    
    Right:
    ('D = ', [0.284574043090791, -0.05058030485677456, 0.01980506554411534, -0.08837470956577144, 0.0])
    ('K = ', [952.1003791639667, 0.0, 459.8576487393621, 0.0, 918.7369653436833, 396.07269999508276, 0.0, 0.0, 1.0])
    ('R = ', [0.99997897440505, -0.006085945583433268, 0.002238752817937381, 0.006153030552086344, 0.999491404434999, -0.03129013703355099, -0.0020471841268986796, 0.03130325425429112, 0.9995078365426866])
    ('P = ', [1217.41632962326, 0.0, 396.5917663574219, -180.26650675207264, 0.0, 1217.41632962326, 434.37548828125, 0.0, 0.0, 0.0, 1.0, 0.0])
    ('self.T ', [-0.1480699019351108, 0.0009011643132372325, -0.0003314988801701715])
    ('self.R ', [0.9909908717736964, -0.017730347575466238, 0.13275061896677656, 0.009433604472037931, 0.9979772171371993, 0.06286876157326753, -0.13359677828403752, -0.06105005200607426, 0.9891535735072594])
    None
    
    # oST version 5.0 parameters
    
    [image]
    
    width
    1280
    
    height
    720
    
    [narrow_stereo/left]
    
    camera matrix
    959.600744 0.000000 547.575254
    0.000000 959.609916 456.842077
    0.000000 0.000000 1.000000
    
    distortion
    0.229003 0.199670 0.060551 -0.028099 0.000000
    
    rectification
    0.990614 -0.023940 0.134580
    0.019707 0.999271 0.032703
    -0.135264 -0.029744 0.990363
    
    projection
    1217.416330 0.000000 396.591766 0.000000
    0.000000 1217.416330 434.375488 0.000000
    0.000000 0.000000 1.000000 0.000000
    
    # oST version 5.0 parameters
    
    [image]
    
    width
    1280
    
    height
    720
    
    [narrow_stereo/right]
    
    camera matrix
    952.100379 0.000000 459.857649
    0.000000 918.736965 396.072700
    0.000000 0.000000 1.000000
    
    distortion
    0.284574 -0.050580 0.019805 -0.088375 0.000000
    
    rectification
    0.999979 -0.006086 0.002239
    0.006153 0.999491 -0.031290
    -0.002047 0.031303 0.999508
    
    projection
    1217.416330 0.000000 396.591766 -180.266507
    0.000000 1217.416330 434.375488 0.000000
    0.000000 0.000000 1.000000 0.000000
    
    ('Wrote calibration data to', '/tmp/calibrationdata.tar.gz')
    

    参考:
    内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解
    http://wiki.ros.org/camera_calibration/Tutorials/StereoCalibration

    展开全文
  • 双目相机标定.rar

    2021-01-30 16:44:37
    双目相机标定
  • 双目相机标定代码

    2018-06-14 15:26:28
    该资源主要是针对双目相机标定,可以进行计算机视觉的下一步工作
  • #include <iostream>#include <sstream>#include <time.h>#include <stdio.h>#include <stdlib.h>#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include &l...

    #include &ltiostream&gt

    #include &ltsstream&gt

    #include &lttime.h&gt

    #include &ltstdio.h&gt

    #include &ltstdlib.h&gt

    #include &ltopencv2/core/core.hpp&gt

    #include &ltopencv2/imgproc/imgproc.hpp&gt

    #include &ltopencv2/calib3d/calib3d.hpp&gt

    #include &ltopencv2/highgui/highgui.hpp&gt

    #include &ltopencv2/features2d/features2d.hpp&gt

    #ifndef DEBUG

    #pragma comment(lib, "opencv_features2d249.lib")

    #pragma comment(lib, "opencv_core249.lib")

    #pragma comment(lib, "opencv_highgui249.lib")

    #pragma comment(lib, "opencv_nonfree249.lib")

    #pragma comment(lib, "opencv_imgproc249.lib")

    #pragma comment(lib, "opencv_calib3d249.lib")

    #else

    #pragma comment(lib, "opencv_features2d249d.lib")

    #pragma comment(lib, "opencv_core249d.lib")

    #pragma comment(lib, "opencv_highgui249d.lib")

    #pragma comment(lib, "opencv_nonfree249d.lib")

    #pragma comment(lib, "opencv_imgproc249d.lib")

    #pragma comment(lib, "opencv_calib3d249d.lib")

    #endif

    #ifndef _CRT_SECURE_NO_WARNINGS

    # define _CRT_SECURE_NO_WARNINGS

    #endif

    using namespace cv;

    using namespace std;

    static void help()

    {

    cout &lt&lt "This is a camera calibration sample." &lt&lt endl

    &lt&lt "Usage: calibration configurationFile" &lt&lt endl

    &lt&lt "Near the sample file you'll find the configuration file, which has detailed help of "

    "how to edit it. It may be any OpenCV supported file format XML/YAML." &lt&lt endl;

    }

    class Settings

    {

    public:

    Settings() : goodInput(false) {}

    enum Pattern { NOT_EXISTING, CHESSBOARD, CIRCLES_GRID, ASYMMETRIC_CIRCLES_GRID };

    enum InputType {INVALID, CAMERA, VIDEO_FILE, IMAGE_LIST};

    void write(FileStorage& fs) const //Write serialization for this class

    {

    fs &lt&lt "{" &lt&lt "BoardSize_Width" &lt&lt boardSize.width

    &lt&lt "BoardSize_Height" &lt&lt boardSize.height

    &lt&lt "Square_Size" &lt&lt squareSize

    &lt&lt "Calibrate_Pattern" &lt&lt patternToUse

    &lt&lt "Calibrate_NrOfFrameToUse" &lt&lt nrFrames

    &lt&lt "Calibrate_FixAspectRatio" &lt&lt aspectRatio

    &lt&lt "Calibrate_AssumeZeroTangentialDistortion" &lt&lt calibZeroTangentDist

    &lt&lt "Calibrate_FixPrincipalPointAtTheCenter" &lt&lt calibFixPrincipalPoint

    &lt&lt "Write_DetectedFeaturePoints" &lt&lt bwritePoints

    &lt&lt "Write_extrinsicParameters" &lt&lt bwriteExtrinsics

    &lt&lt "Write_outputFileName" &lt&lt outputFileName

    &lt&lt "Show_UndistortedImage" &lt&lt showUndistorsed

    &lt&lt "Input_FlipAroundHorizontalAxis" &lt&lt flipVertical

    &lt&lt "Input_Delay" &lt&lt delay

    &lt&lt "Input" &lt&lt input

    &lt&lt "}";

    }

    void read(const FileNode& node) //Read serialization for this class

    {

    node["BoardSize_Width" ] &gt&gt boardSize.width;

    node["BoardSize_Height"] &gt&gt boardSize.height;

    node["Calibrate_Pattern"] &gt&gt patternToUse;

    node["Square_Size"] &gt&gt squareSiz

    展开全文
  • 双目相机标定图片拍摄规范

    千次阅读 2020-11-25 23:04:32
    双目相机标定图片拍摄规范 文章目录双目相机标定图片拍摄规范前言一、双目相机的布置二、标定板的选用三、图片采集的规范四、进行标定的软件(选看)五、靶标布置(选看)总结 前言 相机标定是进行视觉测量和定位...

    双目相机标定图片拍摄规范


    前言

    相机标定是进行视觉测量和定位的基础工作之一,标定参数准确与否直接关系到整个系统的精度,标定结果将影响后续进行其他解算。笔者根据自己在双目相机项目中的标定经验,和网络上查询到的大家对标定图片采集的意见进行了总结,现分享如下:

    一、双目相机的布置

    (1)要保证两个相机都是水平放置的,要固定在同一基准平面上,不能让相机有翻滚角,必须保证相机的Y坐标是水平对齐的。

    (2)要保证两个相机的光轴是平行的,即左右相机镜头的朝向一致。不然图像中远处的靶标的像素坐标将产生较大偏移,这会使双目相机在深度-视差映射后,得到的深度不准确,远近分不清。

    在这里插入图片描述

    (3)上图是一个错误示范。从门的角度可以看出,一个相机没水平。同时标定板的角度可以看出,两个相机的光轴也没平行。并且,左右相机还对应反了(这个没什么影响)。

    二、标定板的选用

    (1)标定板一般选择棋盘格标定板,这类标定板不同尺寸和大小的有很多,我们要根据自己的需要,如相机的视场、图像分辨率、工作距离等要求去选择。标定板通常要求在画面中占据1/4至1/2左右,根据这个标准,去选择合适尺寸的标定板。

    (2)棋盘格的参数有两个,第一个是规格,如:8×5。第二个是单元格的尺寸,如:80mm。需要注意,如果选择MATLAB或OpenCV进行标定,这两种工具,主要检测内角点,因此棋盘格的规格就是:(“实际的黑白格行数”-1)×(“实际的黑白格列数”-1)。具体如下图,例如这个棋盘格看着是9×6,其实是8×5的,数已经检测出来的角点数,也可以对应出来。

    在这里插入图片描述

    (3)标定板打印时,最好选择高精度的打印机,感觉打印的比较好。同时,标定板在标定过程中需要保持平整,因此常将标定板打印为那种可以背面粘贴的,粘贴至硬板上,如KT板。但我个人认为KT板也比较软,表面也不够平整,可以粘贴至木板、钢板上。实验室现在是粘贴至雾化处理的玻璃上,表面很平整,同时玻璃也不透光。打印的纸材也要选择反光不那么强的纸材。

    三、图片采集的规范

    (1)标定图片的数量通常在20~30张之间,图像数量太少,容易导致标定参数不准确。

    (2)标定板的成像尺寸应大致占整幅画面的1/4至1/2左右。但标定板在画面中必须完整,要完整的检测出所有角点。

    (3)选择合适光源对标定板进行打光,保证标定板的亮度足够且均匀,并且不会出现过曝等反光情况。

    在这里插入图片描述

    (4)标定的时候在上图五个部分都应该进行标定板图像的采集,且在四个象限与中间的位置,不止需要正着拍摄标定板还需要再扭转2种角度,这样就至少有15组图像了。使标定板在图像的角,是为了更好的验证相机的径向畸变(桶形畸变与枕形畸变)。

    (5)标定的时候要注意相机的工作距离,以我标定的双目相机为例,工作的距离是2m至8m,那么2m和8m处的标定图像也一定要采集到。我主要关心的工作距离是6m左右,那么我在6m距离采集的图像会多一些,占图像比例会大一些。

    四、进行标定的软件(选看)

    (1)标定软件我一般选用MATLAB或OpenCV,目前看来,我觉得MATLAB标定更简单,也标定的更加准确?但是利用OpenCV能够好的结合我后续的一些算法进行实验。

    (2)MATLAB标定同样有两种方法,一种自动导入图像即可,一种需要手动选择角点,这两种方法的标定结果会有一些差别。我的老师认为手动选择角点的误差有点大,我自己是觉得手动的很麻烦,而且自动标定的结果,目前看来也比较准确,因此推荐自动标定。直接命令行输入:stereoCameraCalibrator进入标定模块。

    五、靶标布置(选看)

    (1)选择一些可以在图像中快速检测出来的靶标,打印出来,在标定后,可以进行靶标检测。通过匹配检测到的靶标结算点,省去对整幅图像进行立体匹配,然后计算视差和深度,验证双目相机的工作效果。

    (2)靶标建议布置在左右两相机连线的中垂线上,这样对于左右相机来说,图像质量和距离比较平均,算出来的值也比较好。


    总结

    双目相机的标定真的很重要,好的标定结果得来不易,尤其对于自己设计的相机系统,相机的标定是开展任务的第一步,需要认真准备。

    展开全文
  • 01 前言双目相机标定,从广义上讲,其实它包含两个部分内容:两台相机各自误差的标定(单目标定)两台相机之间相互位置的标定(狭义,双目标定)在这里我们所说的双目标定是狭义的,讲解理论的时候仅...

    01 前言

    双目相机标定,从广义上讲,其实它包含两个部分内容:

    • 两台相机各自误差的标定(单目标定)

    • 两台相机之间相互位置的标定(狭义,双目标定)

    在这里我们所说的双目标定是狭义的,讲解理论的时候仅指两台相机之间相互位置的标定,在代码实践的时候,我们才说完整的双目标定。

    首先来思考一个问题:为什么要进行双目标定?

    这是因为在许多三维重建算法中,我们都要知道两台相机之间的相对位置关系,这样才能进行距离计算。

    双目标定前后,双目模型对比如下图所示:

    图1 标定模型 [1]

    其中:

    • 基线:两个光心的连线称为基线;

    • 极平面:物点(空间点M)与两个光心的连线构成的平面称为极平面;

    • 极线:极平面与成像平面的交线

    • 极点:极线的一端,基线与像平面的交点

    • 像点

    展开全文
  • 双目相机标定程序,值得参考。里面还有标定的参考图片
  • 采用改进遗传算法优化神经网络的双目相机标定.pdf
  • 差分遗传算法优化BP神经网络的双目相机标定.pdf
  • matlab工具箱,可完成单目相机的标定双目相机标定,调用方便。
  • 现有双目相机标定的方法是通过矩阵变换求得各个相机间的旋转平移关系,再通过优化求得最终参数。非线性优化步骤多,相机内外参数与镜头畸变存在耦合,时间花费较大。提出一种畸变矫正与平面单应性矩阵结合的双目相机...
  • 双目相机标定结果内参及外参验证

    千次阅读 2019-07-12 14:32:54
    双目相机标定结果(内参,外参)验证–在OpenGL中重投影目标模型到图像平面,与左右视角图像中的模型同时重合 相机标定是计算机视觉任务中比较基础且重要的前提步骤。单目相机的标定可以直接用来对图像进行反扭曲处理...
  • 双目相机标定:matlab和photoscan
  • 双目相机标定的原理可太多了,反而对于标定结果的解析却很少。在这里对相机的内参和双目标定的内参详细解释。 拍图时要注意:1)双目标定拍照时,要保证标定板精度高,我用的12×9,每个格25mm。 2)标定板图像占...
  • 单目相机标定: 1.张正友:A Flexible New Technique for Camera Calibration 2.https://sites.google.com/site/scarabotix/ocamcalib-toolbox
  • 双目相机标定OpenCV源码讲解背景介绍所述内容参考资料摄像机标定部分代码代码思路代码中的其他函数找角点&求内参求外参求矫正映射矩阵后记 背景介绍 暑假接近两个月的时间做了一个实习项目,项目内容是双目视觉...
  • 一、制作标定板将下图打印:图一将打印出的纸固定放到一个平板上,使用同一相机从不同的位置,不同的角度,拍摄标定板的多张照片(10-20张最佳),将照片放到文件夹中:二、提取标定板的世界坐标需要注意标定板的...
  • 转载双目相机标定以及立体测距原理及OpenCV实现 http://blog.csdn.net/dcrmg/article/details/52986522?locationNum=15&fps=1 单目相机标定的目标是获取相机的内参和外参,内参(1/dx,1/dy,Cx,Cy,f)表征了...
  • 双目相机标定Matlab

    千次阅读 2019-05-28 13:39:07
    在之前的博客上已经介绍了如何使用opencv进行双目相机标定,今天使用MATLAB进行双目相机标定。 首先需要参考这篇博客将双目拍摄的图片分割成左右两部分: ...下面讲解MATLAB双目标定具体过程: ...
  • 基于opencv的双目相机标定代码

    热门讨论 2015-11-23 17:34:26
    双目标定代码。解决方案Opencv已配置好。里面有说明文档和实验图片。可以直接运行,也可以根据自己的需要重新拍摄图像进行双目标定
  • ROS--双目相机标定中遇到的问题

    千次阅读 2018-01-26 23:25:23
    ROS–双目相机标定中遇到的问题 现象 使用两个usb_cam分别发布image_raw话题后(如官网上所要求的),再执行rosrun camera_calibration cameracalibrator.py … 进行标定时,窗口变黑,无响应。 反省 这个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,828
精华内容 1,931
关键字:

双目相机标定