CalibLibtxt1 Code Learning
2017-8-15
| 2023-1-28
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon

Materials

Crucial links
光学镜头参数详解(EFL、TTL、BFL、FFL、FBL/FFL、FOV、F/NO、RI、MTF、TV-Line、Flare/Ghost) - 一杯清酒邀明月 - 博客园
1、EFL(Effective Focal Length)有效焦距 定义:指镜头中心到焦点的距离(下图)。 镜头的焦距分为像方焦距和物方焦距(下图): 像方焦距是指像方主面(后主面)到像方焦点(后焦点)的 距离。 物方焦距是指物方主面(前主面)到物方焦点(前焦点)的距离。 (1)焦距过短则视场角过大,导致畸变和主光线出射角难以控制,相对照度过低, 镜片弯曲严重,相差校正困难,因此难以设计。 (2)焦距过长镜头将过长,不利于系统小型化,而且视场角过小,不能满足用户 需求(FOV>60°) 2、TTL(Total Track Length) 镜头总长 镜头总长分为光学总长和机构总长: 光学总长是指由镜头中镜片的第一面到像面的距离。 机构总长是指由镜筒端面到像面的距离。 3、BFL(Back Focal Length)光学后焦距定义: 由光学系统中镜片的最后一面到像面的距离。 4、FFL(Front Focal Length)光学前焦距 定义:由光学系统中镜片的第一面到物面的距离 注意事项:要与机构后焦距FFL区分 5、FBL/FFL(Flange Focal Length)机构后焦(法兰焦距) 定义:由镜组的最后一个机构面到像面的距离 6、FOV(Field Of View)视场角定义: 是指镜头能拍摄到的最大视场范围。 视场角可分为对角线视场角(FOV-D)、水平视场角(FOV-H)、以及垂直视场角(FOV-V)。 对角线视场角最大,水平视场角次之,垂直视场角最小。通常我们所讲的视场角一般是指 数码摄像模组的对角线视场角。 FOV-H=2tan(H/2D) FOV-V=2tan(V/2D) FOV-D=2tan[sqrt(H2+V2)/2D] 7、F/NO.(F-Number)焦数(相对孔径) 定义:有效焦距与入射瞳孔径的比值。 F/#=EFL/EPD (EPD:入射瞳孔径) 作用:用来决定镜头之明暗。 备注:在保证同样通光孔径的前提下,焦距越短相对孔径应越小。 一般情况下 F/#=2.8,但单片设计时F/#=3.2,N/B
 

Theory Introduction

Pinhole camera model, optical center (o)
Coordinate
图像处理--相机标定(Camera calibration)_fengye2two的专栏-CSDN博客_图像标定
非常感谢以下五位的渊博知识: (1) 牧野- https://blog.csdn.net/dcrmg/article/details/52939318 (2) chaooooooo https://blog.csdn.net/chao56789/article/details/47040285 (3) jason_ql https://blog.csdn.net/lql0716/article/details/71973318?locationNum=8&fps=1 (4) holybin https://blog.csdn.net/holybin/article/details/41122493 (5) M&Q https://blog.csdn.net/qq_45427038/article/details/100210704 一、相机标定(Camera calibration)原理 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。 常用术语 内参矩阵: Intrinsic Matrix 焦距: Focal Length 主点: Principal Point 径向畸变: Radial Distortion 切向畸变: Tangential Distortion 旋转矩阵: Rotation Matrices 平移向量: Translation Vectors 平均重投影误差: Mean Reprojection Error 重投影误差: Reprojection Errors 重投影点: Reprojected Points 首先介绍一下坐标系转换中用到的4种坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 坐标系转换就是为了将空间的三维世界坐标系转换至图像处理的二维像素坐标系。 世界坐标系(world coordinate)( x w, y w, z w),也称为测量坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。世界坐标系的最小单位为mm。 相机坐标系(camera coordinate)( x c, y c, z c),也是一个三维直角坐标系,原点位于镜头光心处,xc、yc轴分别与像面的两边平行,zc轴为镜头光轴,与像平面垂直。相机坐标系的最小单位为mm。 图像坐标系(image coordinate)( x, y),是像平面上的二维直角坐标系。图像坐标系的原点为镜头光轴与像平面的交点(也称主点,principal point),它的x轴与相机坐标系的xc轴平行,它的y轴与相机坐标系的yc轴平行。图像坐标系的最小单位为mm。 像素坐标系(pixel coordinate)( u, v),是图像处理工作中常用的二维直角坐标系,反映了相机CCD/CMOS芯片中像素的排列情况。它的原点位于图像左上角,横坐标u表示像素所在的列,纵坐标v表示像素所在的行。像素坐标系与图像坐标系可以简单理解为平移关系,它们同处于像平面。像素坐标系的x轴与图像坐标系的u轴平行,像素坐标系的y轴与图像坐标系的v轴平行。像素坐标系的最小单位为像素。 像素坐标系与图像坐标系是平移关系: 它们之间的转换矩阵关系为: dX、dY表示单一像素在x轴和y轴方向上的物理长度(其单位可理解为 mm/像素)。 u0,v0为主点(图像原点)坐标。 1.6.1 相机成像 相机的镜头相当于一个凸透镜,感光元件就处在这个凸透镜的焦点附近,所成的像是一个倒像。在实际中,当物距足够远时(远大于两倍焦距),凸透镜成像可以看作是在焦距处的小孔成像,即所谓的"针孔模型"。通过针孔模型,我们可以得到三维坐标到二维坐标的的对应关系。 1.6.2 小孔成像 Q点位于图像坐标系,P点位于相机坐标系。根据三角形相似原理,上图可以得到如下比例关系: 1.6.3 变换矩阵 将Xp、Yp、Zp用相机坐标系的Xc、Yc、Zc表示,xQ、yQ用图像坐标系的x、y表示,并变换x、y到左边: 所以,相机坐标系与图像坐标系之间的矩阵变换关系为: ...
图像处理--相机标定(Camera calibration)_fengye2two的专栏-CSDN博客_图像标定
It seems that there are errors inside.
Parameters calculated by the least-square method
For example
相机标定(Camera calibration)原理、步骤_唐僧洗头用飘柔dp的博客-CSDN博客
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。 常用术语 内参矩阵: Intrinsic Matrix 焦距: Focal Length 主点: Principal Point 径向畸变: Radial Distortion 切向畸变: Tangential Distortion 旋转矩阵: Rotation Matrices 平移向量: Translation Vectors 平均重投影误差: Mean Reprojection Error 重投影误差: Reprojection Errors 重投影点: Reprojected Points 世界坐标系(world coordinate)(xw,yw,zw),也称为测量坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。 相机坐标系(camera coordinate)(xc,yc,zc),也是一个三维直角坐标系,原点位于镜头光心处,x、y轴分别与相面的两边平行,z轴为镜头光轴,与像平面垂直。 其中R为3*3的旋转矩阵,t为3*1的平移矢量,(xc,yc,zc,1)T(xc,yc,zc,1)T为相机坐标系的齐次坐标,(xw,yw,zw,1)T(xw,yw,zw,1)T为世界坐标系的齐次坐标。 ### 1.4 像素坐标系、图像坐标系 - 像素坐标系(pixel coordinate) 如图,像素坐标系uov是一个二维直角坐标系,反映了相机CCD/CMOS芯片中像素的排列情况。原点oo位于图像的左上角,uu轴、vv轴分别于像面的两边平行。像素坐标系中坐标轴的单位是像素(整数)。 其中,dX、dY分别为像素在X、Y轴方向上的物理尺寸,u0,v0为主点(图像原点)坐标。 如图,空间任意一点P与其图像点p之间的关系,P与相机光心o的连线为oP,oP与像面的交点p即为空间点P在图像平面上的投影。 该过程为透视投影,如下矩阵表示: 其中,ss为比例因子(ss不为0),ff为有效焦距(光心到图像平面的距离),(x,y,z,1)T(x,y,z,1)T是空间点PP在相机坐标系oxyzoxyz中的齐次坐标,(X,Y,1)T(X,Y,1)T是像点pp在图像坐标系OXYOXY中的齐次坐标。 其中,αx=f/dXαx=f/dX、αy=f/dYαy=f/dY,称为u、v轴的尺度因子,M1称为相机的内部参数矩阵,M2称为相机的外部参数矩阵,M称为投影矩阵。 ## 2 相机内参与畸变参数 ### 2.1 相机内参 - 参看1.6节所述 畸变参数(distortion parameters) 畸变(distortion)是对直线投影(rectilinear projection)的一种偏移。 简单来说直线投影是场景内的一条直线投影到图片上也保持为一条直线。 畸变简单来说就是一条直线投影到图片上不能保持为一条直线了,这是一种光学畸变(optical aberration),可能由于摄像机镜头的原因。 畸变一般可以分为:径向畸变、切向畸变 1、径向畸变来自于透镜形状 2、切向畸变来自于整个摄像机的组装过程。畸变还有其他类型的畸变,但是没有径向畸变、切向畸变显著 下面是几张反应畸变的图像 径向畸变 实际摄像机的透镜总是在成像仪的边缘产生显著的畸变,这种现象来源于"筒形"或"鱼眼"的影响。如下图,光线在原理透镜中心的地方比靠近中心的地方更加弯曲。对于常用的普通透镜来说,这种现象更加严重。筒形畸变在便宜的网络摄像机中非常厉害,但在高端摄像机中不明显,因为这些透镜系统做了很多消除径向畸变的工作。 对于径向畸变,成像仪中心(光学中心)的畸变为0,随着向边缘移动,畸变越来越严重。 径向畸变包括:枕形畸变、桶形畸变 切向畸变 切向畸变是由于透镜制造上的缺陷使得透镜本身与图像平面不平行而产生的。 切向畸变可分为:薄透镜畸变、离心畸变 切向畸变图示: 2.2.1 opencv中的畸变模型 相机标定步骤 1、打印一张棋盘格,把它贴在一个平面上,作为标定物。 ...
相机标定(Camera calibration)原理、步骤_唐僧洗头用飘柔dp的博客-CSDN博客
摄像机内参、外参矩阵_葫芦与瓢的博客-CSDN博客_摄像机内参矩阵
摄像机矩阵 由P由内参矩阵和外参矩阵组成,对摄像机矩阵进行QR分解可以得到内参矩阵和外参矩阵 在opencv的3D重建中(opencv中文网站中:照相机定标与三维场景重建),对摄像机的内参外参有讲解: 外参:摄像机的旋转平移属于外参,用于描述相机在静态场景下相机的运动,或者在相机固定时,运动物体的刚性运动。因此,在图像拼接或者三维重建中,就需要使用外参来求几幅图像之间的相对运动,从而将其注册到同一个坐标系下面来 内参:下面给出了内参矩阵,需要注意的是,真实的镜头还会有径向和切向畸变,而这些畸变是属于相机的内参的。 摄像机内参矩阵: fx s x0 K = 0 fy y0 0 0 1 其中,fx,fy为焦距,一般情况下,二者相等,x0、y0为主点坐标(相对于成像平面),s为坐标轴倾斜参数,理想情况下为0 摄像机外参矩阵:包括旋转矩阵和平移矩阵 旋转矩阵和平移矩阵共同描述了如何把点从世界坐标系转换到摄像机坐标系 旋转矩阵:描述了世界坐标系的坐标轴相对于摄像机坐标轴的方向 平移矩阵:描述了在摄像机坐标系下,空间原点的位置 此文中有更详细的解释: https://blog.csdn.net/baidu_38172402/article/details/81949447 通俗来讲,相机标定分两块: 相机外参:用于描述从世界坐标系变换到相机坐标系,以其为基准,可以描述相机的位置和观测物体的位置为最宏观的坐标系,可以根据实际情况来确定,如果是单目相机,基本可以认为是重叠。单如果是涉及多个相机,比如在图片拼接或者三维重建中,涉及到多个世界坐标系,就需要将世界坐标系进行统一,从而将不同的相机拍摄的图像注册到一个坐标系下来。 相机内参 以下转载自上面的链接 整体的坐标转换如下:世界坐标系转换为像素坐标系 上面的式子也等于:MXw ,其中M成为投影矩阵,是相机内参矩阵和相机外参矩阵的乘积。 其中 f 为摄像机的焦距,单位一般是mm;dx,dy 为像元尺寸;u0,v0 为图像中心。fx = f/dx, fy = f/dy,分别称为x轴和y轴上的归一化焦距.
摄像机内参、外参矩阵_葫芦与瓢的博客-CSDN博客_摄像机内参矩阵
 

demosaic

💡
New code function learned:
 

deYUV

彩色电视为了与黑白电视兼容,必须传送一个亮度信号,以便黑白电视机接收。在彩色电视中,常用两个色差信号(B-Y)和(R-Y)来代表色度信息,它们与彩色摄像机输出的R、G、B三基色信号存在下列关系:

read_yuv422_mode1_by_numpy

 

demosaicRaw

Demosaic the 16bit and 8bit raw to RGB color, take RCCB as RGGB
 

matrix2uint8

Limit the image raw8 which is to be returned in [0, 255]
 
💡
New code function learned:
 

WhiteBalance

The old code uses OpenCV 3.1.0
 

 

calib1cam

 

calib1cam_chessboard

 

 

calib1cam_dots

 

 

blobdetc

 

 

picklekp

pickle.dump
 

 

kpsort1

💡
Sort the keypoints from left to right, from top to bottom!
  • d1_sq: The point that has the farthest distance from the end of the image. That is to say, the one that is closest to the origin point.
  • d2_sq: The second
  • d1_sq > d2_sq
  • Purpose: Find the beginning of the dots.
 
Different cases of I & j:
i=0, j=0
notion image
i>0, j=0
notion image
i>0, j>0
notion image
 

 

fitpinhole

  • ret = retval: the overall RMS re-projection error.
  • mtx = cameraMatrix: Input/output 3x3 floating-point camera intrinsic matrix A.
    • If CALIB_USE_INTRINSIC_GUESS and/or CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be initialized before calling the function.
  • dist = distCoeffs: Input/output vector of distortion coefficients "A vector"of 4, 5, 8, 12 or 14 elements.
  • rvecs: Output vector of rotation vectors (Rodrigues ) estimated for each pattern view (e.g. std::vectorcv::Mat>). That is, each i-th rotation vector together with the corresponding i-th translation vector (see the next output parameter description) brings the calibration pattern from the object coordinate space (in which object points are specified) to the camera coordinate space. In more technical terms, the tuple of the i-th rotation and translation vector performs a change of basis from object coordinate space to camera coordinate space. Due to its duality, this tuple is equivalent to the position of the calibration pattern with respect to the camera coordinate space.
  • tvecs: Output vector of translation vectors estimated for each pattern view, see parameter describtion above.
 

 

fitfisheye

links about the "criteria"
opencv python K-Means聚类
K-Means Clustering in OpenCV cv2.kmeans(data, K, bestLabels, criteria, attempts, flags[, centers]) -> retval, bestLabels, centers data: np.float32数据类型,每个功能应该放在一个列中 nclusters(K):集群数 bestLabels:预设的分类标签:没有的话 None criteria:它是迭代终止标准,满足此条件时,算法迭代停止,实际上,它应该是3个参数的元组。它们是(type,max_iter,epsilon) type又有两种选择: cv2.TERM_CRITERIA_EPS - 如果达到指定的精度epsilon,则停止算法迭代。 cv.TERM_CRITERIA_MAX_ITER - 在指定的迭代次数max_iter之后停止算法。 cv.TERM_CRITERIA_EPS+ cv.TERM_CRITERIA_MAX_ITER - 当满足上述任何条件时停止迭代。 max_iter - 指定最大迭代次数的整数 epsilon - 要求的准确性 attempts:重复试验kmeans算法次数,将会返回最好的一次结果 flags:该标志用于指定初始中心的采用方式。通常会使用两个标志:cv2.KMEANS_PP_CENTERS和cv2.KMEANS_RANDOM_CENTERS retval:它是从每个点到它们相应中心的平方距离之和 bestLabels:这是标签数组 centers:这是一组聚类中心 假设只有一个特征的数据,即一维的,我们可以采用我们的T恤问题,只使用人的高度来决定T恤的大小。因此,我们首先创建数据并在Matplotlib中绘制它 import numpy as np import cv2 import matplotlib.pyplot as plt x = np.random.randint(25,100,25) y = np.random.randint(175,255,25) z = np.hstack((x,y)) z = z.reshape((50,1)) z = np.float32(z) plt.hist(z,256,[0,256]),plt.show() 现在我们应用KMeans功能。我们的标准是,每当运行10次迭代算法或达到epsilon = 1.0的精度时,停止算法并返回答案.
opencv python K-Means聚类
💡
OpenCV函数的 [ ] 表示可选参数
  • ret = retval: the overall RMS re-projection error 均方根(RMS)重投影误差
  • cam_mtx = K: Output 3x3 floating-point camera intrinsic matrix A.
    • If fisheye::CALIB_USE_INTRINSIC_GUESS is specified, some or all of fx, fy, cx, cy must be initialized before calling the function.
  • cam_dist = D: Output vector of distortion coefficients.
    • rvecsf = rvecs: Output vector of rotation vectors (see Rodrigues ) estimated for each pattern view. That is, each k-th rotation vector together with the corresponding k-th translation vector (see the next output parameter description) brings the calibration pattern from the model coordinate space (in which object points are specified) to the world coordinate space, that is, a real position of the calibration pattern in the k-th pattern view (k=0.. M -1).
    • tvecsf = tvecs: Output vector of translation vectors estimated for each pattern view.
     
     
     

     

    fitpinhole & fitfisheye (All images)

    Links related to my attempt to accelerate or simplify the calculation.
    My failed attempt to calculate the "retval"
     

     
    fitpinhole
    fitfisheye
     

     

    pinholeFOV

    Schematic Diagram
    notion image
     

     

    FisheyeFOV


     

    Process & Write & Print data

    External Reference
    Internal Reference
    Not shown in data. Just for intuitive illustration.
    • 表示单一像素在x轴和y轴方向上的物理长度(其单位可理解为 mm/像素)。表示u轴和v轴之间的夹角,理想情况下
    • 图像像素坐标系(pixel coordinate system)
    • 图像物理坐标系(retinal coordinate system,or像平面坐标系,单位常用mm)
    • 相机坐标系(camera coordinate system)
      • Equivalent to pinhole camera model
      • Images that demonstrate the camera coordinate system
        notion image
        notion image
    • 世界坐标系
    💡
    张正友标定法仅仅考虑了畸变模型中影响较大的径向畸变。
    Said by a Postgraduate from SJTU.
    Really? Maybe this conclusion deserves more consideration.
     

     
    Input/output 3x3 floating-point camera intrinsic matrix.
     
    Input/output vector of distortion coefficients.
     
    Number of pictures whose retP is less than 2.
    the overall RMS re-projection error from fitpinhole
    in camera intrinsic matrix from fitpinhole
    in camera intrinsic matrix from fitpinhole
    in camera intrinsic matrix from fitpinhole
    in camera intrinsic matrix from fitpinhole
    in distortion coefficients from fitpinhole
    in distortion coefficients from fitpinhole
    in distortion coefficients from fitpinhole
    in distortion coefficients from fitpinhole
    in distortion coefficients from fitpinhole
    in distortion coefficients from fitpinhole
    in distortion coefficients from fitpinhole
    in distortion coefficients from fitpinhole
    from pinholeFOV
    from pinholeFOV
     

     
    Input/output 3x3 floating-point camera intrinsic matrix.
     
    Output vector of distortion coefficients.
     
    Number of pictures whose retF is less than 2.
    the overall RMS re-projection error from fitfisheye
    in camera intrinsic matrix from fitfisheye
    in camera intrinsic matrix from fitfisheye
    in camera intrinsic matrix from fitfisheye
    in camera intrinsic matrix from fitfisheye
    in distortion coefficients from fitfisheye
    in distortion coefficients from fitfisheye
    in distortion coefficients from fitfisheye
    in distortion coefficients from fitfisheye
    from FisheyeFOV
    from FisheyeFOV
     

     
    The mtx is from fitpinhole.
     
    The mtx is from fitpinhole.
     
    The cam_mtx is from fitfisheye.
     
  • 开发
  • SFR sfrmat3 Code LearningProcess Flowchart During My Internship
    Loading...
    目录