返回首页

{A}介绍
许多专家预测,在接近的未来,在新的信息技术革命将会发生。这场革命段,轨道将连接新的计算机能力,并了解姿势,手势,和人类的情感表达。为此,计算机必须开始使用新的类型的视频传感器,将提供3D视频。 Kinect感应器等新类型的传感器。Kinect感应器有两个摄像头:传统彩色摄像机和红外光传感器,测量深度,位置和运动。Kinnect传感器开始,大约一年前的Xbox 360游戏系统的传感器,但许多软件开发商几乎立即开始 尝试使用它承认人类的姿势和手势。更多信息可以读取{A2的}。
{S0的}
我的文章是专门坐姿识别的研究。坐姿识别是根据人体骨骼跟踪。有三种Kinect感应器,可能会产生与人体骨骼追踪:OpenNi / PrimeSense的黑夜,Micosoft的Kinnect研究SDK库,软件包Libfreenet库。我已经使用了前两个。在他们的基础上,我公司开发的C#WPF应用程序,我结合彩色视频流和骨骼图像。
微软Windows 7下运行这些应用程序和。NET Framework 4.0。对于他们的编译,你需要微软Visual Studio 2010。你可能会发现说明安装OpenNi / PrimeSense的黑夜库和微软Kinect研究的SDK在。背景
坐姿识别算法是基于对人类骨架的跟踪和获取三个坐标(XS,YS,ZS)(XH,YH,ZH),(XK,YK,ZK)人类肩(记为S)的位置,臀围(记为H),膝(记为K)。
坐姿行港元(从臀部到膝盖)和行HS(从臀部到肩膀)之间的角度有关。
我们将区分左侧身体的一部分角 - 之间的夹角"??中心左膝髋关节载体和"中心髋关节中心的肩膀?载体,右侧身体的一部分角 - 之间的夹角"??中心左膝髋关节载体和"中心髋关节中心肩载体??
从角度和手的位置,人类的坐姿,可以得出结论,并作为指定的四个分类类型 - 失眠,注意力不集中,提高手,和非重点,下表给出。角,手的姿势坐姿0〜40睡眠40〜80向下非集中80〜100向下集中最多提高手100〜180向下非集中使用代码
我有两个问题,结合彩色视频流和骨骼图像。
第一个问题是如何找到他们只是在一个控制在一个窗口。对于这个问题,我用了两个应用程序的一个简单的WPF形式包含一个StatusBar控件和网格面板。网格面板包含一个同样大小的图像和画布控制。

<Window x:Class="RecognitionPose.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="User tracking with Microsoft SDK" Height="600" 

        Width="862" Loaded="Window_Loaded" 

        DataContext="{Binding}">

    <DockPanel LastChildFill="True">

        

        <StatusBar Name="statusBar" 

             MinHeight="40" DockPanel.Dock="Bottom">

            <StatusBarItem>

                <TextBlock Name="textBlock" 

                   Background="LemonChiffon" 

                   FontSize='10'> Ready </TextBlock>

            </StatusBarItem>

        </StatusBar>

        <Grid DockPanel.Dock="Top">



            <Image Name="imgCamera" Width="820" 

               ClipToBounds="True" Margin="10,0" />

            <Canvas Width="820" Height="510" 

               Name="skeleton"   ClipToBounds="True"/>

        </Grid>

    </DockPanel>

</Window>

OpenNI / PrimeSense的黑夜和微软SDK工作的第二个问题是,令人耳目一新的视频帧和骨骼框架的事件发生非同步。
对于这个问题,微软SDK的情况下,我叫我识别类的主要方法RecognizePose在后imgCamera和骨骼SkeletonFrameReady的事件处理程序的控制被刷新。 SkeletonFrameRead的事件处理程序简单地同步复制平面图像temp变量在当前视频帧VideoFrameReady事件处理程序:
,然后复制这个临时变量imgCamera.Source中的SkeletonFrameReady的事件处理程序:
imgCamera.Source = BitmapSource.Create(planarImage.Width, planarImage.Height,

  194,194,PixelFormats.Bgr32, null, planarImage.Bits, 

  planarImage.Width * planarImage.BytesPerPixel);

对于OpenNi / PrimeSense的黑夜的情况下,我用NuiVision的库{A4纸}书面{A5的}视频帧同步和骨架识别事件。我呼吁在此库UsersUpdated事件处理程序RecognizePose方法。
对于坐姿承认,主要的问题是要找到人类的距离和角度相对承认是稳定的Kinect感应器。为此,我增加了在应用程序设置5个参数来控制算法的行为:isDebug如果为true,则显示状态栏上的人对目前的位置信息;confidenceAngle - 控制的左半部分身体和右半部分身体的角度1之间的差异;如果这个角度是为给定的水平,我们假设,确认是不是稳定。坐和站立姿势;如果这个因素,目前人类的高度乘法是比最初standPoseFactor - 控制差异站在对人类的高度,我们假设当前的姿势站在构成太大。isAutomaticChoiceAngle - 选择之间自动定义的角度为最接近相机(真)和计算角度的平均之间的左半部分身体和右半部分身体的角度1(假);减去shiftAngle - 转向角角,以删除骨架识别的错误。
我发现坐在最稳定的识别发生时,这些参数有这些值:confidenceAngle = 50度;standPoseFactor = 1.1;isAutomaticChoiceAngle =真;shiftAngle = 20。
Kinect感应器位于地板上,Kinect感应器和坐姿的人类之间的距离是2米左右,人体在开启45度角传感器。
{S}
一个人的位置坐的优势是,Kinect感应器可能会不断跟踪识别所必需的人体部分:两个膝盖;1髋;两个肩膀;两只手; 头
对于其他人的位置,事实并非如此。例如,对于前腰位置,传感器真的不跟踪臀部;配置文件的位置,传感器跟踪只有一个身体的一部分:左或右。景点
我做了两个电影,使用这两个应用程序:{A6的}(确认使用微软研究院Kinect的SDK){A7的}(确认使用PrimeSense的黑夜库)
从电影,我们可以得出结论,承认行之有效的两个软件包。然而,应用程序可能会改善显着延长坐着的人的位置区的识别是稳定的。对于这一点,我们必须使用的不是一个而是两个或两个以上的Kinect的传感器。
我认为这些应用程序可以在任何地方坐姿势来控制人的行为是必要的。案件时,人的状态变为非集中或睡觉时,应用程序可能会提高增加了一些反馈,会发出警报,警报或紧急信号。另一方面,这种应用程序可以使用在大学期间举办研讨会和实验室收集有关学生活动的统计数据。这些应用程序将学生集中的平均时间计算或不集中在一个研讨会上,他们举手的时候,教授的数量可以占到这个统计,在与学生的个人作品。

回答

评论会员:游客 时间:2012/02/06
有趣的想法,连KinectCP上,一名优秀的
加夫里洛夫阿列克谢
评论会员:游客 时间:2012/02/06
让我们想象一下安装这个东西对他的员工和经理在椅子上添加一些电线......如果有人不集中,软件点燃椅子推雇员更集中!{S2的}
Kanou92
评论会员:游客 时间:2012/02/06
我觉得abour运营商的核电厂。重要的是,他要集中。在其他情况下可能切尔诺贝利:|VHGN:噢,我没有想到,...伟大的主意
Gavrilov2006:你好加夫里洛夫))

我还没有发现任何有关您的信息,在CodeProject上只有一个 - 你是从俄罗斯))
我在莫斯科的博士研究生,和我们在pojects,这是一个你在这里发布的密切合作。

你能提供你一些细节吗?

vahagn
评论会员:游客 时间:2012/02/06
VHGN:|gavrilov-alekcei@yandex.ru
爱德华纳丁
评论会员:游客 时间:2012/02/06
Еслыдобавитьсглаживаниеточек,вообщебудетотлично)))
Abinash Bishoyi
评论会员:游客 时间:2012/02/06
伟大的工作!我5{中三}