位置: IT常识 - 正文

计算机视觉—— 相机标定(计算机视觉未来发展方向)

编辑:rootadmin
计算机视觉—— 相机标定

目录

简介

一、相机模型

1.坐标系

2.坐标系变化

3.相机畸变模型

二、相机标定原理     

三、张正友黑白棋盘格标定

2.1.算法思想

2.2.求解内参和外参的积

2.3.求解内参矩阵

2.4.求解外参矩阵

2.5.得到相机畸变矫正参数

2.6.L-M算法参数优化

 三、实验

3.1 实验要求

3.2  实验数据环境

3.3 代码

 3.4 实验结果

四、实验总结


简介

推荐整理分享计算机视觉—— 相机标定(计算机视觉未来发展方向),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:计算机视觉未来发展方向,计算机视觉技术,计算机视觉的未来发展方向有哪些,计算机视觉的未来发展方向有哪些,计算机视觉技术,计算机视觉技术的应用,计算机视觉技术,计算机视觉技术的应用,内容如对您有帮助,希望把文章链接给更多的朋友!

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。

一、相机模型1.坐标系 世界坐标系:代表物体在真实世界里的三维坐标,坐标系用Xw,Yw, Zw表示。 相机坐标系:代表以相机光学中心为原点的坐标系,光轴与z轴重合,坐标系用Xc,Yc,Zc表示。 图像坐标系:代表相机拍摄图像的坐标系,原点为相机光轴与成像平面的交点,是图像的中心点,坐标系用X,Y表示。 像素坐标系:由于图像的基本单位是像素,所以该坐标系是图像上点在图像储存矩阵中的像素位置,坐标原点在左上角,坐标系用u,v表示。前三个坐标系的单位是毫米,而最后一个坐标系的单位是像素。

2.坐标系变化(1)世界坐标系到相机坐标系的变换:世界坐标系是真实世界的基准坐标系,我们需要知道相机坐标系下的点在真实世界中的位置,利用齐次坐标变换矩阵。

 (2)相机坐标系到图像坐标系的变换:该变换可以看作是简单的射影变换(将相机看作小孔成像模型),将三维坐标变换为二维坐标。其中f为相机的焦距。(3) 图像坐标系到像素坐标系的变换:设图像x方向每毫米有f个像素,y方向每毫米有f,个像素,则有:

 其中Cx、Cy,是图像坐标系原点在像素坐标系下的坐标。

3.相机畸变模型

       (我们一般只考虑径向畸变k和切向畸变p)

 其中r2=x2+y2

 枕形畸变:畸变像点相对于理想像点沿景象向外偏移,远离中心。 桶状畸变:径向畸点相对于理想点沿径向向中心靠拢。二、相机标定原理     

       针对针孔相机模型, 相机标定,标定的是指内参矩阵和外参矩阵,就可以确定为一的相机模型。

相机的内参: 主要包含 焦距,像主点坐标,以及畸变参数即 fx fy  cx cy k1 k2 k3 p1 p2相机的外参: 包含 旋转矩阵和平移矩阵 即 R  t三、张正友黑白棋盘格标定2.1.算法思想

        张正友标定法利用黑白棋盘格标定板,在得到一张标定板的图像之后,用Harris角点检测算法得到每一个角点的像素坐标(u,v)。

        张正友标定法将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标W=0,由于标定板的世界坐标系是人为事先定义好的,标定板上每一个格子的大小是已知的,我们可以计算得到每一个角点在世界坐标系下的物理坐标(U,V,W=0)。

我们将利用这些信息:每一个角点的像素坐标、每一个角点在世界坐标系下的物理坐标,来进行相机的标定,获得相机的内外参矩阵、畸变参数。

2.2.求解内参和外参的积

将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标W=0。因此,原单点无畸变的成像模型可以化为下式:

         其中,R1,R2为旋转矩阵R的前两列。为了简便,将内参矩阵记为A。对于不同的图片,内参矩阵A为定值;对于同一张图片,内参矩阵A,外参矩阵(R1 R2 T)为定值;对于同一张图片上的单点,内参矩阵A,外参矩阵(R1 R2 T),尺度因子Z为定值。我们将A(R1 R2 T)记为矩阵H,H即为内参矩阵和外参矩阵的积,记矩阵H的三列为(H1 H2 H3),则有:

利用上式,消除尺度因子Z,可得:

 此时,尺度因子Z已经被消去,因此上式对于同一张图片上所有的角点均成立。(u,v)是像素坐标系下的标定板角点的坐标,(U,V)是世界坐标系下的标定板角点的坐标。通过图像识别算法,我们可以得到标定板角点的像素坐标(u,v),又由于标定板的世界坐标系是人为定义好的,标定板上每一个格子的大小是已知的,我们可以计算得到世界坐标系下的(U,V).

        由这里的H是齐次矩阵,有8个独立未知元素。每一个标定板角点可以提供两个约束方程(u,U,V的对应关系,v,U,V的对应关系提供了两个约束方程)。因此,当一张图片上的标定板角点数量等于4时,即可求得该图片对应的矩阵H。当一张图片上的标定板角点数量大于4时,利用最小二乘法回归最佳的矩阵 H

2.3.求解内参矩阵

        我们已知了矩阵H=A(R1 R2 T),接下来需要求解相机的内参矩阵A。 我们利用R1,R2作为旋转矩阵R的两列,存在单位正交的关系,即:

 则由H和R1,R2的关系,可知:

 代入可得:

 另外,我们发现,上述两个约束方程中均存在矩阵A−TA−1。因此,我们记A-TA-1=B,则B为对称阵。我们视图先求解出矩阵B,通过矩阵B再求解相机的内参矩阵A。 同时,为了简便,我们记相机内参矩阵A为:

 则:

 则用矩阵A表示矩阵B得:

 注意:由于B为对称阵,上式出现了两次B12,B13,B23。 这里,我们可以使用B=A-TA-1将前面通过R1,R2单位正交得到的约束方程化为:

 因此,为了求解矩阵B ,我们必须要计算HjTBHj。则:

 

 我们可以记:

 则上述方程转化为:

 此时,通过R1,R2单位正交得到的约束方程可化为:

 即:

 其中矩阵

 由于矩阵H已知,矩阵v又全部由矩阵H的元素构成,因此矩阵v已知。

此时,我们只要求解出向量b,即可得到矩阵B。每张标定板图片可以提供一个ub =0的约束关系,该约束关系含有两个约束方程。但是,向量6有6个未知元素。因此,单张图片提供的两个约束方程是不足以解出来向量b。因此,我们只要取3张标定板照片,得到3个ub=0的约束关系,即6个方程,即可求解向量b。当标定板图片的个数大于3时(事实上一般需要15到20张标定板图片),可采用最小二成拟合最佳的向量6,并得到矩阵B。

 根据矩阵B的元素和相机内参a,ß,γ,uo,vo的对应关系(如上式),可得到:

 

2.4.求解外参矩阵

        对于同一个相机,相机的内参矩阵取决于相机的内部参数,无论标定板和相机的位置关系是怎么样的,相机的内参矩阵不变。这也正是在第2部分“求解内参矩阵”中,我们可以利用不同的图片(标定板和相机位置关系不同)获取的矩阵H,共同求解相机内参矩阵A的原因。

但是,外参矩阵反映的是标定板和相机的位置关系。对于不同的图片,标定板和相机的位置关系已经改变,此时每一张图片对应的外参矩阵都是不同的。

在关系:A(R1 R2 T)=H中,我们已经求解得到了矩阵H(对于同一张图片相同,对于不同的图片不同)、矩阵A(对于不同的图片都相同)。通过公式:(R1 R2 T)= A-1H,即可求得每一张图片对应的外参矩阵(R1 R2 T)。

注意,这里值得指出,完整的外参矩阵为

 但是,由于张正友标定板将世界坐标系的原点选取在棋盘格上,则棋盘格上任一点的物理坐标W =0,将旋转矩阵的R的第三列R3消掉。因此,R3在坐标转化中并没有作用。但是R3要使得R满足旋转矩阵的性质,即列与列之间单位正交。因此可以通过向量R1,R2的叉乘,即R3 =R1 x R2,计算得到R3。

此时相机的内外参均已经得到

2.5.得到相机畸变矫正参数

张正友标定法仅仅考虑了畸变模型中影响较大的径向畸变。 径向畸变公式(2阶)如下:

 其中,(x,y),(â,y)分别为理想的无畸变的归一化的图像坐标、畸变后的归一化图像坐标,r为图像像素点到图像中心点的距离,即r2 = x2 + y2. 图像坐标和像素坐标的转化关系为:

 其中,(u,v)为理想的无畸变的像素坐标。由于0接近于90°,则上式近似为:

同理可得畸变后的像素坐标(ü,v)的表达式为:

 每一个角点,只要知道畸变后的像素坐标(ü,v)、理想的无畸变的像素坐标(u,v),就可以构造两个上述等式。那么,有m幅图像,每幅图像上有n个标定板角点,则将得到的所有等式组合起来,可以得到mn个未知数为k=[k1,k2]T的约束方程,将约束方程系数矩阵记为D,等式右端非齐次项记为d,可将其记为矩阵形式:

 利用最小二乘法:

此时,相机畸变矫正参数已经标定好。 那么,如何获得畸变后的像素坐标(ü,ü)和理想的无畸变的像素坐标(u,v)呢? (น,v)可以通过识别标定板的角点获得,(u,v)可以通过如下方法近似求得。世界坐标系下的每一个角点的坐标(U,V)是可以计算得到的,我们利用已经求得的外参矩阵(R1 R2 T)和内参矩阵A进行反投影。

计算机视觉—— 相机标定(计算机视觉未来发展方向)

 利用上式,消去尺度因子Z,可得:

 即可得到理想的、无畸变的像素坐标(u,v)。当然,由于外参矩阵(R1 R2 T)和内参矩阵A是在有畸变的情况下获得的,这里得到的像素坐标(u,v)并不是完全理想的、无畸变的。我们的总逻辑是,在进行内参矩阵和外参矩阵的求解的时候,我们假设不存在畸变;在进行畸变系数的求解的时候,我们假设求得的内参矩阵和外参矩阵都是无误差的。最后,我们再通过L-M算法对于参数进行选代优化。  

2.6.L-M算法参数优化

从上述推导过程就可以看出,张正友标定法是有很多近似的,所以仅仅利用上述的过程进行标定误差肯定是很大的。所以张正友标定法还利用L-M(Levenberg-Marquardt)算法对参数进行了优化。

L-M算法计算以下函数值最小的参数(k为相机内参矩阵A)

 三、实验3.1 实验要求

1.打印一张棋盘格A4纸张(黑白间距已知),并贴在一个平板上 2.针对棋盘格拍摄若干张图片(一般10-20张) 3.在图片中检测特征点(Harris角点) 4.根据角点位置信息及图像中的坐标,求解Homographic矩阵 5.利用解析解估算方法计算出5个内部参数,以及6个外部参数6.根据极大似然估计策略,设计优化目标并实现参数的refinement

3.2  实验数据环境

华为荣耀V20后置: 4800万像素

拍摄不同角度黑白棋盘格 14张

 拍摄相同角度 13张

棋盘格规格为10*7,每个小格边长为0.038m

实验环境:win 10,64位,python3.7,OpenCV 4.2.0

3.3 代码# -*- coding:utf-8 -*-import cv2import globimport numpy as npfrom ipython_genutils.py3compat import xrangeimport matplotlib.pyplot as pltfrom pylab import *from Calibration.work1.Harris import plot_harris_points# from refine_all_param import refinall_all_paramcbraw = 9 # 有6行角点cbcol = 6 # 有4列角点objp = np.zeros((cbraw * cbcol, 3), np.float32)'''设定世界坐标下点的坐标值,因为用的是棋盘可以直接按网格取;假定棋盘正好在x-y平面上,这样z值直接取0,简化初始化步骤。mgrid把列向量[0:cbraw]复制了cbcol列,把行向量[0:cbcol]复制了cbraw行。转置reshape后,每行都是4×6网格中的某个点的坐标。'''objp[:, :2] = np.mgrid[0:cbraw, 0:cbcol].T.reshape(-1, 2)objpoints = [] # 3d point in real world spaceimgpoints = [] # 2d points in image plane.# glob是个文件名管理工具images = glob.glob("images1/*.jpg")for fname in images:# 对每张图片,识别出角点,记录世界物体坐标和图像坐标img = cv2.imread(fname) # source image# 我用的图片太大,缩小了一半# img = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_CUBIC)gray1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转灰度# 寻找角点,存入corners,ret是找到角点的flagret, corners = cv2.findChessboardCorners(gray1, (9, 6), None)img = cv2.drawChessboardCorners(gray1, (9,6), corners,ret)cv2.waitKey(1000)# criteria:角点精准化迭代过程的终止条件criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)# 执行亚像素级角点检测corners2 = cv2.cornerSubPix(gray1, corners, (11, 11), (-1, -1), criteria)objpoints.append(objp)imgpoints.append(corners2)# 在棋盘上绘制角点,只是可视化工具img = cv2.drawChessboardCorners(gray1, (9, 6), corners2, ret)# cv2.imshow('img', img)# cv2.waitKey(1000)'''传入所有图片各自角点的三维、二维坐标,相机标定。每张图片都有自己的旋转和平移矩阵,但是相机内参和畸变系数只有一组。mtx,相机内参;dist,畸变系数;外参数:revcs,旋转矩阵;tvecs,平移矩阵。'''ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray1.shape[::-1], None, None)img = cv2.imread('images1/empire1.jpg')# extrinsics_param\rvecs = np.array(rvecs)# print("rvecs="+str(rvecs))# rvecsnp, _ = cv2.Rodrigues(rvecs)# print("rvecsnp="+str(rvecsnp))# print("tvecs="+str(tvecs))# 注意这里跟循环开头读取图片一样,如果图片太大要同比例缩放,不然后面优化相机内参肯定是错的。# img = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_CUBIC)h, w = img.shape[:2]'''优化相机内参(camera matrix),这一步可选。参数1表示保留所有像素点,同时可能引入黑色像素,设为0表示尽可能裁剪不想要的像素,这是个scale,0-1都可以取。'''newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, (w, h), 1, (w, h))#显示更大范围的图片(正常重映射之后会删掉一部分图像)# 纠正畸变dst = cv2.undistort(img, mtx, dist, None, newcameramtx)# 这步只是输出纠正畸变以后的图片x, y, w, h = roidst = dst[y:y + h, x:x + w]cv2.imwrite('calibresult2.png', dst)# 打印我们要求的两个矩阵参数"""参数newcameramtx为内参数矩阵,dist为畸变系数,total error为总体误差。newcameramtx: [[1.25045215e+03 0.00000000e+00 1.48972123e+03] [0.00000000e+00 7.76162048e+02 1.31742293e+03] [0.00000000e+00 0.00000000e+00 1.00000000e+00]]dist: [[ 2.49509032e-02 3.66095655e-01 -1.75899580e-02 -5.07301401e-04 -8.18362820e-01]]total error: 0.10671872187032518从上面的运行结果可以看出,归一化焦距fx=1.25045215e+03,fy=7.76162048e+02,像主点(光心)的坐标cx=1.48972123e+03,cy=1.31742293e+03。所有图像投影坐标和亚像素角点坐标之间的总体的平均误差大概为0.10,误差较小,标定结果不错"""print("newcameramtx:\n", newcameramtx)print("dist:\n", dist)print("ret:\n",ret)print("mtx:\n",mtx)# 计算误差tot_error = 0for i in xrange(len(objpoints)):imgpoints2, _ = cv2.projectPoints(objpoints[i], rvecs[i], tvecs[i], mtx, dist)error = cv2.norm(imgpoints[i], imgpoints2, cv2.NORM_L2) / len(imgpoints2)tot_error += errorprint("total error: ", tot_error / len(objpoints))

绘画角点的代码:

# 引入所有函数,绘图板块from PIL import Imagefrom imutils.feature import harrisfrom pylab import *from numpy import *# n维图像库,我们这里使用filters函数from scipy.ndimage import filters# 使用高斯滤波器进行卷积,标准差为3# 这个函数得到Harris响应函数值的图像def compute_harris_response(im, sigma=3):""" Compute the Harris corner detector response functionfor each pixel in a graylevel image. """# derivativesimx = zeros(im.shape)# x方向上的高斯导数filters.gaussian_filter(im, (sigma, sigma), (0, 1), imx)imy = zeros(im.shape)# y方向上的高斯导数filters.gaussian_filter(im, (sigma, sigma), (1, 0), imy)# compute components of the Harris matrix# 导数运算的高斯模糊值,第一个参数表示input,通过这样的方式得到矩阵的分量Wxx = filters.gaussian_filter(imx * imx, sigma)Wxy = filters.gaussian_filter(imx * imy, sigma)Wyy = filters.gaussian_filter(imy * imy, sigma)# 计算特征值与迹Wdet = Wxx * Wyy - Wxy ** 2Wtr = Wxx + Wyyreturn Wdet / Wtr# 从响应图像中获得harris角点检测结果,min_dist表示最少数目的分割角点,threshold是阈值def get_harris_points(harrisim, min_dist=10, threshold=0.6):""" Return corners from a Harris response imagemin_dist is the minimum number of pixels separatingcorners and image boundary. """# find top corner candidates above a threshold# 寻找高于阈值的候选角点,.max是numpy的函数·corner_threshold = harrisim.max() * thresholdharrisim_t = (harrisim > corner_threshold) * 1# get coordinates of candidates# nonzeros(a)返回数组a中值不为零的元素的下标,它的返回值是一个长度为a.ndim(数组a的轴数)的元组,.T是矩阵转置操作coords = array(harrisim_t.nonzero()).T# ...and their values,harrisim的响应值candidate_values = [harrisim[c[0], c[1]] for c in coords]# 从小到大输出,注意输出的是下标index = argsort(candidate_values)# 标记分割角点范围的坐标allowed_locations = zeros(harrisim.shape)allowed_locations[min_dist:-min_dist, min_dist:-min_dist] = 1# select the best points taking min_distance into account,选择harris点filtered_coords = []for i in index:if allowed_locations[coords[i, 0], coords[i, 1]] == 1:# 添加坐标filtered_coords.append(coords[i])# 删除过近区域allowed_locations[(coords[i, 0] - min_dist):(coords[i, 0] + min_dist),(coords[i, 1] - min_dist):(coords[i, 1] + min_dist)] = 0return filtered_coords# 绘制检测角点,灰度图 ,上个函数的角点需要满足的条件,1:角点范围之内;2:高于harrisim响应值的阈值def plot_harris_points(image, filtered_coords):""" Plots corners found in image. """figure()gray()imshow(image)# 将坐标以*标出plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], 'ro')axis('off')show()# 读入图像for i in range(1,14):print("第"+str(i)+"张图")im = array(Image.open('images1/empire'+str(i)+'.jpg').convert('L'))# 检测harris角点harrisim = compute_harris_response(im)# figure()# imshow(harrisim)# axis('off')# threshold = [0.1]# for j, thres in enumerate(threshold):filtered_coords = get_harris_points(harrisim, 6)plot_harris_points(im, filtered_coords)# show() 3.4 实验结果不同角度拍摄的角点:

 内参矩阵:

 畸变矩阵:

 旋转向量:

[[[-1.08590331e+00]   [-7.07566231e-02]   [ 1.73450336e+00]]

 [[-1.62797426e-01]   [ 1.50836683e-01]   [ 9.18464323e-04]]

 [[-5.34186221e-01]   [ 3.73091917e-03]   [ 1.94074283e-02]]

 [[-4.93429591e-01]   [ 5.67761446e-01]   [ 2.95925386e+00]]

 [[-5.80071923e-01]   [-7.22436444e-01]   [-1.57453636e+00]]

 [[-9.48455655e-01]   [ 3.03024879e-01]   [ 1.29828347e+00]]

 [[ 2.94832335e-01]   [ 3.47331204e-02]   [ 2.64544901e-02]]

 [[-5.31299069e-02]   [ 3.71927268e-03]   [ 9.28221086e-03]]

 [[-6.12810996e-01]   [-4.26476299e-01]   [-1.03092565e+00]]

 [[-6.39400599e-01]   [-3.00311309e-01]   [-3.33890353e-01]]

 [[-4.36546146e-01]   [ 7.72766764e-01]   [ 1.26422735e+00]]

 [[-8.17639859e-01]   [ 3.92249552e-01]   [ 1.46334276e+00]]

 [[-5.36634067e-01]   [-1.01048332e+00]   [-2.66320014e+00]]

 [[-5.21928699e-01]   [ 1.60164447e-01]   [ 9.02542727e-02]]]

平移向量:

(array([[-1.98022321],        [ 3.90678311],        [21.60898903]]), array([[-4.85885981],        [-0.6289291 ],        [22.06139288]]), array([[-3.06791902],        [-1.41980029],        [17.73790133]]), array([[ 5.44462226],        [ 3.05527622],        [18.99937008]]), array([[-7.10288561],        [ 7.38181483],        [16.07917721]]), array([[-4.38042851],        [-0.1470518 ],        [23.31177057]]), array([[-3.28338334],        [-0.41788501],        [18.69628827]]), array([[-3.32515074],        [-1.11411687],        [18.98961375]]), array([[-3.51751419],        [ 2.3812171 ],        [20.44982348]]), array([[-2.20115011],        [-0.66322809],        [19.38790959]]), array([[-3.47406785],        [ 1.6223005 ],        [21.05495619]]), array([[-2.90648048],        [ 1.91986687],        [21.78508256]]), array([[-3.97603321],        [ 8.24589791],        [19.4315128 ]]), array([[-4.45135664],        [-1.37711117],        [20.59510491]]))

总误差:

 相同角度拍摄的角点

内参矩阵:

 畸变矩阵:

 旋转变量:

 [[[ 0.24891805]   [-0.26431711]   [ 1.56918475]]

 [[ 0.25431227]   [-0.26637111]   [ 1.5643228 ]]

 [[ 0.25283782]   [-0.2733382 ]   [ 1.5657245 ]]

 [[ 0.25292215]   [-0.27137721]   [ 1.57478432]]

 [[ 0.25054907]   [-0.2749431 ]   [ 1.57254583]]

 [[ 0.24767626]   [-0.27061521]   [ 1.57629155]]

 [[ 0.27330193]   [-0.27878684]   [ 1.4781248 ]]

 [[ 0.24911727]   [-0.27417874]   [ 1.57415463]]

 [[ 0.25097148]   [-0.27088346]   [ 1.57368064]]

 [[ 0.24943128]   [-0.27150587]   [ 1.58753057]]

 [[ 0.24931312]   [-0.25788696]   [ 1.56927848]]

 [[ 0.25003405]   [-0.26845351]   [ 1.57669215]]

 [[ 0.25437311]   [-0.26630249]   [ 1.57098008]]]

 平移变量:

 (array([[  2.55270454],        [ -5.36701444],        [144.98007943]]), array([[  2.44283884],        [ -5.42338893],        [144.5119281 ]]), array([[  2.49552813],        [ -5.37504836],        [144.18066185]]), array([[  2.67937867],        [ -5.37984686],        [144.3546585 ]]), array([[  2.62616415],        [ -5.41405278],        [144.0528159 ]]), array([[  2.63307209],        [ -5.44047493],        [143.97896365]]), array([[  1.58925241],        [ -5.56047437],        [139.15058038]]), array([[  2.66180544],        [ -5.38680787],        [144.15643877]]), array([[  2.66953543],        [ -5.40095104],        [143.91674766]]), array([[  2.79989396],        [ -5.44070812],        [144.26010846]]), array([[  2.52335486],        [ -5.32486579],        [145.17592865]]), array([[  2.70933161],        [ -5.44882022],        [143.75022183]]), array([[  2.55187977],        [ -5.34339341],        [144.54043873]]))

 总误差:

四、实验总结特征点提取误差对标定精度的影响因为相机标定是在已知特征点的世界坐标系坐标和特征点的像面坐标的情况下求解内外参的,若是特征点提取存在误差的话势必会影响标定的精度,研究表明,标定误差与特征点提取误差的均值成正比。 标定图片数量对标定精度的影响 和标定点的数量一样,标定图片的数量也对标定精度有影响,实验表明,标定图片时,误差较大。随着标定图片增多,误差逐渐减小。超过一定量后,误差大小变化变小。标定的效果与棋盘格标准以及表面是否平整,表面褶皱也有关系同一相机用同一组数据 得到的内参相同,畸变系数不变,同一相机不同数据 相机内参不同因为相机的小孔成像并非标准。只是近似模型,不同距离相机光心不同,内参不同
本文链接地址:https://www.jiuchutong.com/zhishi/299387.html 转载请保留说明!

上一篇:Python爬虫经典战役——正则实战(python爬虫推荐)

下一篇:一个前端大佬的十年回顾 | 漫画前端的前世今生(前端大佬都有谁)

  • 红米10x 4g版跑分是多少

    红米10x 4g版跑分是多少

  • 微型计算机的计算精度的高低主要表现在(微型计算机的计算指标主要是指)

    微型计算机的计算精度的高低主要表现在(微型计算机的计算指标主要是指)

  • 苹果手机怎么屏蔽广告弹窗(苹果手机怎么屏幕一直亮)

    苹果手机怎么屏蔽广告弹窗(苹果手机怎么屏幕一直亮)

  • 小米手机的智能服务有什么用(小米手机的智能语音助手叫什么)

    小米手机的智能服务有什么用(小米手机的智能语音助手叫什么)

  • 主机进水了第一时间怎么处理(主机进水了第一天开不了)

    主机进水了第一时间怎么处理(主机进水了第一天开不了)

  • ai相机是什么拍照功能(ai相机是啥)

    ai相机是什么拍照功能(ai相机是啥)

  • 电脑c盘用户文件夹可以删除吗(电脑C盘用户文件可以移动到其他盘?)

    电脑c盘用户文件夹可以删除吗(电脑C盘用户文件可以移动到其他盘?)

  • 秀美图为什么打不开(美图秀秀为什么打不了字)

    秀美图为什么打不开(美图秀秀为什么打不了字)

  • 扫码连wifi是什么弄的(扫码连 wifi)

    扫码连wifi是什么弄的(扫码连 wifi)

  • 显卡显存大小有什么用(显卡显存大小有什么好处)

    显卡显存大小有什么用(显卡显存大小有什么好处)

  • 计算机比较重要的输入设备有哪些(学计算机有什么用)

    计算机比较重要的输入设备有哪些(学计算机有什么用)

  • 微信加错人了怎么取消(微信加错人了怎么不添加她)

    微信加错人了怎么取消(微信加错人了怎么不添加她)

  • 对方关机能微信电话吗(对方关机能微信支付吗)

    对方关机能微信电话吗(对方关机能微信支付吗)

  • 华为手机开热点费电吗(华为手机开热点发热严重)

    华为手机开热点费电吗(华为手机开热点发热严重)

  • 苹果手机的表情在安卓的手机里能看到吗(苹果手机的表情包在哪里)

    苹果手机的表情在安卓的手机里能看到吗(苹果手机的表情包在哪里)

  • 苹果手机怎么拼图合成一相片(苹果手机怎么拼接图片)

    苹果手机怎么拼图合成一相片(苹果手机怎么拼接图片)

  • 抖音视频不推送为什么(抖音视频不推送给陌生人)

    抖音视频不推送为什么(抖音视频不推送给陌生人)

  • vsco安卓怎么取消付费订阅(vsco安卓手机能用吗)

    vsco安卓怎么取消付费订阅(vsco安卓手机能用吗)

  • 华为荣耀9x参数(华为荣耀9x参数详细参数表)

    华为荣耀9x参数(华为荣耀9x参数详细参数表)

  • 拼多多新品标签怎么来(拼多多新品标签突然消失)

    拼多多新品标签怎么来(拼多多新品标签突然消失)

  • 金山文档怎么打印出来(金山文档怎么打不开)

    金山文档怎么打印出来(金山文档怎么打不开)

  • 苹果a2104和a2103区别(苹果a2104是国行吗)

    苹果a2104和a2103区别(苹果a2104是国行吗)

  • iphonexr怎么插耳机(xr在哪里插耳机)

    iphonexr怎么插耳机(xr在哪里插耳机)

  • 微信红包不能领取要绑定银行卡(微信红包不能领转账可以收是怎么回事)

    微信红包不能领取要绑定银行卡(微信红包不能领转账可以收是怎么回事)

  • ifstat命令  统计网络信息(excel if统计)

    ifstat命令 统计网络信息(excel if统计)

  • Spring(四)-声明式事务(使用spring可以实现声明式事务吗)

    Spring(四)-声明式事务(使用spring可以实现声明式事务吗)

  • 计入资本公积的固定资产报废
  • 公司股东分红要交哪些税
  • 经营者个人所得税申报
  • 公司筹建期间发生的费用怎么处理
  • 通信费税前列支的标准和报销票据的要求
  • 上交的项目评审费如何做财务处理呢?
  • 供应商不给我们开发票,我怎么入账
  • 年终奖2月发怎么申报个税
  • 上期留抵税额计算
  • 2018税务金四发展预测会有哪些?
  • 开票金额是纳税金额吗
  • 低价购买债权后可否向债务人全额主张债务
  • 环境保护税交给谁
  • 销售结算款扣款怎么记账?
  • 资产负债表资产总额为负数
  • 美元兑人民币分时走势图
  • 来料加工原材料计入什么科目
  • 公司员工意外险怎么买
  • wordpress怎么上传网站
  • 债务重组法律服务方案
  • 资产减值损失的借贷方向
  • 出租其取得的不动产是什么意思
  • 便秘怎么办 女性
  • 借款业务包括以下哪些形式
  • PHP:mcrypt_ofb()的用法_Mcrypt函数
  • 进项税额准予抵扣的有哪些
  • win11开机后开始菜单没反应
  • 发票确认平台勾选步骤
  • 公司注册资金多长时间可提出来
  • css page-break-after
  • 加油票发票抬头开错了
  • mysql查询重复的全部删除
  • 工会经费与残保金属于什么
  • 如何降低未分配利润的方法
  • 转出未交增值税会计处理
  • 融资租赁业务如何高效拓展
  • 折旧方法计算公式
  • 现金流量表补充资料的作用
  • 开专票需要什么条件呢怎么开
  • 银行贴现手续费可以税前扣除吗
  • 自己生产的产品用于在建工程
  • 事业单位收个人所得税吗
  • 视同销售但未收到钱怎么做账?
  • 所得税汇算清缴报告在哪查
  • 国内旅客运输票据可以抵扣进项税吗
  • 存货报废会计账务处理
  • 发票章盖得不清晰怎么办
  • 企业因固定资产破产
  • linux下多个mysql5.7.19(tar.gz)安装图文教程
  • sqlserver按时间查询
  • 电脑win7win8win10操作系
  • linux系统常用命令怎么记住
  • ubuntu系统安装教程
  • linux检测硬盘故障
  • 苹果mac操作系统名称
  • win8.1怎么用
  • 如何让win8系统变快
  • npssvc.exe - npssvc是什么进程 有什么用
  • win8系统没有自带的游戏吗
  • Win7/Win8.1/Win10命令行配置静态IP地址方法
  • windows8.1版本区别
  • text date excel
  • jquery使用jsonp
  • ruby 递归
  • python中的单下划线和双下划线
  • activity生命周期的方法
  • bat批处理if命令
  • javascript怎么做
  • js全选和全不选效果复选框
  • nodejs inspect
  • androidui框架
  • Android 自定义view炫酷动画
  • python设计程序
  • 谈谈我对视觉传达的认识
  • 青岛新农合网上缴费时间
  • 泉州国税局网站首页
  • 广东省广州市国家税务局
  • 基层税务稽查具体内容
  • 到税务局领购免税产品
  • 电子秒表怎么读数9:33.12
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设