plane sweeping算法
input:1张reference img(refimg),若干张source img(srcimg),img均为RGB图像,没有深度图信息
output:reference img的深度图。更详细地说,是refimg每一个像素点(pix)的深度
具体方法:
- 在refimg的scene内划分一系列深度平面
- 考察refimg上某一个像素点,想要求得其深度。如果求得此像素点的深度,如法炮制,对每个像素点做类似操作即可获得refimg上所有像素点的深度。
- 假设此像素点对应的物体在某一个深度平面上,或者说假设此像素点的深度等于深度平面的深度。
- 如果此像素点对应的物体确实在此深度平面上,那么使用单应变换,可以预测出此像素点对应的物体在某一个srcimg上对应的像素点。
- 如果在srcimg上的预测位置的像素点确实和此物体的颜色一样(和refimg上此像素点的颜色一样),那么说明此像素点确实在假设的深度上。
for refpix in refimg:
for d in hypotheticDepthPlaneList:
refpix.depth=d
HypotheticSrcPix=refpix.homographyTo(srcimg)
conpareResult=Compare(HypotheticSrcPix,
srcimg[HypotheticSrcPix.i][HypotheticSrcPix.j])
if conpareResult==True:
refpix.depthConfirm=True
break
补充:
如果只有一张srcimg,可能refimg上某些像素点在srcimg上找不到,所以要多张srcimg。