单目计算深度比较复杂,一般可以用RGB-D相机直接得到深度,但还是练习一下。
因为是稠密重建,对每个像素都算深度,所以就不是提取特征了。
仅凭一幅图像无法估计出深度,要用不同视角下的图像来估计。
特征点匹配法中,是根据不同视角中同一特征点的不同位置来进行三角测量估计深度,
但是稠密重建是不用特征点的,要对每个像素都进行匹配,然后进行三角测量。怎么匹配呢,用极线搜索和块匹配。
什么是极线搜索,如下(贴一张别人的图):
首先说神马是极线,相机1中的某像素p1, 它可能的深度是,比如[0.1, 5](范围是图上的d), 然后p1的像素坐标结合这个最小和最大深度(d的两头),形成了俩位置,这俩位置映射到相机2的两个点,这两个点形成的线段就是极线。
那搜索呢,就是在极线这条线段上,搜索和p1一样的点,怎么判断一样,就是用各种相似度函数,这里用了NCC(后面说),只搜索一个点鲁棒性不行,就搜索一个块,块的大小自己定义。
搜索到p2点和p1点匹配度高之后,用三角测量估计p的深度,
现把图片1当作p1所在的图片,要估计图片1中所有像素的深度,目前有不同视角下拍的图片2来匹配p2,估计深度。
仅一张图片2,深度肯定是不够稳定的,
那么就来多张不同视角下的图片3,4,5…,
每张都和p1匹配,再估计图片1中所有像素的深度,于是得到了很多张不同的深度图。
那这么多张估计出来的深度图,总要融合成一个深度图吧,毕竟只要估计一张图片1的深度。
下面就是高斯融合了。
高斯融合就是假设深度d是服从高斯分布的,初始均值是 μ \mu μ, 方差是 σ \sigma σ,
然后根据图片2,3,4…得到了新的深度均值方差: μ o b s \mu_{obs} μobs, σ o b s \sigma_{obs} σobs,
根据高斯分布的乘积,得到融合公式
σ o b s 2 μ + σ 2 μ o b s σ 2 + σ o b s 2 \frac{ \sigma ^{2}_{obs}\mu + \sigma ^{2}\mu_{obs} }{\sigma ^{2} + \sigma ^{2}_{obs}} σ2+σobs2σobs2μ+σ2μobs
注意,因为每个像素都要算深度,所以这个均值,方差都是图像大小的矩阵。
最后得到的 μ \mu μ就是要得到的深度图。
接下来问题来了, μ o b s \mu_{obs} μobs和 σ o b s \sigma_{obs} σobs怎么算。
μ o b s \mu_{obs} μobs就是本次估计的深度,因为估计的时候就是求的平均值(后面代码会说)
σ o b s \sigma_{obs} σobs要根据不确定性公式算,
先上结论: σ o b s = ∥ p ∥ − ∥ p ′ ∥ \sigma_{obs} = \left \| p \right \| - \left \| p' \right \| σobs=∥p∥−∥p′∥,
其中p指的是图中的 O 1 P O_{1}P O1

本文详细介绍了单目稠密重建中的极线搜索方法和高斯融合策略。通过不同视角的图像匹配,利用三角测量估计像素深度,并采用高斯融合融合多张深度图,最终得到稳定深度图像。内容涵盖极线定义、搜索匹配、三角测量、不确定性计算以及深度滤波器的更新过程。
最低0.47元/天 解锁文章
1123

被折叠的 条评论
为什么被折叠?



