浅谈相机空间位置RGB图像的拼接步骤分享

MEMS/传感技术

1292人已加入

描述

 图像拼接操作是指将具有重叠区域的两幅 RGB 图像和两幅深度图像分别拼接成一幅 RGB 图像和一幅深度图像。所谓基于相机空间位置的图像拼接方法,就是将相机按照指定的方式安装,然后根据图像中每个像素的空间坐标进行拼接。该方法是应用在深度图像中,结合 RGB 图像与深度图像的对齐操作,也可以用于 RGB 图像的拼接。 

基于相机空间位置的图像拼接方法的重点在于相机的安装方式,具体安装要求如下:第一,所安装的相机在垂直方向需要与所拍摄区域保持平行。第二,所安装的相机在水平方向需要前后、左右保持平行。下图展示的是安装两个 RGB-D 相机的示意图,垂直方向安装示意图如下图a 所示,水平方向安装示意图如下图b 所示。在安装好相机之后,需要确定相机的安装高度和相机之间的间距。 

深度图像

本文在设计单件分离系统时使用了两个 RGB-D 相机,对于两个 RGB-D 相机的深度图像拼接的具体步骤如下:  1.  处理两幅深度图像中的背景像素点。依次遍历两幅深度图像中的每个像素点,像素值为 65535 的像素点即为背景像素点,需要将其像素值设置为相机安装的高度。 

2.  计算深度图像中的像素点对应到相机坐标系下的空间坐标。根据前面中的介绍,像素坐标系与相机坐标系之间的转换公式如下:

深度图像

3.  根据相机坐标系下的空间坐标对两幅深度图像进行拼接。遍历深度图像中的每个像素点,根据其相机坐标系下的空间坐标,对两幅深度图像以每行像素点“行满”的方式进行拼接。具体步骤如下:  

  a) 使用 OpenCV 创建存储拼接结果的矩阵,宽度与单个深度图像的宽度一样,高度是单个深度图像的高度的两倍。用 H 表示存储拼接结果矩阵的高度。

  b) 将两个 RGB-D 相机拍摄范围重叠的部分平分为两个部分,左边部分记作 leftPart,右边部分记作 rightPart。

  c) 先按行遍历图中左边 RGB-D 相机采取的深度图像。

  d) 根据其每个像素点的空间坐标,若该像素点的空间位置在 rightPart中,则把该像素点丢弃;若该像素点的空间位置不在 rightPart 中,则把该像素点及深度值填入存储拼接结果的矩阵中。每行处理完之后,若该行中的每个点都填入了存储拼接结果的矩阵中,则拼接结果的矩阵的行高 H 加 1。

  e) 接着按行遍历图右边 RGB-D 相机采取的深度图像。

  f) 根据其每个像素点的空间坐标,若该像素点的空间位置在 leftPart中,则把该像素点丢弃;若该像素点的空间位置不在 leftPart 中,则把该像素点及深度值填入存储拼接结果的矩阵中。每行处理完之后,若该行中的每个点都填入了存储拼接结果的矩阵中,则拼接结果的矩阵的行高 H 加 1。

  g) 根据存储拼接结果的矩阵的高度 H 对矩阵进行裁剪。

  下图是基于相机空间位置的深度图像拼接结果,为了方便展示对齐结果,根据相机的高度,将深度图像转换为灰度图像。左边的两幅图像分别为上下两个 RGB-D 相机所获取的图像,右边的图像为拼接之后的结果。基于相机空间位置的图像拼接方法用于深度图像拼接时只需要 5ms 左右,其拼接速度和效果都是可以应用在单件分离系统中的。

深度图像

在对两幅深度图像进行拼接的过程中也可以执行 RGB 图像与深度图像对齐操作,这样也可以对两幅 RGB 图像进行拼接。下图是基于相机空间位置的RGB 图像拼接结果,虽然拼接效果不够完美,但是其拼接速度在 30ms 以内,该方法已经应用在单件分离系统中。 

深度图像

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分