0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何从RGBD相机提取像素的深度信息

新机器视觉 来源:博客园 作者:曾是少年 2022-03-21 13:37 次阅读

图像

灰度图

灰度是描述灰度图像内容的最直接的视觉特征。它指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图像也称灰度图像。灰度图像矩阵元素的取值通常为[0,255],因此其数据类型一般为8位无符号整数,这就是人们通常所说的256级灰度。

灰度图:一个像素的灰度可以用8 位整数记录,也就是一个0~255的值。

深度图

当我们要记录的信息更多时,一个字节就不够了。

在RGB-D相机的深度图中,记录了各个像素与相机之间的距离。这个距离通常是以毫米为单位,而RGB-D 相机的量程通常在十几米左右,超过了255。

人们会采用16 位整数(C++ 中的unsigned short)来记录深度图的信息,也就是位于0~65535 的值。换算成米的话,最大可以表示65 米,足够RGB-D 相机使用了。

彩色图

彩色图像的表示则需要通道(channel)的概念。在计算机中,我们用红色、绿色和蓝色这三种颜色的组合来表达任意一种色彩。于是对于每一个像素,就要记录其R、G、B 三个数值,每一个数值就称为一个通道。例如,最常见的彩色图像有三个通道,每个通道都由8 位整数表示。在这种规定下,一个像素占据24 位空间。

通道的数量、顺序都是可以自由定义的。在OpenCV 的彩色图像中,通道的默认顺序是B、G、R。也就是说,当我们得到一个24 位的像素时,前8 位表示蓝色数值,中间8 位为绿色,最后8 位

为红色。同理,亦可使用R、G、B 的顺序表示一个彩色图。如果还想表达图像的透明度,就使用R、G、B、A 四个通道。

RGB彩色图与灰度图之间的转换

彩色图像转换为灰度图像时,需要计算图像中每个像素有效的亮度值,其计算公式为:

Y = 0.299R + 0.578G + 0.114B

双目相机通过视差来计算深度。RGBD相机则可以主动测量每个像素的深度。

通过红外结构光(Structured Light)来测量像素距离的。例子有Kinect 1 代、Project Tango 1 代、Intel RealSense 等。

通过飞行时间法(Time-of-flight,ToF)原理测量像素距离的。例子有Kinect 2 代和一些现有的ToF 传感器

RGBD相机原理图

深度图的保存

那么如何从RGBD相机提取像素的深度信息呢?

下面是一个简单的小程序,可以显示像素的深度信息.

#include 
#include 
#include 
using namespace std;

float depthscale = 1.0f/1000; //尺度因子,表示一个像素对应多少实际中的米
int main(int argc, char **argv)
{
    cv::Mat  depth = cv::imread("img.jpg");
    depth.convertTo(depth,CV_32FC1,depthscale); //这个转换很重要

    for (int v = 0; v < depth.rows; v++)
    {
        for (int u = 0; u < depth.cols; u++) {
            unsigned int d = depth.ptr<unsigned short>(v)[u]; // 深度值
            if (d == 0)
                continue; // 为0表示没有测量到
            else
            {
                cout<"";
                if(v%50==0||u%50==0)
                    cout<<endl;
            }
            
        }
    }
    return 0;
}

ConvertTo()函数

需要注意,其中的ConvertTo函数作用如下:

img: 图像数据来源,其类型为Mat。

注意: 不是所有格式的Mat型数据都能被使用保存为图片,目前OpenCV主要只支持单通道和3通道的图像,并且此时要求其深度为8bit和16bit无符号(即CV_16U),所以其他一些数据类型是不支持的,比如说float型等。如果Mat类型数据的深度和通道数不满足上面的要求,则需要使用convertTo()函数和cvtColor()函数来进行转换。

convertTo()函数负责转换数据类型不同的Mat,即可以将类似float型的Mat转换到imwrite()函数能够接受的类型。

而cvtColor()函数是负责转换不同通道的Mat,因为该函数的第4个参数就可以设置目的Mat数据的通道数(只是我们一般没有用到它,一般情况下这个函数是用来进行色彩空间转换的)。

另外也可以不用imwrite()函数来存图片数据,可以直接用通用的XML IO接口函数将数据存在XML或者YXML中。

具体含义,缩放并转换到另外一种数据类型:

dst:目的矩阵;

type:需要的输出矩阵类型,或者更明确的,是输出矩阵的深度,如果是负值(常用-1)则输出矩阵和输入矩阵类型相同;

scale:比例因子;

shift:将输入数组元素按比例缩放后添加的值;

dst(i)=src(i)xscale+(shift,shift,...)

原文标题:RGBD相机模型与图片处理

文章出处:【微信公众号:机器视觉智能检测】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红


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

    关注

    2

    文章

    1084

    浏览量

    40457
  • 测量
    +关注

    关注

    10

    文章

    4858

    浏览量

    111264
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62583

原文标题:RGBD相机模型与图片处理

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    手机相机像素原理

    原本是200百万像素的手机出厂设置后成像只有30万像素,我想问问手机相机像素原理?
    发表于 12-09 12:34

    40亿像素相机拍出什么?

    关键词:机器视觉、超大分辨率、高速相机、科天健 40亿像素的数码相机你见过吗?美国航天局为科研而特别研制的相机就使用了40亿像素的感光元件,
    发表于 06-01 13:53

    如何深度图像中找到3或5个中心像素

    嗨,大家好,我试图深度图像中找到几个中心像素。我正在尝试实现分割,我需要找到分割对象的距离。这就是我的想法,这将是有效的。当彩色图像用于分割时,全帧深度图像将用于找到距离。在我的下面
    发表于 11-19 14:19

    一种不依赖于棋盘格等辅助标定物体实现像素相机和激光雷达自动标定的方法

    主要内容本文提出了一种不依赖于棋盘格等辅助标定物体,实现像素相机和激光雷达自动标定的方法。方法直接点云中提取3D边特征,一避免遮挡问题,并且使用了精确度更高的
    发表于 09-01 07:42

    如何以编程方式STL库中提取版本信息

    我们正在将 STL 库集成到需要 IEC 61508 安全完整性级别 2 (SIL2) 的项目环境中。我们如何以编程方式 STL 库中提取版本信息?API 没有显示任何相关信息。另外
    发表于 12-30 08:18

    130万像素CMOS数码相机的设计

    130万像素CMOS数码相机的设计
    发表于 04-18 12:56 39次下载

    基于VB6.0的点阵字模信息提取方法

    摘要:提出通过颜色法提取像素点的汉字点阵字模信息提取方法,给出基于VB6.0的系统控件设置及流程实现方法。与基于内码法的汉字点阵提取方法的比较结果表明,该方法能够方便
    发表于 07-16 11:20 67次下载

    数码相机最大像素

    数码相机最大像素 最大像素英文名称为Maximum Pixels,所谓的最大像素是经过插值
    发表于 12-18 14:26 497次阅读

    数码相机有效像素

    数码相机有效像素数              有效像素数英文名称为Effective Pixels。与最大
    发表于 12-18 14:32 338次阅读

    利用超像素分割的信息选取算法

    点互信息(PMI)边界检测算法能准确检测图像中的边界,但算法效率受制于采样点的提取。针对采样过程中存在随机性和信息冗余的问题,提出一种利用超像素分割提供的中层结构
    发表于 12-14 17:11 0次下载

    像素时代里单反相机和无反相机格局会发生什么变化

    5060万像素的佳能5DS上市了,4240万像素的索尼A7R II也发布了,高像素的峰值在今年一下子又被拉得老高,而且无论是单反相机还是无反相机
    的头像 发表于 10-24 11:23 4802次阅读

    3D相机的类别及工作原理

    3D相机的不同之处在于,它可以测量普通数码相机无法测量的深度数据。所谓深度数据,就是像素相机
    的头像 发表于 09-24 12:40 1.8w次阅读

    一种融合深度网络的改进快速生成超像素算法

    提取像素特征进行。提岀融合深度网络的改进快速生成超像素算法,将深度学习网络嵌入到超像素的生成过
    发表于 04-07 10:54 26次下载
    一种融合<b class='flag-5'>深度</b>网络的改进快速生成超<b class='flag-5'>像素</b>算法

    基于全卷积神经网络的单像素边缘提取算法

    为实现复杂背景图像中髙精度边缘的准确提取,提出一种改进的单像素边缘提取算法。在改进的全卷积神经网络中,通过添加辅助输出层与采取多尺度输入的方式初步提取图像多
    发表于 05-27 14:30 5次下载

    RGBD相机模型与图片处理

    当我们要记录的信息更多时,一个字节就不够了。 在RGB-D相机深度图中,记录了各个像素相机之间的距离。这个距离通常是以毫米为单位,而RG
    的头像 发表于 05-15 11:33 735次阅读
    <b class='flag-5'>RGBD</b><b class='flag-5'>相机</b>模型与图片处理