数字图像处理--手势分割基本原理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

技术介绍:
随着计算机的高速发展,人机交互模式也不断发生着变化。现实生活经验可得,人与人在交互过程中,肢体语言也非常重要,使用手来实现人机交互,比起使用键盘,鼠标等媒介而言,更加自然流畅,这也是近期触屏手机逐步成为主流的原因之一。

而使用手来实现人机交互,其原理就是机器对手的解释,如手的形状,手的空间位置,手的姿态,手的空间位置等。而识别的方法有很多,有的是利用的配套设备,如加速度传感器等,而我今天要讲的一种识别方法是基于视觉的手势识别。

基于视觉,也就是不利用相对复杂的配套设备,使用摄像头来捕获关于手的图像,并通过算法分析,从图中抽出关于手的信息。常见的包括单目识别系统,双目识别系统以及多目识别。顾名思义,单目也就是只是用一个摄像头,而双目使用两个(相当于人的双眼,通过这个可以提取出手的深度信息,获得手的空间位置),多目也就是多摄像头协作。

手势识别最重要,也是最基础的一步就是手势分割了,手势分割是指将有意义的手势区域从包含手势的图像出提取出来的过程,手势分割的好坏直接影响后续的手势识别效果。
下面我来简单的讲一讲手势分割的基本原理,和一些基本方法。基本原理:
手势分割是手势识别过程中的第一个环节,也是最为关键的技术之一,主要涉及到数字图像处理中的图像预处理,如去噪,增强,边缘化,空洞填充,后处理以及手的空间位置的提取,手势分割的意义是为了让有意义的区域——手势与摄取图像的其他部分,如背景产生明显的差异,如二分化。

基于视觉的手势识别中,要将手势分割存在相当的难度,因为复杂的环境因素,如背景的不确定信,光照情况等等。所以很多情况下,研究人员对使用者加上了很多限制以保障分割效果,如使用纯白纯黑的背景,身穿黑色的长袖衣服,带上特殊色彩的手套等。这样可以很大程度上降低算法的复杂度,并提升识别效果,但是对使用者造成了诸多限制,不利用自然地交流。目前手势识别的研究中提出了大量的方法,但依然存在很大的问题,手势识别,手势分割依然有很大的提升空间。

今天就讲一讲手势分割中最为常见的一种分割方法——基于肤色模型分割的基本原理和实现流程实现原理:
人的手型千奇百怪,人的手势更是多不胜数,大脑识别手势是通过了多种途径来提取手的特征信息,而其中最为重要的一个则是肤色,因为肤色在色彩空间的一定范围呈聚类特征,具有相对稳定性,可以作为分割手势的依据。

常见的色彩空间有RGB,YCrCb,HSV等,对于

一个24bit图,其中使用的RGB颜色空间。RGB空间也就是使用颜色三原色Red、Green、Blue分量来描述色彩,这种色彩空间很常见,但由于受光线影响非常大,所以一般只用于手势粗分割。

为了削弱光照情况对手势的影响,我们常采用不同的方法,如应用光照补偿模型,光照自适应模型等,今天我主要讲最简单的一种方法,通过转换色彩空间来削弱光照影响。
这里我们通过不同的样本分析可以发现HSV空间中肤色的聚类特征更为明显,因为HSV空间是使用三要素色度(H)、饱和度(S)、亮度(V),这样便把色度信息抽了出来。

RGB空间转HSV(HSB)空间算法如下:
function RGBToHSB(rgb : TRGBColor) : THSBColor;
var
minRGB, maxRGB, delta : Double;
h , s , b : Double ;
begin
H := 0.0 ;
minRGB := Min(Min(rgb.Red, rgb.Green), rgb.Blue) ;
maxRGB := Max(Max(rgb.Red, rgb.Green), rgb.Blue) ;
delta := ( maxRGB - minRGB ) ;
b := maxRGB ;
if (maxRGB <> 0.0) then s := 255.0 * Delta / maxRGB
else s := 0.0;
if (s <> 0.0) then
begin
if rgb.Red = maxRGB then h := (rgb.Green - rgb.Blue) / Delta
else
if rgb.Green = maxRGB then h := 2.0 + (rgb.Blue - rgb.Red) / Delta
else
if rgb.Blue = maxRGB then h := 4.0 + (rgb.Red - rgb.Green) / Delta
end
else h := -1.0;
h := h * 60 ;
if h < 0.0 then h := h + 360.0;
with result do
begin
Hue := h;
Saturnation := s * 100 / 255;
Brightness := b * 100 / 255;
end;
end;



举报 | 2010-05-08 20:32回复

相关文档
最新文档