资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基于OpenCV的小型生物运动检测技术研究 郭志彪段为摘要;从图像处理在视频监控的角度出发提出了一种针对小型生物的检测,将Open CV开源计算机视觉库源代码作为基础函数库,改写或者调用其中的函数,在Visual Studio 2015平台上编程實现。将帧差法,背景减除,灰度化,二值化阈值分割等图像操作应用于视频监控中。实验结果表明,本文中方法具有良好的实时性,能够精确检测和跟踪小型生物,具有很好的鲁棒性和精确性。关键词:运动目标检测;机器视觉;图像处理OpenCV:TP18 :A :1009-3044(2017)07-0171-02运动目标的检测及跟踪技术在机器人导航、安全监控、航天行业等领域都有着广泛的应用,并成为当前机器视觉领域研究重点之一。但是当前的技术对于移动速度快、体积小的小型生物的跟踪很难达到准确度高,实时性强。1运动目标检测的基本方法近些年来,国内外的学者们在运动目标检测的问题上,已经提供了许多有效的方法,但是很多算法不能同时满足实时性,精确性的要求,特别是对于移动速度快的小型生物。目前,常用的运动目标检测算法有以下几种:光流法,基于卡尔曼滤波的运动目标跟踪,背景差分法等。1.1光流法光流法基本原理为检测序列图像中出现的瞬时位移场,从连续的图像序列中计算光流场,把计算得到的光流,作为检测运动目标的重要特征。光流法不受背景变化的影响,但对于噪声多的场景,光流法容易出现误判的情况。1.2基于卡尔曼滤波的运动目标跟踪基于卡尔曼滤波的运动目标跟踪是将目标的运动轨迹作为模型,预测目标下一时刻的位置。能减少运算量,缩小检测区域,但是当运动目标长时间被遮挡时会存在目标跟踪丢失的情况。1.3背景差分法背景差分法是事先将图像储存起来作为背景参考模型,再用当前图像与背景作差,找出在灰度上与背景有较大差异的点,检测运动区域。背景差分法对于运动速度快的运动目标,检测准确,但对于动态变化的场景,检测精度低。综上所述,现有技术存在着对于快速移动的小型生物检测精度不高的问题。作者试图基于帧差法,利用Open CV函数库,寻求一种针对移动速度快、体积小的运动物体的检测。研究主要实现的目标是对移动速度快的小型生物的检测,主要是利用视频图像序列中连续两到三帧的差异来检测运动区域。首先,获取相邻两帧图像,将前一帧作为背景,用后一帧减去背景,获取图像亮度差绝对值较大的区域,一般亮度差异较大的区域可认为由运动物体引起的。帧差法算法实现简单,受光线影响小,适应于动态场景,稳定性强。但是该算法对于两帧获取时间间隔要求高,时间间隔选取不适当,容易出现“重影”和“空洞”的现象。研究对该算法进行改进,以提高检测的精度。2系统组成运动目标检测系统主要由视频获取,读取相邻两帧,图像灰度化处理,相邻帧的图像对应像素值相减,差分图像二值化。系统首先获取实时采集的序列图像。其次,读取序列图像中相邻两帧图像,对该两帧图像进行灰度化处理。将前一帧作为背景,将后一帧图像的像素值减去背景对应的像素值,获取变化大的区域,确定运动目标的位置。最后对运动目标进行二值化突显运动区域。3算法原理3.1图像灰度化研究使用cvtClor函数实现图像的灰度化。函数声明为src和dst分别是源图像和输出图像;code是一个掩码,表示源图像和输出图像之间的转化模式。最后的&tCn表示dst图像的波段数,默认值为0,可从参数code中推断。code的模式包括:3.2帧差算法研究采用帧差算法实现运动目标提取,使用函数subtract()。函数声明为void subtract(InputArray src1,InputArray src2,OutputArray dst,InputArray masknoArray(),int dtype=-1)其中,src1为第一帧图像,src2为第二帧图像,dst为输出图像,mask为自定义掩码。)type为两帧相减的方式。本函数实现了帧差算法,读取一段序列图像,获取相邻两帧的图像,将前一帧图像作为背景src1(I),后一帧作为当前图像src2(I),用当前图像的像素值减去背景相应的像素值,获取变化较大的区域,该区域可认为由运动物体造成,具体公式可参考公式(1)。dst(1)=saturate(srcl(D-src2(I)if mask(I)0 (1)3.3差分图像二值化差分图像二值化是在上一步获取的差分图像的基础上,进一步凸显运动物体的区域。具体实现为先设定一个阈值T,当图像的像素值大于该阈值时设定为1,否则设定为0。接着将所有设定为1的点的灰度值设置为255,所有设定为0的点的灰度值设置设置为0,具体公式可参考公式(2)。(2)4算法在编程环境下的具体实现研究算法的具体实现如下:首先建立一个VideoCapture结构体,导入一段序列图像。然后读取该序列图像中的一帧图像,保存在类型为Mat的结构体中,等待5毫秒后,读取下一帧图像,同样保存在类型Mat的结构体中。接着调用灰度化函数cvtColor()对两帧图像进行预处理。调用矩阵相减函数subtract(),设定一个阈值,对相减的差分图像进行二值化。最后调用namedWindow()函数建立窗口并调用imshow()函数显示图像。5实验结果及分析研究对帧差算法进行改进,调用OpenCV函数库中的函数,在Visual Studio 2015平台编程实现了对于小型生物的运动检测,实验结果见下图。图2所示为实时图像第一帧,图3所示为相邻帧,将图2,图3分别灰度化后再相减后得到图4所示图像,图5为二值化后的图像。其中在获取相邻两帧的时间间隔以及二值化的阈值,需根据实际处理的图片来不断调整数值,经过多次实验不断尝试后,时间间隔在10-30毫秒之间为最好,二值化的阈值在10-13时,运动物体的真实目标区域较完整,“重影”、“空洞”现象较少。研究算法检测效果比较好,对于移动速度快的小型生物也能很好的检测出来,真实目标区域较完整,背景噪音较少,而它错误可以通过形态学去噪、阴影抑制、空洞修补加以完善。6结语研究调用OpenCV函数库中的函数,对帧差法进行改进,实现了对于小型生物的运动检测。改善了“空洞”重影”的情况,提取的真实目标区域较完整,检测效果理想,解决对于小型生物的运动检测精度不高的问题,具有一定的实用性。 -全文完-
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号