4.1深度摄像头
深度图:是灰度图,每个像素值是摄像头到物体表面之间距离的估计值
点云图:xyz
视差图:是灰度图,每个像素值代表物体表面的立体视差。立体视差:从不同角度观察同一场景得到的两张图像叠放在一起,度量两幅图像相互对应的两个像素点之间的距离,即为立体视差。近距离的物体会产生较大的立体视差,远距离的会小一些,因此近距离的物体在视差图中会更明亮些。
有效深度掩模:表明给定的像素的深度信息是否有效。(非零有效,零值无效)
np.median(数组):获取中位值
np.where(条件;为真的输出;为假的输出)
4.2立体视觉
极几何,跟踪从摄像头到图像上每个物体的虚线,对第二幅图像(相同距离下拍摄的)同样操作,根据对同一个物体对应的交叉来计算距离。
创建StereoSGBM()实例,用compute()计算,从二维图片中得到三维信息。
4.3物体分割
GrabCut算法:在图片中定义含有物体的矩形;矩形外的区域被自动认为是背景;对于用户自定义的矩形区域,可用背景中的数据来区别它里面的前景和背景区域;用高斯混合模型(GMM)来对前景和背景建模,并将未定义的像素标记为可能的前景或背景;根据像素与周围像素颜色的相似性,每个像素可看作通过虚拟边与周围像素相连接,每条边都有一个属于前景或背景的概率;每个像素与一个前景点后背景点相连,若节点之间的边属于不同终端,则切断他们之间的边,得到图像的分割。
分水岭算法:把图像中低密度的区域(变化少)想象成山谷,高密度区域(变化多)想象成山峰,向山谷注入水直到不同的山谷的水开始汇聚。为阻止不同山谷的水汇聚,可以设置一些栅栏,所得到的栅栏即为图像分割。
转灰度图–>二值化–>去噪声–>膨胀(获取背景)–>distanceTransform()根据背景设置阈值获取前景–>背景与前景相减获得重合部分–>connectedComponents(前景)获取栅栏–>watershed()