主要内容gydF4y2Ba

使用Kinect V1获取图像和骨骼数据gydF4y2Ba

在gydF4y2Ba检测Kinect V1设备gydF4y2Ba,你可以看到Kinect上的两个传感器gydF4y2Ba®gydF4y2Ba对于WindowsgydF4y2Ba®gydF4y2Ba设备由两个设备id表示,一个是颜色传感器,一个是深度传感器。在这个示例中,设备1是颜色传感器,设备2是深度传感器。这个例子展示了如何创建一个gydF4y2BavideoinputgydF4y2Ba物体由颜色传感器获取RGB图像,再由深度传感器获取骨骼数据。gydF4y2Ba

  1. 创建gydF4y2BavideoinputgydF4y2Ba对象为颜色传感器。gydF4y2Ba设备编号gydF4y2Ba1为颜色传感器。gydF4y2Ba

    vid = videoinput (' kinect ' 1 ' RGB_640x480 ');gydF4y2Ba
  2. 看看源设备上的特定设备属性,即Kinect摄像头上的颜色传感器。gydF4y2Ba

    src = getselectedsource (vid);src Display Summary for Video Source Object: General Settings: Parent = [1x1 videoinput] Selected = on SourceName = ColorSource Tag = Type = videosource Device Specific Properties:加速度计= (0.0 -1.0 0.0)AutoExposure =在BacklightCompensation AutoWhiteBalance = = = 0.2156 CameraElevationAngle AverageBrightness亮度= 3 = 1对比ExposureTime = 1.0 FrameInterval = 0帧速率= 30增益= 0γ= 2.2色相= 0 PowerLineFrequency =禁用饱和度WhiteBalance = 2700 = 1锐度= 0.5gydF4y2Ba

    您可以在输出中看到,颜色传感器具有一组特定于设备的属性。gydF4y2Ba

    设备特定的属性-颜色传感器gydF4y2Ba 描述gydF4y2Ba
    加速度计gydF4y2Ba 返回颜色和深度传感器的3-D加速度矢量。在设备运行或预览时更新数据。gydF4y2Ba

    这个1 × 3的双精度表示gydF4y2BaxgydF4y2Ba,gydF4y2BaygydF4y2Ba,gydF4y2BazgydF4y2Ba以重力单位表示的加速度值gydF4y2BaggydF4y2Ba(gydF4y2Ba9.81米/秒^ 2gydF4y2Ba).例如,gydF4y2Ba

    (0.06 -1.00 -0.09)gydF4y2Ba

    代表的值gydF4y2BaxgydF4y2Ba作为gydF4y2Ba0.06gydF4y2Ba克,gydF4y2BaygydF4y2Ba作为gydF4y2Ba-1.00gydF4y2Bag,gydF4y2BazgydF4y2Ba作为gydF4y2Ba-0.09gydF4y2Bag。gydF4y2Ba

    AutoExposuregydF4y2Ba 用于自动设置曝光。这将控制是否激活其他相关属性。值是gydF4y2Ba在gydF4y2Ba(默认),gydF4y2Ba从gydF4y2Ba.gydF4y2Ba

    在gydF4y2Ba意味着曝光是自动设置的,这些属性无法设置,并将抛出一个警告:gydF4y2BaFrameIntervalgydF4y2Ba,gydF4y2BaExposureTimegydF4y2Ba,gydF4y2Ba获得gydF4y2Ba.gydF4y2Ba

    从gydF4y2Ba表示无法设置这些属性,并抛出警告:gydF4y2BaPowerLineFrequencygydF4y2Ba,gydF4y2BaBacklightCompensationgydF4y2Ba,gydF4y2Ba亮度gydF4y2Ba.gydF4y2Ba

    AutoWhiteBalancegydF4y2Ba 用于启用或禁用自动白平衡设置。gydF4y2Ba

    在gydF4y2Ba(默认)表示它将自动配置白平衡和gydF4y2BaWhiteBalancegydF4y2Ba属性无法设置。gydF4y2Ba

    从gydF4y2Ba意味着gydF4y2BaWhiteBalancegydF4y2Ba属性是可变的。gydF4y2Ba

    BacklightCompensationgydF4y2Ba 配置背光补偿模式,以调整相机捕捉图像,根据环境条件。gydF4y2Ba

    注意,此属性仅在以下情况下有效gydF4y2BaAutoExposuregydF4y2Ba被设置为gydF4y2Ba启用gydF4y2Ba.默认值是gydF4y2BaAverageBrightnessgydF4y2Ba.gydF4y2Ba

    值:gydF4y2Ba

    AverageBrightnessgydF4y2Ba偏好平均亮度级别gydF4y2Ba

    CenterPrioritygydF4y2Ba喜欢在场景的中心gydF4y2Ba

    LowLightsPrioritygydF4y2Ba喜欢低亮度gydF4y2Ba

    CenterOnlygydF4y2Ba只偏向中锋gydF4y2Ba

    亮度gydF4y2Ba 表示亮度级别。取值范围为gydF4y2Ba0.0gydF4y2Ba来gydF4y2Ba1.0gydF4y2Ba,默认值是gydF4y2Ba0.2156gydF4y2Ba.gydF4y2Ba

    注意,此属性仅在以下情况下有效gydF4y2BaAutoExposuregydF4y2Ba被设置为gydF4y2Ba启用gydF4y2Ba.gydF4y2Ba

    CameraElevationAnglegydF4y2Ba 控制传感器镜头的角度。这是相机相对于地面的角度。取值范围为-27 ~ 27度的整数属性。默认值是最后一个设置值,因为这是一个粘性设置。只有当你想改变相机的角度时才设置它。此属性也与深度传感器共享。gydF4y2Ba
    对比gydF4y2Ba 表示对比水平。值必须在范围内gydF4y2Ba0.5gydF4y2Ba来gydF4y2Ba2gydF4y2Ba,默认值为gydF4y2Ba1gydF4y2Ba.gydF4y2Ba
    ExposureTimegydF4y2Ba 表示曝光时间,单位为万分之一秒。取值范围为gydF4y2Ba0gydF4y2Ba来gydF4y2Ba4000gydF4y2Ba,默认值为gydF4y2Ba0gydF4y2Ba.gydF4y2Ba

    注意,此属性仅在以下情况下有效gydF4y2BaAutoExposuregydF4y2Ba被设置为gydF4y2Ba禁用gydF4y2Ba.gydF4y2Ba

    FrameIntervalgydF4y2Ba 表示帧间隔,单位为万分之一秒。取值范围为gydF4y2Ba0gydF4y2Ba来gydF4y2Ba4000gydF4y2Ba,默认值为gydF4y2Ba0gydF4y2Ba.gydF4y2Ba

    注意,此属性仅在以下情况下有效gydF4y2BaAutoExposuregydF4y2Ba被设置为gydF4y2Ba禁用gydF4y2Ba.gydF4y2Ba

    帧速率gydF4y2Ba 每秒的帧数。此属性是只读的,颜色传感器的可能值是gydF4y2Ba12gydF4y2Ba,gydF4y2Ba15gydF4y2Ba,gydF4y2Ba30.gydF4y2Ba(默认)。它反映了运行时的实际帧率。gydF4y2Ba
    获得gydF4y2Ba 表示RGB颜色值的乘数。取值范围为gydF4y2Ba1.0gydF4y2Ba来gydF4y2Ba16.0gydF4y2Ba,默认值为gydF4y2Ba1.0gydF4y2Ba.gydF4y2Ba

    注意,此属性仅在以下情况下有效gydF4y2BaAutoExposuregydF4y2Ba被设置为gydF4y2Ba禁用gydF4y2Ba.gydF4y2Ba

    γgydF4y2Ba 表明伽马测量。值必须在范围内gydF4y2Ba1gydF4y2Ba来gydF4y2Ba2.8gydF4y2Ba,默认值为gydF4y2Ba2.2gydF4y2Ba.gydF4y2Ba
    色调gydF4y2Ba 显示颜色设置。值必须在范围内gydF4y2Ba-22年gydF4y2Ba来gydF4y2Ba22gydF4y2Ba,默认值为gydF4y2Ba0gydF4y2Ba.gydF4y2Ba
    PowerLineFrequencygydF4y2Ba 减少由电源线频率引起的闪烁的选项。值是gydF4y2Ba禁用gydF4y2Ba,gydF4y2BaFiftyHertzgydF4y2Ba,gydF4y2BaSixtyHertzgydF4y2Ba.默认值是gydF4y2Ba禁用gydF4y2Ba.gydF4y2Ba

    注意,此属性仅在以下情况下有效gydF4y2BaAutoExposuregydF4y2Ba被设置为gydF4y2Ba启用gydF4y2Ba.gydF4y2Ba

    饱和gydF4y2Ba 表明饱和水平。值必须在范围内gydF4y2Ba0gydF4y2Ba来gydF4y2Ba2gydF4y2Ba,默认值为gydF4y2Ba1gydF4y2Ba.gydF4y2Ba
    锐度gydF4y2Ba 显示清晰度水平。值必须在范围内gydF4y2Ba0gydF4y2Ba来gydF4y2Ba1gydF4y2Ba,默认值为gydF4y2Ba0.5gydF4y2Ba.gydF4y2Ba
    WhiteBalancegydF4y2Ba 表示颜色温度,单位为开氏度。取值范围为gydF4y2Ba2700gydF4y2Ba来gydF4y2Ba6500gydF4y2Ba默认是gydF4y2Ba2700gydF4y2Ba.gydF4y2Ba

    注意,此属性仅在以下情况下有效gydF4y2BaAutoWhiteBalancegydF4y2Ba被设置为gydF4y2Ba禁用gydF4y2Ba.gydF4y2Ba

  3. 您可以选择设置前面步骤中显示的一些属性。例如,您可能在光线较暗的情况下获取图像。你可以通过设置gydF4y2BaBacklightCompensationgydF4y2Ba财产gydF4y2BaLowLightsPrioritygydF4y2Ba它更倾向于光线较弱的环境。gydF4y2Ba

    src。BacklightCompensation =“LowLightsPriority”;gydF4y2Ba
  4. 通过调用预览颜色流gydF4y2Ba预览gydF4y2Ba在您创建的颜色传感器对象上。gydF4y2Ba

    预览(vid);gydF4y2Ba

    预览完成后,关闭预览窗口。gydF4y2Ba

    closepreview (vid);gydF4y2Ba
  5. 创建gydF4y2BavideoinputgydF4y2Ba对象为深度传感器。注意,创建了第二个对象(gydF4y2Bavid2gydF4y2Ba),gydF4y2Ba设备编号gydF4y2Ba2为深度传感器。gydF4y2Ba

    vid2 = videoinput (' kinect ' 2 ' Depth_640x480 ');gydF4y2Ba
  6. 看看源设备上的特定设备属性,也就是Kinect上的深度传感器。gydF4y2Ba

    src = getselectedsource (vid2);src Display Summary for Video Source Object: General Settings: Parent = [1x1 videoinput] Selected = on SourceName = DepthSource Tag = Type = videosource设备特定属性:Accelerometer = [0.0 -1.0 0.0] BodyPosture = Standing CameraElevationAngle = 4 DepthMode = Default FrameRate = 30 ireiter = on SkeletonsToTrack = [1x0 double] TrackingMode = offgydF4y2Ba

    正如您在输出中所看到的,深度传感器有一组与骨骼跟踪相关的设备特定属性。这些特性是特定于深度传感器的。gydF4y2Ba

    设备特定的属性-深度传感器gydF4y2Ba 描述gydF4y2Ba
    加速度计gydF4y2Ba 返回颜色和深度传感器的3-D加速度矢量。在设备运行或预览时更新数据。gydF4y2Ba

    这个1 × 3的双精度表示gydF4y2BaxgydF4y2Ba,gydF4y2BaygydF4y2Ba,gydF4y2BazgydF4y2Ba以重力单位表示的加速度值gydF4y2BaggydF4y2Ba(gydF4y2Ba9.81米/秒^ 2gydF4y2Ba).例如,gydF4y2Ba

    (0.06 -1.00 -0.09)gydF4y2Ba

    代表的值gydF4y2BaxgydF4y2Ba作为gydF4y2Ba0.06gydF4y2Ba克,gydF4y2BaygydF4y2Ba作为gydF4y2Ba-1.00gydF4y2Bag,gydF4y2BazgydF4y2Ba作为gydF4y2Ba-0.09gydF4y2Bag。gydF4y2Ba

    BodyPosturegydF4y2Ba 显示追踪到的骨架是站着还是坐着。值是gydF4y2Ba站gydF4y2Ba(给出20点骨架数据)gydF4y2Ba坐着gydF4y2Ba(给出10点骨架数据,使用关节索引2 - 11)。gydF4y2Ba站gydF4y2Ba是默认的。gydF4y2Ba

    注意,如果gydF4y2BaBodyPosturegydF4y2Ba被设置为gydF4y2Ba坐着gydF4y2Ba模式,gydF4y2BaTrackingModegydF4y2Ba被设置为gydF4y2Ba位置gydF4y2Ba,没有职位是返回,自gydF4y2Ba位置gydF4y2Ba髋关节的位置和髋关节没有被跟踪吗gydF4y2Ba坐着gydF4y2Ba模式。gydF4y2Ba

    请参阅本例最后的“身体姿势关节指数”小节,了解20个骨骼关节的指数列表。gydF4y2Ba

    CameraElevationAnglegydF4y2Ba 控制传感器镜头的角度。这是相机相对于地面的角度。取值范围为-27 ~ 27度的整数属性。默认值是最后一个设置值,因为这是一个粘性设置。只有当你想改变相机的角度时才设置它。这个属性也与颜色传感器共享。gydF4y2Ba
    DepthModegydF4y2Ba 表示深度图中的深度范围。值是gydF4y2Ba默认的gydF4y2Ba(范围50至400厘米)及gydF4y2Ba附近gydF4y2Ba(范围40至300厘米)。gydF4y2Ba
    帧速率gydF4y2Ba 每秒的帧数。此属性为只读,并固定在gydF4y2Ba30.gydF4y2Ba对于所有格式的深度传感器。它反映了运行时的实际帧率。gydF4y2Ba
    IREmittergydF4y2Ba 控制红外发射器是否开启或关闭。值是gydF4y2Ba在gydF4y2Ba和gydF4y2Ba从gydF4y2Ba.初始值为gydF4y2Ba在gydF4y2Ba.但是,这是一个粘性属性,所以默认值是最后设置的值。如果你把它设为gydF4y2Ba从gydF4y2Ba,它将在以后的使用中保持关闭,直到您更改设置。gydF4y2Ba

    这个特性的一个优点是,当使用多个Kinect设备时,它很有用,可以避免干扰。gydF4y2Ba

    SkeletonsToTrackgydF4y2Ba 指示作为元数据的一部分返回的骨架跟踪ID。值:gydF4y2Ba

    []gydF4y2Ba默认跟踪gydF4y2Ba

    (TrackingID1)gydF4y2Ba跟踪ID = TrackingID1的跟踪1骨架gydF4y2Ba

    [TrackingID1 TrackingID2]gydF4y2BaTrack 2骷髅跟踪id = TrackingID1和TrackingID2gydF4y2Ba

    TrackingModegydF4y2Ba 表明跟踪状态。值:gydF4y2Ba

    骨架gydF4y2Ba轨迹完整的骨骼与关节gydF4y2Ba

    位置gydF4y2Ba仅跟踪髋关节位置gydF4y2Ba

    从gydF4y2Ba禁用骨架位置跟踪(默认)gydF4y2Ba

    注意,如果gydF4y2BaBodyPosturegydF4y2Ba被设置为gydF4y2Ba坐着gydF4y2Ba模式,gydF4y2BaTrackingModegydF4y2Ba被设置为gydF4y2Ba位置gydF4y2Ba,没有职位是返回,自gydF4y2Ba位置gydF4y2Ba髋关节的位置和髋关节没有被跟踪吗gydF4y2Ba坐着gydF4y2Ba模式。gydF4y2Ba

  7. 开始第二个gydF4y2BavideoinputgydF4y2Ba对象(深度流)。gydF4y2Ba

    开始(vid2);gydF4y2Ba
  8. 使用gydF4y2BagetdatagydF4y2Ba.gydF4y2Ba

    获取对象的数据。[frame, ts, metaData] = getdata(vid2);查看元数据以查看骨架数据中的参数。元数据元数据= 10x1 struct array with fields: abtime: [1x1 double] FrameNumber: [1x1 double] IsPositionTracked: [1x6 logical] IsSkeletonTracked: [1x6 logical] JointDepthIndices: [20x2x6 double] JointImageIndices: [20x2x6 double] JointTrackingState: [20x6 double] JointWorldCoordinates: [20x3x6 double][2x6 double] PositionImageIndices: [2x6 double] PositionWorldCoordinates: [3x6 double] RelativeFrame: [1x1 double] SegmentationData: [640x480 double] SkeletonTrackingID: [1x6 double] TriggerIndex: [1x1 double]gydF4y2Ba

    这些元数据字段与追踪骨架有关。gydF4y2Ba

    元数据gydF4y2Ba 描述gydF4y2Ba
    AbsTimegydF4y2Ba 用MATLAB时钟格式表示完整时间戳(包括日期和时间)的一个1 x 1双精度浮点数。gydF4y2Ba
    FrameNumbergydF4y2Ba 表示帧号的1 × 1双精度浮点数。gydF4y2Ba
    IsPositionTrackedgydF4y2Ba 一个1 x 6布尔矩阵的真/假值跟踪每六个骨架的位置。一个gydF4y2Ba1gydF4y2Ba表示位置被跟踪gydF4y2Ba0gydF4y2Ba表示不是。gydF4y2Ba
    IsSkeletonTrackedgydF4y2Ba 一个1 x 6布尔矩阵的真/假值为跟踪状态的每六个骨架。一个gydF4y2Ba1gydF4y2Ba表示被跟踪gydF4y2Ba0gydF4y2Ba表示不是。gydF4y2Ba
    JointDepthIndicesgydF4y2Ba 如果gydF4y2BaBodyPosturegydF4y2Ba属性设置为gydF4y2Ba站gydF4y2Ba,这是一个20 x 2 x 6的x和y坐标双矩阵,20个关节相对于深度图像的像素,6个可能的骨架。如果gydF4y2BaBodyPosturegydF4y2Ba被设置为gydF4y2Ba坐着gydF4y2Ba,这是一个10 x 2 x 6的双关节。gydF4y2Ba
    JointImageIndicesgydF4y2Ba 如果gydF4y2BaBodyPosturegydF4y2Ba属性设置为gydF4y2Ba站gydF4y2Ba,这是一个20 x 2 x 6的x和y坐标的双矩阵,20个关节相对于彩色图像的像素,6个可能的骨架。如果gydF4y2BaBodyPosturegydF4y2Ba被设置为gydF4y2Ba坐着gydF4y2Ba,这是一个10 x 2 x 6的双关节。gydF4y2Ba
    合作局gydF4y2Ba 这个20 x 6的整数矩阵包含了所有6个骨架的每个关节跟踪精度的枚举值。值包括:gydF4y2Ba

    0gydF4y2Ba没有跟踪gydF4y2Ba

    1gydF4y2Ba位置推断gydF4y2Ba

    2gydF4y2Ba位置追踪gydF4y2Ba

    JointWorldCoordinatesgydF4y2Ba 20个关节的x, y, z坐标的20 × 3 × 6双矩阵,距离传感器几米,六个可能的骨架,如果gydF4y2BaBodyPosturegydF4y2Ba被设置为gydF4y2Ba站gydF4y2Ba.如果设置为gydF4y2Ba坐着gydF4y2Ba,这是一个10 × 3 × 6的双关节。gydF4y2Ba

    有关如何查看该数据的语法,请参见步骤9。gydF4y2Ba

    PositionDepthIndicesgydF4y2Ba 每个骨架相对于深度图像的像素x和Y坐标的2 x 6双矩阵。gydF4y2Ba
    PositionImageIndicesgydF4y2Ba 每个骨架相对于彩色图像的x和Y坐标的2 x 6双矩阵。gydF4y2Ba
    PositionWorldCoordinatesgydF4y2Ba 一个3×6双矩阵的X,Y和Z坐标,每个骨架相对于传感器为单位。gydF4y2Ba
    RelativeFramegydF4y2Ba 如果使用触发器,这个1 × 1 double表示相对于触发器执行的帧数。gydF4y2Ba
    SegmentationDatagydF4y2Ba 图像大小双数组,每个像素映射到跟踪/检测骨架,用数字1到6表示。这个分割图是一个位图,其像素值对应于视场中在该像素位置最接近相机的人的索引。值为0表示没有跟踪骨架。gydF4y2Ba
    SkeletonTrackingIDgydF4y2Ba 这个1 x 6的整数矩阵包含了所有6个骨架的跟踪id。这些id追踪特定的骨架,使用gydF4y2BaSkeletonsToTrackgydF4y2Ba属性。gydF4y2Ba

    跟踪ID由Kinect生成,并从采集到采集的变更。gydF4y2Ba

    TriggerIndexgydF4y2Ba 如果使用触发器,则表示与该事件关联的触发器的一个1 × 1双变量。gydF4y2Ba
  9. 通过深入元数据查看任何单独的属性。例如,看看gydF4y2BaIsSkeletonTrackedgydF4y2Ba财产。gydF4y2Ba

    元数据。IsSkeletonTracked ans = 1 0 0 0gydF4y2Ba

    在这种情况下,数据显示,在六具可能的骨骼中,有一具骨骼正在被追踪,它位于第一个位置。如果你有多个骨架,这个属性可以用来确认哪些骨架正在被跟踪。gydF4y2Ba

  10. 在世界坐标中获得第一个人的关节位置gydF4y2BaJointWorldCoordinatesgydF4y2Ba财产。因为这是位置1的人,索引使用gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

    metaData.JointWorldCoordinates(:,:,1) ans = -0.1408 -0.3257 2.1674 -0.1408 -0.2257 2.1674 -0.1368 -0.0098 2.2594 -0.1324 0.1963 2.3447 -0.3024 -0.0058 2.2574 -0.3622 -0.3361 2.1641 -0.3843 -0.6279 1.9877 -0.4043 -0.6779 1.9877 0.0301 -0.0125 2.2603 0.2364 0.2775 2.2117 0.3775 0.5872 2.2022 0.4075 0.6372 2.2022 -0.2532 -0.4392 2.0742 -0.1869 -0.84251.8432 -0.1869 -1.2941 1.8432 -0.1969 -1.3541 1.8432 -0.0360 -0.4436 2.0771 0.0382 -0.8350 1.8286 0.1096 -1.2114 1.5896 0.1196 -1.2514 1.5896

    这些列代表了骨架1上20个点的X、Y和Z坐标,单位为米。gydF4y2Ba

  11. 可选地查看分割数据作为一个图像。gydF4y2Ba

    %查看分割数据作为一个图像。显示亮度图像(metaDataDepth.SegmentationData);%设置彩色地图喷射到颜色编码的人检测。colormap(飞机);gydF4y2Ba

BodyPosture联合指数gydF4y2Ba

的gydF4y2BaBodyPosturegydF4y2Ba属性,在第5步,指示跟踪的骨架是站还是坐。值是gydF4y2Ba站gydF4y2Ba(给出20点骨架数据)gydF4y2Ba坐着gydF4y2Ba(给出10点骨架数据,使用关节索引2 - 11)。gydF4y2Ba

以下是Kinect适配器返回的关节顺序:gydF4y2Ba

Hip_Center = 1;脊柱= 2;Shoulder_Center = 3;头= 4;Shoulder_Left = 5;Elbow_Left = 6;Wrist_Left = 7;Hand_Left = 8;Shoulder_Right = 9;Elbow_Right = 10; Wrist_Right = 11; Hand_Right = 12; Hip_Left = 13; Knee_Left = 14; Ankle_Left = 15; Foot_Left = 16; Hip_Right = 17; Knee_Right = 18; Ankle_Right = 19; Foot_Right = 20;

当gydF4y2BaBodyPosturegydF4y2Ba被设置为gydF4y2Ba站gydF4y2Ba,则返回所有20个索引,如上所示。当gydF4y2BaBodyPosturegydF4y2Ba被设置为gydF4y2Ba坐着gydF4y2Ba,则返回数字2到11,因为这代表骨骼的上半身。gydF4y2Ba