位置: 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爬虫推荐)

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

  • 资金账簿印花税和营业账簿的区别
  • 印花税会计分录最新
  • 固定资产转移是什么意思
  • 计提住房公积金怎么算
  • 控股子公司注销了可以起诉总公司吗怎么办
  • 速达建账套期初数据
  • 车辆补贴的钱最快多久到账
  • 差额征税扣除额是什么意思
  • 抵扣白条账单是怎么回事
  • 贷款未收属于什么科目
  • 企业的定期存款
  • 跨年度发现的差错
  • 金蝶固定资产管理
  • 售后维修费怎么开票
  • 银行收取代发工资合法吗
  • 冲去年其他应付款做管理费用凭证
  • 附加税税率计税依据
  • 税率16降到13什么时候实施
  • 财务人员必备知识
  • 成本费用总额包括所得税费用吗
  • 业务招待费进项税额转出
  • 出票人账号是付款号吗
  • 包装本公司产品的出口包装物是否缴增值税?
  • 劳务费个人所得税税率表2023最新
  • 自购自销金银首饰应纳消费税如何处理?
  • 公司成立前的准备工作有哪些
  • 工资薪金支出账载金额小于实际发生额
  • 设备安装服务费税收分类编码
  • 收到折扣负数发票如何入账
  • win11系统怎么删除账户
  • ahqtb.exe是啥进程 ahqtb进程信息查询
  • PHP:disk_free_space()的用法_Filesystem函数
  • 税务的基本职能
  • 龙舌兰 (© Moab Republic/Shutterstock)
  • 新准则土地使用权计入固定资产还是无形资产
  • 税务局什么情况下可以停供发票
  • php预处理查询
  • 训练自己的GPT
  • opencv几何变换
  • RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling `cublas‘
  • 专项应付款能转回来吗
  • phpcms上传视频
  • 应收账款结账损失怎么算
  • 个人取得的劳务报酬所得,如何缴纳个税
  • 企业收到财政补贴如何开票
  • 节能控制模块
  • 社保交费银行对账怎么办
  • 工会经费发放奖励个税处理
  • 借款需要缴纳个人所得税吗
  • 经营费用包括工资吗
  • 企业增资会计科目
  • 预提费用在资产负债表中如何列示
  • 发票已开款未到的会计分录?
  • 挂靠别人公司税怎么交?
  • 对公转账个人垫付怎么写
  • 股东向公司借款多久必须归还
  • 库存商品结转成本需要附件吗
  • 车子购买的保险
  • 其他应付款转营业外收入摘要怎么写
  • 行政单位年结
  • 电子承兑非拒付会怎么样
  • 餐费补贴属于工资还是福利费
  • 库存数据不准确
  • 企业改制后如何管理
  • 如何调整心态和正确处理情绪
  • linux系统基础教程
  • win7报错0xc0000428
  • 如何在linux系统中卸载一个已装载的文件系统
  • 使用NGUI发布报错的解决方案
  • Cocos2dx3.2 Crazy Tetris update 定时更新 游戏逻辑处理
  • 浅析学校德育的个体智能发展功能
  • 生成0-100的随机数,直到生成88为止,停止循环
  • jquery实现ajax加载超时提示的方法
  • 原生js页面滚动怎么设置
  • 城镇土地使用税按月还是按年交
  • 电子税务局政策速递
  • 江西企业社保缴费基数查询
  • 苏州公积金密码怎么改
  • 1992年2月20号是什么
  • 潍坊税务局上班时间表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设