1.3.2 opencv
OpenCV的全称是:Open Source Computer Vision Library。
OpenCV于1999年由Intel建立,现在由Willow Garage提供支持。OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。应用领域:1、人机互动;2、物体识别;3、图象分割;4、人脸识别;5、动作识别;6、运动跟踪;7、机器人。
1.3.3 OpenGl
OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三文图象(二文的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。
2 目标检测
2.1 视屏读入显示及帧预处理
对avi视屏的读入直接调用了oepncv库函数,主要使用了下述函数:
① cvCaptureFromFile() :从文件路径打开视频文件;
② cvQueryFrame():从摄像机或者视频文件中抓取一帧;
③ cvCreateImage():创建头并分配数据,用于创建交叉存取图像;
④ cvNamedWindow():创建窗口用于显示;
⑤ cvCvtColor():可以实现rgb颜色向HSV,HSI等颜色空间的转换,也可以转换为灰度图像。
2.2 运动目标轮廓标定
这里调用了opencv中的角点检测函数cvFindCornerSubPix和光流检测函数cvCalcOpticalFlowPyrLK.
①cvFindCornerSubPix(const void* srcarr, CvPoint2D32f*corners, int count, CvSize win, CvSize zeroZone, CvTermCriteria criteria )
image 输入图像.
corners 输入角点的初始坐标,也存储精确的输出坐标
count 角点数目
win 搜索窗口的一半尺寸。如果 win=(5,5) 那么使用 5*2+1 × 5*2+1 = 11 × 11 大小的搜索窗口
zero_zone 死区的一半尺寸,死区为不对搜索区的中央位置做求和运算的区域。它是用来避免自相关矩阵出现的某些可能的奇异性。当值为 (-1,-1) 表示没有死区。
criteria 求角点的迭代过程的终止条件。即角点位置的确定,要么迭代数大于某个设定值,或者是精确度达到某个设定值。 criteria 可以是最大迭代数目,或者是设定的精确度,也可以是它们的组合。
函数 cvFindCornerSubPix 通过迭代来发现具有子象素精度的角点位置,或如图所示的放射鞍点(radial saddle points)。
②cvCalcOpticalFlowPyrLK
使用金字塔LK算法,有两个特点,1、金字塔原理;2、偏导方法求解位移。
金子塔原理: OpenGL人体运动识别及模型模拟+文献综述(3):http://www.751com.cn/tongxin/lunwen_6467.html