MATLAB人体行为检测和识别

人体行为检测与识别

人体行为检测与识别是当前研究的重点,具有很高的研究价值和广阔的应用前景。主要应用在型人机交互、运动分析、智能监控和虚拟现实也称灵境技术(VR)领域,对于研究人体检测和识别有着重要的意义。因为人的运动的复杂性和对外部环境的多变性,使得人们行为识别和检测具有一些挑战。对人类行为和检测的研究目前处于初级阶段,有待进一步研究和开发。

本文基于matlab人体行为识别和检测的研究,本文主要研究的是从图像中判断出目标处于何种行为,例如常见的走、坐、躺、跑、跳等行为的识别。从现有的很多主流研究成果来看,最常见的行为识别系统结构包括几个模块:目标检测、目标跟踪、行为识别。本文首先对图像进行判断是否有人体目标,识别出人体后对图像进行灰度化,在对灰度图像用背景差法与背景图像比对,最后,比对提取出的人体来判断人体处于何种行为。

1 研究背景

    随着社会的发展,人民生活的提高,人们越来越关注安全问题,对视频监控系统的需求也爆发式扩张,如停车场,超市,银行,工厂,矿山等安全有监控设备,但监控系统不会主动实时监控。因为它们通常在相机发生后的异常,但只有在记录进行了观察和分析,以捕获存储的视频图像结果,然后知事实发生。因此迫切需要一种监视系统,它能够在24小时的连续实时监测,并且相机自动分析人类行为识别的有效的分析所捕获的图像数据。此外,当发生异常时,系统能够守护人员准确及时报警,从而避免犯罪和其他异常情况的发生。随着监控系统到位,以帮助人们甚至完成监控任务。可以减少人力和财力的投入,由于就业监视人员进行。另外,如果长时间不运动图像信息记录,保存几下,就失去了意义和视频监控系统的存储资源浪费存储空间。因此,传统的监视系统浪费了大量的人力,并有可能引起报警,性能差的实时监控的泄漏。监控等实时行为分析系统来识别人体,不仅可以替代监控人员的工作的一部分,提高监测系统的自动化水平,同时也提高监视存储的效率,还有一个广泛的应用,并在视频监视系统的潜在经济价值之前。由于人的行为具有自由的伟大程度,因为身体宽松长裙不同程度和它的外貌和从图像捕获设备位置不同距离的表现风格将是一个很大的分歧,这是人的行为分析,找出了一定的难度。但是,人类行为的实时分析,智能监控系统,以确定关键技术及其广阔的前景药,安全性,虚拟现实,军事和潜在的经济价值,国内外研究机构和学者越来越多的关注,并在许多全球领先的刊物和会议专题讨论。美国和欧洲都进行了一些相关的研究项目。 VSAM主要项目,如美国国防部高级研究计划局,成立于1997年(视觉监视和监测),主要是在视频为主的视频场景理解技术的战场和民用研究;IBM和微软等公司越来越多地将基于视觉的手势识别技术集成到其业务。 W4的实时可视化监控系统已经能够实现定位以及人体运动和跟踪能力的人的分割,并能检测一个人是否携带物体的简单动作等等;重大项目导师制欧盟委员会Framework5计划成立于1999年,主要是对人的行为和人机交互的研究,以开发用于公共安全,安全管理系统的工具; DARPA在2000年和资助长期的人类行为识别(识别人类在距离)项目,主要用于国防研究预防恐怖袭击和民间的多模态监测技术;雷丁大学,英国已经推出了理性的项目(稳健的方法进行监测和了解的人在公共场所),ETISE(视频场景理解评估),ISCAPS(拥挤区域治安综合监控),人类的主要研究行为在视觉图像识别和场景的理解;此外还有Pfinder(人发现者)系统,该系统可以执行人民和谅解的行为,以及项目AVITRACK(飞机周围,归类车辆和个人跟踪围裙的活动模型解释和检查)实时跟踪,是共同资助欧盟和奥地利的研究,该项目的重点是视频监控技术的研究。国内机构这方面的研究也有自动化研究所模式识别,微软亚洲研究院,感知,北京大学国家实验室,大学这方面的研究国家实验室有清华大学,浙江大学。虽然起步相对较晚的时间,而且还对关键技术进行深入研究人的视觉分析。人类的行为识别主要用于运动图像序列中含有人体的分析和处理,往往涉及的检测和清除运动目标检测,运动物体的阴影,特征提取和的四个过程识别人的行为的描述和分析的运动。在这里,我们从人的行为识别技术的研究现状,以及人的行为识别技术的热点和难点,讨论四个方面阐述。

2 研究意义

    人体行为检测与识别技术除了在智能监控系统中具有有广泛的应用前景和潜力,在计算机视觉中是一个极具有吸引力及挑战性的问题。人体运动的视觉分析是一个新兴前沿的研究领域,涉及模式识别,图像处理,计算机视觉,人工智能等多门学科。它可以广泛应用于许多领域,如:运动捕捉,人机交互,监控和安全,环境控制和监测,体育及娱乐分析等,特别是在视频监控方面可广泛应用于银行、邮电、教育、交通、公安、监狱、法庭、大型公共设施、公共场所(银行、医院、停车场、商店、等公共场所甚至家庭庭院内)、大型仓库及军事基地等场所,在国防与公共安全领域起着日益重要的作用。综上所述,因此,人体动作的视觉分析具有极大的商业价值与现实意义。

3 研究内容

本文主要对人体行为检测和识别方法进行研究,主要研究内容如下:

(1)判断是否为人体

在目标提取之前,首先要对输入的图片进行检测。本文通过肤色检测判断目标是否为人体。

(2)人体目标提取

    如果是人体导入背景图片与背景图片做差,再通过背景差阈值分割法进行提取。

(4)行为识别

在解决了以上的问题之后,接下来就是要选择一种合适的算法来进行人体姿态识别,这也是本文研究的重点和难点。本文采用一种人体目标的连通区域的长宽比例来对人体行为进行识别。

4行为识别

日常生活人的基本姿态有站、坐、躺,组成一个姿态集合A:

A={跳,走,跑,坐,躺}               (3.1)

当前检测的姿态

,但是只有当图片中有人体时才能被检测出来,所以当图片中没有人体时则认为图片中的信息是非人体。

图3-1 识别流程图

实现步骤总结如下:

(1)进行图像的预处理:主要包括对图像进行灰度化以及滤波。

(2)背景建模:这是背景差法较为重要的第一步。目前大多的思路都是根据前N帧图像的灰度值进行区间统计从而得到一个具有统计意义的初始背景。由于背景比较简单则选取图3-1(2)作为背景图:

    

图3-2(2)为背景图片

(3)前景提取:将图像与背景做差,即可求得背景差图,然后根据一定的方法对改图进行二值化,最终获得运动前景区域,即实现图像分割。

关于图像的二值化,目前主要的难点在于阈值的选取,随着运动物体在整个监控区域内的运动,所拍摄的图片具有不同的灰度特性,因此阈值的选取是一个研究热点,目前多采用的方法有最大类间方差法,一维交叉熵阈值法,二维交叉熵阈值法以及其他的自适应阈值选取方法等。由于本人对此研究不深,故选固定的阈值。

3.3背景差阈值分割法

    运用阈值法原理进行分割,阈值法是比较简单的图像分割方法,是一种常常运用的并行区域的技术。阈值是用运在区分目标图片和背景图片的灰度门限。如果要检测的图像只有目标和背景两类,那么只需要选取一个阈值这种方法称为单阈值分割,这种方法是将图像中每个像素中的灰度值与阈值相对比,灰度值大于阈值的算一种,灰度值小于阈值的为另一种。如果图像中存在多个检测目标或无关目标,那么就选多个阈值将每个目标及背景区分开,这种方法称为多阈值分割阈值,由于本人只有一个目标则采用单阈值分割,图3-3(1)为分割前后的比对

            sit walk

图3-3(1)

3.4通过长宽判断人体行为

 行为分析最基本的两个问题:行为描述和行为识别。

   由于人体具有一定的比例关系,例如,手臂在身体的上半部分,脚在身体的下半部分。可以想象,如果在某个区域内白点数(白色像素达标目标)比较多,则说明有肢体出现在该区域。如果事先能够定义好所有可能的姿态集合,并根据每一个姿态确定其区域组合,即可事先对姿态的判断。以左脚为例,若通过计算、和区的目标比例(即白点数与该区域的比例)后发现中的目标比例最大,则可判定左脚有拾起动作,角度大概在20~40之间。为了更好地确定动作的角度,可以把区域划分得更细(该算法首先需要确定人体的标准位置,用红色矩形框标出,计算出矩形框的高H和宽L,根据高宽的比例来判断人体的姿态。

   这种方法的缺点在于,在除法运算的角度是粗糙的,进行更详细的动作,如拾取小角度肢,四肢弯曲(如臀部)等不能分割,分辨不够精确。有极个别的行为长宽比会重合,行为识别结果如图3-1所示

图3-4(1)卧姿判断

               

                       

图3-4

(2)坐姿判断

                                 

                                  

                                 

图3-4(4)行走判断

图3-4(4)跳跃判断

           参考文献

[1] 李智毅.新一代Web应用开发技术AJAX[C]//孙立峰.第二届和谐人机环境联合学术会议论文集. 北京:清华大学出版社,2017.31-34

[2] 王培,冯曼菲.Web 2.0开发技术详解[M].北京:人民邮电出版社,2016.389-403,495-520.

[3] Garrett J J. Ajax:A New Approach to Web Applications[EB/OL]. http://www.adaptivepath.com/publications/essays/archives/000385.php,2022-2-18

[4] [美]Ryan Asleson , Nathaniel T.Schutta.Ajax 基础教程,金灵等译.北京:人民邮电出版社,2016.

[5] 徐驰. Ajax模式在异步交互Web环境中的应用[J]. 计算机技术与发展,2016,16(11):229-233.

[6] 姚国新.基于Ajax的WEB应用技术的研究与实现[D]:[硕士学位论文].陕西:西北大学信息科学与技术学院,2021.

附录1 部分关键源码及解释

在这部分,将结合具体的源代码具体说明系统的执行流程和逻辑。

%申明数据库的位置

input = 'dataset';

%申明前景检测输出图像的位置

output = 'forground';

output2 = 'result';

str1 = dir(input); %存储每个动作的文件夹

bk = imread('bk.png');%读入背景图片

bk = rgb2gray(bk);

  % 彩色背景转灰度背景

threshold = 40; %背景差阈值

radio_jump = [];

radio_lie = [];

radio_run = [];

radio_sit = [];

radio_walk = [];

for x = 3:length(str1) %循环每个动作文件夹

    x

    

    str2 = dir([input '\' str1(x).name '\*.png']); %存储每个动作文件中的图片信息

    

      

        %[x y x_with y_with]

        %计算外接框的长宽比

        radio = bb(max_index).BoundingBox(3)/bb(max_index).BoundingBox(4);

        if x == 3

            radio_jump = [radio_jump;radio];

        end

        if x == 4

            radio_lie = [radio_lie;radio];

        end

        if x == 5

            radio_run = [radio_run;radio];

            

        end

        if x == 6

            radio_sit = [radio_sit;radio];

        end

        if x == 7

            radio_walk = [radio_walk;radio];

        end

        

        imshow(im)        

        

        

        % 判断外接框内是否有肤色, 如果有肤色, 才是人, 才进入行为判断       

        

        rectangle('Position', [c r c_width r_width])

        

        sum_im = im(r:r+r_width,c:c+c_width,:); %外接框图像

        

        skin = skin_fun(sum_im); %寻找是否有肤色

        skin = medfilt2(skin);

        bb_skin = regionprops(skin,'BoundingBox'); %如果有肤色,切割出连通域

        

        min_index = 1;

        min_height = 720;

        for z = 1:size(bb_skin,1)

            if bb_skin(z).BoundingBox(2) <= min_height;

                min_height = bb_skin(z).BoundingBox(2);

                min_index = z;

            end

        end

        

             

        

        

        if  size(bb_skin,1) >=1  %如果找到肤色

            

            rectangle('Position', [c r c_width r_width])

            rectangle('Position', [c2 r2 c_width2 r_width2])

            text(c2+c_width2+5,r+r_width2+5,'face') ;

            %jump

            if   radio<= 0.5

                text(c-5,r-5,'jump') ;

            end

            %lie

            if radio>= 1

                text(c-5,r-5,'lie') ;

            end

            %run

            if  radio >0.54 && radio<0.6

                text(c-5,r-5,'run') ;

            end

            %sit

            if radio >=0.6 && radio <1

                text(c-5,r-5,'sit') ;

            end

            %walk

            if radio<=0.54 && radio>0.5

                text(c-5,r-5,'walk') ;

            end

            

        else %如果没找到肤色

            text(c-5,r-5,'No Human') ;

            

        end

        

        saveas(gcf,[output2 '\' str1(x).name '\' str2(y).name]);

        pause(0.005)

        imwrite(fg,[output '\' str1(x).name '\' str2(y).name]);

        

    end

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值