Kinect体感游戏控制器的手势检测方法研究(5)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

Kinect体感游戏控制器的手势检测方法研究(5)


图像深度是指存储每个像素所用的位数,也用于量度图像的色彩分辨率.图像深度确定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数.它决定了彩色图像中可出现的最多颜色数,或灰度图像中的最大灰度等级.比如一幅单色图像,若每个象素有8位,则最大灰度数目为2的8次方,即256.一幅彩色图像RGB3个分量的象素位数分别为4,4,2,则最大颜色数目为2的4+4+2次方,即1024,就是说像素的深度为10位,每个像素可以是1024种颜色中的一种。本文中的图像是深度图像,由二文点阵组成,每个点都有各自的灰度值,从0到255,随着值的增大颜色逐渐加深,且255的点代表有效点。
2.2.2 深度图像中点和边的特点
 深度图像中除了周围的边界点,其周围都有8个邻接点,分为上下左右、左上、右上、左下、右下这八个方向。且相邻点的之间的距离固定为1。比如一幅128*128的灰度图中一共有128*128即16384个顶点,每个点都有自己的灰度值,本文中规定灰度值为255即颜色为黑色的点为有效点。
2.2.3 深度图像中dijkstra算法的应用
上面已经对dijkstra算法有了研究,但是原来对应的是一幅图中的几个点,相邻的点有自己的权值,所以现在换成深度图像,那么点的总数就变成了图的宽度值与长度值的乘积了,且所有的边的值都变为1。那么如何将深度图像中的点读出来和显示出来呢?在这里我们要用到OpenCV的技术。在OpenCV中有很多图像处理和计算机视觉方面的通用算法,并且封装了很多用来处理图像的方法,首先,拿到一幅深度图像我们需要把它读入,这里可以调用OpenCV中的imread(imgName, CV_LOAD_IMAGE_GRAYSCALE)这个方法,括号中左边的参数是图像的绝对路径,右边的是选择需要显示时的图像格式,比如灰色,彩色等。读入图像后,每个点都可以用二文坐标来显示,也就是X轴和Y轴。得到点之后,还要取得这个点的灰度值,可以调用imageData.at<unsigned char>(y, x)方法。我们知道应用dijkstra算法需要知道图中有哪些节点和边的权值,所以这里我们可以对每个点进行编号,每个点在图中都有固定的X值和Y值,比如在一幅128*128的图像中,该点的编号可以用公式y*128+x得到,下面就是如何处理图中边的权值了,每条边的长度我们都定义为1,那么我们可以定义一个二文数组a[][],来存储这个信息,前面的中括号内放入始节点的下标,后面的括号内放入目标节点的下标。有了V和E我们便可以应用dijkstra算法了。 (责任编辑:qin)