水下视觉测量之求摄像机光心到折射面的距离的几种方法

目录

1.前言

2.基于费马原理求解

3.基于共面约束求解

4.参考文献


1.前言

笔者查阅有关水下视觉测量相关论文,发现在水下模型的建立过程中,总避免不了需要解一个参数,即光心到折射面的距离。通过查阅若干文献,介绍两种求光心到折射面的几种方法。

2.基于费马原理求解

来自介质中对象(rw,zw)的光线在rg点与平面界面相交。光线继续穿过空气室,直到到达距离界面d处的透视透镜。光线的图像坐标为ri。

如图所示,目标点到折射面的距离z是在空气中测量的。以光轴与折射面的交点为原点,折射面与光轴为xy轴建立坐标系,则水中目标点的径向坐标为(r_w,z_w)。从该点发出的射线成像到相面的一点。在这个轨迹中,射线通过界面上的一点到轴的距离为r_g

r_g的值可以用费马原理计算:两点之间的射线路径是在最短时间内经过的。

考虑到水的折射率n使光在介质中的速度变慢,则光程长度为:

 其中d为折射面到光心的距离。由费马原理,得:

 由相似三角形可知

其中r_i为射线对应的图像像素的径向坐标(未考虑畸变),f为相机在空气中的焦距。将上式代入r_g的关系得:

由此得到了目标点坐标和图像坐标间的关系。假设水的折射率n已知,则该式为d和f的函数。将上式写成如下形式:

z_w可以通过测距仪得到。或者可以在摄像机上安装两个固定角度的水下激光器使其在特定的距离汇聚成一点来实现恒定的z_w。但r_w和d不能直接测量,需要通过标定来解决。 

在标定靶标上选取特定点可以得到已知的几条线段的距离s_{known},线段与折射面和相面平行(保证z_w恒定)。设点的方位角为\phi,选取两个点,其对应的图像坐标为(r_{i,1},\phi _1)(r_{i,2},\phi _2)。由于存在畸变,在图像中线段可能发生弯曲,但在世界坐标系中仍然是直线,如下图所示。

标定中,对直线物体进行成像。物体在原始图像中可能出现弯曲。然而,模型估计的世界坐标不受影响。

 两个点对应的世界径向坐标为:

 其中\hat{r}_{i,m}为畸变补偿后的坐标。根据余弦定理,线段的长度应满足:

 由此可以建立关系:

等式说明,水下使用靶标标定时,使用图像提供的两个像素坐标,像素点对应靶标上点间的距离,空气中标定的相机内参f,及靶标点到折射面的距离z_w,可以求得光心到折射面的距离d。我们可以进行多次测量,建立多个方程,进行最小二乘拟合,使d的求解更加准确。

注意到该求解过程为非线性求解,若相机未经过空气中的标定,我们可以使用SVP模型的等效焦距f_{effective}来得到f的初始估计\hat{f},并作为参数之后进行优化。SVP模型中,在出射角很小的时候,正弦值约等于角度值,有snell定律可以求得等效焦距f_{effective}\approx nf,故有\hat{f}=\frac{f_{effective}}{n}。(关于SVP中等效焦距的具体解释请见笔者的上一篇文章)。

注意到使用单一对象标定求解时可能出现如下问题:

使用单一对象进行标定。(A)拟合问题:一个物体及其图像投影。^f和^d的初始猜想不符合物理模式。(B), (C)两个可能的解对(d,f)对于同一个物体及其相应的投影。(D)当使用错误的zw值时,也可以得到一个解

图A显示了一个拟合问题:一个物体及其图像投影。对\hat{f}\hat{d}的最初猜测与物理模型不符。图B和C显示了对同一物体及其相应投影的两种可能的解对\left ( \hat{d},\hat{f} \right )。从图D可以看出,错误的z_w值也可以得到解,\hat{d}\hat{f}的值不同。其中,\hat{d}的估计依赖于\hat{f};\hat{f}的每一个值,都有一个合适的估计\hat{d}。为了得到准确的d和f,我们可以测量多条线,也可以改变距离对同一条线多次测量。

(A)三个不同的物体通过水投影到成像平面上。物体位于zw=50cm处。(B)对于每个对象j,集合Ψj是(d,f)平面上不同的曲线。因此,使用至少两个对象,集合的交集提供了标定结果。位于视场中心的两个物体(#1和#3)生成的曲线非常相似,并使校准无效。这可以通过使用扩展到视场的端点的对象(#2)来解决。使用两个或多个校准对象的另一种选择是在至少两个不同的已知距离内使用同一对象。投影坐标显示在(C)中。这产生(D)两组不同的可能解,每个距离一个解。标定结果为它们的交点。

上图A和B,C和D分别代表两种标定d和f的优化手段。

笔者认为,该标定方法具有一定的灵活性,z_w可以作为某一固定参数,检测多个目标,建立多个方程来求解而无需先验,但需要其他手段保证其在标定中固定,避免出现新的未知数。

3.基于共面约束求解

文献分析了n层折射平面的情况,为简单起见,我们仅分析n=1的情况。

(左)具有n层的平面折射几何体。(中)每个像素的整个光路位于一个平面上,所有平面在穿过相机中心的公共轴上相交。(右)计算轴后,可以在折射平面上进行分析,以估计层厚度和折射率。

设A为摄像机光轴的方向向量,π为包含光轴和给定相机光线的折射平面(POR),n为π的法线。根据Snell定律,入射光线、法线和折射光线位于任何折射边界的同一平面上,因此所有光路都在π平面上,出射光线与光轴相交。设P为靶标世界坐标系的目标点,由R和t变换到摄像机坐标系,则该点RP+t位于平面π上。v_i代表了每段光路的方向向量。则对每个P点满足共面约束:

 其中A\times v_0为POR的法向量。共面约束与层数n无关,仅取决于光轴和相机位姿。

 设\left [ A \right ]_{\times }为A的反对称矩阵,则共面约束可以写成如下形式:

 其中,E=\left [ A \right ]_{\times }R,s=A\times t

由于E和本质矩阵\left [ t \right ]_{\times }R十分相似,可以借鉴本质矩阵5点法来估计轴。给定8个点,则有:

 其中B为8\times 12的矩阵,秩为8;\bigotimes为Kronecker积运算,P(i)为对应的第i个世界坐标系的三维坐标。通过上式求解得到E和s,再由A^TE=0估计A。

如果A是一个m×n的矩阵,而B是一个p×q的矩阵,克罗内克积则是一个mp×nq分块矩阵

在标定过程中,光轴与世界坐标系的Z轴重合,得到方程:

其中E和s如下:

选取靶标上至少五个点,求解E和s。E的第三列通det(E)=0和旋转矩阵的单位正交性得到。由于靶标世界坐标系上无Z轴分量,假设

t_3=\alpha A

α为放大因子,由平面折射约束(FRC)有:

其中vp_1v_0在POR平面投影得到的二维向量,c_i=v{p_{i}}^{T}z_1,z_p=\left [ 0;1 \right ],d_0光心到折射面的距离。采用大于两个靶标点,利用最小二乘解即可解出α和d_0

 Flat Refraction Constraint(FRC)

设[v0(i),v1(i),…,vn(i)]表示对应光路每段的方向向量。最后折射的光线vn应平行于变换后的3D点RP+t与最后一层折射点qn的连线。因此,应满足下面的平面折射约束(FRC):

\left [ z_2,z_1 \right ]表示POR上的正交坐标系,z_1为光轴方向。对给定摄像机射线v_0z_2=z_1\times (z_1\times v_0).设P位于摄像机坐标系的点P_c在POR上的投影为u=\left [ u^x,u^y \right ]其中u^x={z_{2}}^{T}P_c,u^y={z_{1}}^{T}P_c,

对于每个对应,n层系统在其折射平面上的FRC如下所示:

 其中,

q_n=\sum_{i=0}^{n-1}\frac{-d_ivp_i}{c_i}

代入FRC得

4.参考文献

[1]T. Treibitz, Y. Schechner, C. Kunz and H. Singh, "Flat Refractive Geometry," in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 34, no. 1, pp. 51-65, Jan. 2012, doi: 10.1109/TPAMI.2011.105.

[2]A. Agrawal, S. Ramalingam, Y. Taguchi and V. Chari, "A theory of multi-layer flat refractive geometry," 2012 IEEE Conference on Computer Vision and Pattern Recognition, 2012, pp. 3346-3353, doi: 10.1109/CVPR.2012.6248073.

[3]刘涛,王宁宁,张熠,艾尚茂.一种水下运动物体三维轨迹视觉测量方法[J].图学学报,2019,40(05):908-914.

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
双目视觉获得圆形靶标中的三维坐标需要使用三维重建算法,在此之前需要进行以下步骤: 1. 标定相机:使用标定板标定相机内参和外参,得到相机的内参矩阵和畸变系数矩阵。 2. 采集图像:使用双目相机采集两个视角下的图像。 3. 特征点匹配:使用图像处理技术对左右两幅图像进行特征点提取和匹配,得到特征点的像素坐标。 4. 计算基础矩阵和本质矩阵:使用相机内参矩阵和特征点像素坐标计算基础矩阵和本质矩阵。 5. 计算相对位姿:使用基础矩阵或本质矩阵计算相对位姿,即左相机到右相机的旋转矩阵和平移向量。 6. 三维重建:使用三维重建算法计算出物体的三维坐标。 具体地,对于圆形靶标的中点,可以先在左右两幅图像中分别检测圆形的轮廓,然后通过对应的关系计算出圆形的像素坐标。接着,将左右两个像素坐标和相机的内参矩阵、外参矩阵进行三维重建,即可得到圆形靶标中点的三维坐标。 下面是一个使用OpenCV库进行双目视觉三维重建的示例代码: ```python import cv2 import numpy as np # 标定相机并获取内参矩阵和畸变系数矩阵 # ... # 读取左右两幅图像 img_left = cv2.imread('left.jpg') img_right = cv2.imread('right.jpg') # 提取左右两幅图像的特征点并进行匹配 # ... # 计算基础矩阵和本质矩阵 F, mask = cv2.findFundamentalMat(pts_left, pts_right, cv2.FM_RANSAC) E = np.dot(K.T, np.dot(F, K)) # 计算相对位姿 retval, R, t, mask = cv2.recoverPose(E, pts_left, pts_right, K) # 三维重建 points3d = cv2.triangulatePoints(proj_left, proj_right, pts_left, pts_right) points3d /= points3d[3] # 计算圆形靶标中点的三维坐标 # ... # 显示结果 cv2.imshow('img_left', img_left) cv2.imshow('img_right', img_right) cv2.waitKey(0) cv2.destroyAllWindows() ``` 注意,上述代码中的标定相机和特征点匹配部分需要根据具体情况进行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑化咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值