郭文强+张筱+侯勇严+高文强
摘要:针对目前目标检测大多是在PC上实现的现状,设计一种低成本、小型化的动态目标检测系统。利用PI Camera V2摄像头作为视频获取的来源,将树莓派作为图像处理的平台,对视频流中运动目标及其运动方向进行检测。首先,对输入的实时视频流得到的视频帧进行图像预处理;进而,利用CamShift检测图像中的运动目标;最后,根据相位算法判断运动方向。实验结果表明,该系统能够实现动态目标检测的基本功能,可方便移植到移动机器人平台上,为移动机器人自主导航等提供基础。
关键词:树莓派;动态目标;运动方向;检测;CamShift算法
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2017)25-0182-03
Abstract: Aiming at the present situation, the design of a low-cost, small-scale dynamic target detection system is designed. Using the PI Camera V2 camera as the source of video acquisition, the Raspberry PI is used as the platform of image processing to detect the moving target and its movement direction in the video stream. Firstly, the video frame obtained by the input real-time video stream is preprocessed. Then, the motion target in the image is detected by CamShift. Finally, the motion direction is judged according to the phase algorithm. The experimental results show that the system can realize the basic function of dynamic target detection, and can be easily transplanted to the mobile robot platform, providing the basis for autonomous navigation of mobile robot.
Key words:Raspberry Pi; dynamic target; motion direction; detection; CamShift algorithm
近年來,机器人领域的一些先进的技术进步已经对许多工业生产和社会发展做出了巨大的贡献[1]。由于基于移动机器人的目标检测是地图构建、路径规划、机器人导航等的基础,因此,受到国内外学者的广泛关注。学者们为机器人添加了各种传感器来提升机器人的感知能力 [2]。
文献[3]使用FPGA作为图像处理平台,采用背景差分法检测运动目标,通过二值化方法提出图像中的静止场景,消除空洞和噪声点,达到提取目标中心点的目的,但FPGA价格昂贵、不宜开发。文献[4]利用不同相机的剪影图构造3D模型,在垂直物体运动轨迹方向投影,提取侧影图进行分析检测,但这种检测方法需要标定多台摄像机并存储多方向的运动库,增加了系统负荷和系统开发的成本。
本设计采用树莓派B+1.2V作为硬件平台,通过树莓派官方PI Camera V2摄像头获取的视频流信息得到视频帧,经过中值滤波和直方图均衡化完成预处理,结合CamShift检测图像中的运动目标,最后根据相位算法判别动态目标的运动方向。
1 动态目标检测原理
大量的实验研究发现,噪声给图像处理带来很多困难,对图像分割、特征提取、图像检测等具有直接影响。因此,采用适当的方法消除噪声是图像处理的重要步骤[5]。本系统采用中值滤波[6]和直方图均衡化[7]来预处理视频帧的噪声。
1.1 基于CamShift算法的运动目标检测
本文采用CamShift算法将特征物体的颜色直方图模型转换成颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的中心位置[8]。
算法具体步骤如下:
Step1.由目标检测模块或手工标定方式初始化搜索窗口的位置和大小(本文采用手工标定方式);
Step2. 计算搜索窗内的颜色概率分布。将目标所在区域中的每个像素从RGB空间转换到HSV空间,统计该目标在HSV空间中H分量的直方图,并对直方图进行归一化处理,就可得到目标区域在HSV空间中的概率分布。
2 系统硬件配置及搭建
本设计选用基于linux操作系统的树莓派B+ 1.2V作为系统的图像处理硬件平台,硬件配置为四核ARM Cortex-A7 CPU,1GB LPDDR2 SDRAM,最大支持硬盘(SD卡)容量为64GB[11];使用树莓派官方摄像头PI Camera V2,其使用Sony IMX219PQ CMOS传感器,800万像素,最大输出1080p高清视频流,通过MIPI接口连接树莓派, 硬件平台实物图如图1所示。
3 OpenCV的安装步骤
本系统使用树莓派B+1.2V作为图像处理平台,采用OpenCV基础算法的中值滤波、直方图均衡化算法,以及高级算法CamShift算法和相位相关算法,实现动态目标检测。
首先安装OpenCV的依赖包,可按照以下步骤进行:endprint
1) 安装基本库:sudo apt-get install git libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev libjpeg8 libjpeg8-dev
2) 安装必要的工程构建程序:sudo apt-get install g++ gfortran gdb cgdb checkinstall cmake build-essential cmake-curses-gui gnome-core-devel
3) 安装gstreamer:sudo apt-get install libgstreamer0.10-0 libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad
4) 安装x264:./configure —enable-shared —enable-pic && make && sudo make install
5) 安装ffmpeg:./configure —enable-gpl —enable-libfaac —enable-libmp3lame —enable-libopencore-amrnb —enable-libopencore-amrwb —enable-libtheora —enable-libvorbis —enable-libx264 —enable-libxvid —enable-nonfree —enable-postproc —enable-version3 —enable-x11grab —enable-shared —enable-pic && make && sudo make install
6) 安装v4l:./configure && make && sudo make install
然后安裝OpenCV:
在http://opencv.org下载最新源码包,进入目录编译:mkdir build; && cd build && ccmake../ && make && sudo make install。
4 实验结果
4.1 图像预处理效果
通过搭建好的实验环境,利用卡通布偶模拟运动目标,进行本设计的实验。如图2所示,正常拍摄视频得到的视频帧原始图片,存在很多的椒盐噪声,经过中值滤波后,去除了原始图像中的椒盐噪声,如图3.a所示;再经过直方图均衡化如图3.b所示,增强图像整体对比度的效果,使图片的细节更清晰。
4.2 运动目标检测实验
利用CamShift算法,对运动目标进行实时检测,如图4,当运动目标在摄像头监视的区域内,运动目标都会被检测出来,图中用红色的圈标识出了运动目标。
4.3 目标方向检测效果
在以上实验基础下,用不同的形状标识运动目标以及运动目标的方向,时间序列设置为500帧/ms。如图5所示,目标从画幅中心,向右下角移动过程中,不带方向圆为检测的物体,带方向的圆表示目标运动方向。
通过以上实验结果可知,系统提供的方法能够准确地检测运动目标的位置和大小,并能够识别出运动目标的运动方向。
5 结论
本文采用树莓派作为整个系统的操作平台,并利用树莓派的800万像素摄像头作为视频采集,形成小型化、低成本的动态目标检测系统。给出从实验环境系统搭建、硬件配置到工程安装的详细步骤。通过结合图像预处理、Camshift算法以及相位相关法,准确地检测运动目标,并判断出运动目标相对初始位置的运动方向,实现了动态目标检测的基本功能,如何将整个平台扩展至移动机器人等移动平台将是下一步研究的方向。
参考文献:
[1] Dirman Hanafi,Yousef Moh Abueejela,Mohamad Fauzi Zakaria. Wall Follower Autonomous Robot Development Applying Fuzzy Incremental Controller[J].Intelligent Control and Automation,2013,04(01):18-25.
[2] 周炫余,刘娟,卢笑,等.一种联合文本和图像信息的行人检测方法[J]. 电子学报,2017,45(1):140-146.
[3] 李艳婷,王水鱼. 视频图像中动态目标检测系统的FPGA硬件设计[J]. 计算机系统应用,2017,26(3):119-125.
[4] Bodor R, Drenner A, Fehr D, et al. View-independent Human Motion Classification Using Image-based Reconstruction[J]. Image and Vision Computing, 2009, 27(8):1194-1206.
[5] 李艳芳,王舰,张旭.图像隐藏信息与图像噪声分辨研究[J]. 计算机工程与科学,2014,(06):1154-1158.
[6] 方政,胡晓辉,陈永. 基于多方向中值滤波的各向异性扩散滤波算法[J]. 计算机工程与应用,2017,53(4):195-199.
[7] 吴成茂.直方图均衡化的数学模型研究[J]. 电子学报,2013,41(03):598-602.
[8] 马正华,顾苏杭,戎海龙. 基于SIFT特征匹配的CamShift运动目标跟踪算法[J]. 计算机科学,2014,41(6):291-294.
[9] 陈怀玉,杨旸. 基于归一化梯度相位相关的大尺度图像快速配准算法[J]. 模式识别与人工智能,2015,28(8):694-701.
[10] Akram Nemri,Fethi Soltani. uncertainty principles for the Fourier transform with numerical aspect[J]. Applicable Analysis,2016,95(5):931-943.
[11] 陶晓玲,伍欣,亢蕊楠.基于树莓派的隐蔽式渗透测试方法[J]. 电子技术应用,2016,42(6):94-97.endprint