视频图像跟踪算法综述

cf2_teaser        图像跟踪一直都是计算机视觉领域的难题,事先知道第一帧中的目标位置,然后需要在后续帧中找到目标。先验知识少,目标被遮挡、目标消失、运动模糊、目标和环境的剧烈变化、目标的高速运动、相机的抖动都会对目标跟踪造成影响,图像跟踪一直都是CV领域的难题。

        深度学习用于图像跟踪有两大要解决的问题,一是图像跟踪一般使用在线学习,很难提供大量样本集,二是深度学习使用CNN时,由于卷积池化,最后一层的输出丢失了位置信息,而图像跟踪就是要输出目标的位置。

        2013年以来,深度学习开始用于目标跟踪,并且为这些问题提供了一些解决思路。这篇博客首先阐述图像跟踪今年来的研究进展,然后再介绍深度学习用于图像跟踪近年来的研究,最后附上一些学习资料和相关网站。

阅读更多

MatConvNet深度学习框架简介及GPU使用注意事项

        MatConvNet是一个基于Matlab的深度学习框架,在计算部分,最底层混编了C/C++或者CUDA C,这使得其速度并不是特别慢。就使用体验来说,MatConvNet是非常优秀的,借助于Matlab,定义网络,使用现有模型以及数据可视化都非常方便。

        由于MatConvNet文档和Demo都比较完备,所以这篇博客主要介绍一些GPU的配置细节。

阅读更多

OpenCV实现Census变换

census        在立体视觉中,常常用到Census变换,Census变换是一种非参数局部变换,其将周围像素的强度映射到一个比特穿,从而捕获图像的结构。同时使用Census变换可以减少由相机增益和偏置引起变化的影响。在立体匹配过程中,将图像做Census变换后,计算像素点之间的明式距离进行匹配,可以得到较好的效果。

        这篇博客主要介绍介绍实现Census变换,由于使用OpenCV的容器和接口,所以直接使用OpenCV调用比较方便。

阅读更多

Matlab使用vision.TextInserter在图像中嵌入字符

        使用Matlab处理图像的时候,如果需要将文字或者图形嵌入图像中,就需要用到vision工具集了,如果嵌入的是文字,那么就要使用vision.TextInserter,这个在新版本的Matlab中提供了insertText函数,与其功能差不多,不过vision.TextInserter要强大一些,insertText可以修改文字背景色块但是不能修改字体。

阅读更多

目标跟踪的评价指标(OTB与VOT)

        目标识别的评价指标主要有ROC曲线,missrate(MR,其实就是FALSE Positive)、FPPI、FPPW等。单图像跟踪的评价指标主要有两个,一个是pixel error,一般是算中心距离,另一个是overlap rate,区域重叠率,用重叠区域除以两个矩形所占的总面积Aoverlap /(A1+A2-Aoverlap),常常用pixel error绘制帧误差曲线,用重叠率绘制误差曲线。除此之外,还有针对多目标图像跟踪的评价指标。在VOT中,目标跟踪的评价指标又多了EOA和EOF图,这篇博客都会介绍。

阅读更多

立体视觉中的内参矩阵、基础矩阵、本质矩阵

        立体视觉中的矩阵变换比较多。总的来说,内参矩阵 K是针对单相机的,通过焦距和主点位置直接表示了相机坐标系和图像坐标系之间的关系,如果考虑镜头的畸变,还需要有畸变系数,如果图像传感器有倾斜,还需要有倾斜因子。基础矩阵和本质矩阵是针对双目的,其中基础矩阵 E根据左右相机的RT关系,表示了对极线关系,基础矩阵是左右摄像机坐标系之间的关系,求解基础矩阵的核心是求左右相机的RT。本质矩阵 F是图像坐标系下的,结合了基础矩阵和内参矩阵,直接反应左右图像坐标系下对应点像素坐标的关系。

阅读更多

OpenCV进行各种矩阵变换及变换参数求解

        OpenCV可以处理许多2D、3D的变换矩阵,包括但不局限于2D放射变换矩阵(2×3),二维点对的最优单映射变换矩阵H(3×3),四个二维点对之间的透射变换矩阵(3×3),多对三维点之间的旋转平移矩阵(3×4),计算多个点对之间的基矩阵和位姿变换矩阵等。这篇博客对这些变换函数进行了总结,可以通过该博客给出的名字搜索函数进行查询。

阅读更多

C++Intel/VS编译器编译Boost库

        在使用Intel编译器(icc)时,如果还想调用Boost库,那么icc会自动调用icc编译的boost库,于是这篇博客就介绍了如何使用icc编译Boost库,并且附带Boost库编译时的参数说明,你可以按照这份说明编译出你想要的库版本。(如果你使用默认编译器,此博客也可做参考,除了编译器选择部分不同之外,其它都一样)

阅读更多

PCL库的环境配置及调用(Windows8.1+VS2013/VS2015)

pcl26        PCL库被广泛用于三维重建,其在三维世界中的地位正如OpenCV在二维世界中的地位。因为其调用了很多第三方库,所以配置极其复杂。官方也推出了简单安装版OneInAll包,这篇博客主要介绍官方简单安装版的方法。由于简单安装版没有CUDA等模块,如果你想用上CUDA就必须得自己重新编译了(博主在使用CUDA8.0,折腾了一个下午放弃了,不过CUDA7.5及以下都有教程)。另外就是,如果想自己编译,这里有一篇很好的博客。如果想快速入门,这里也有一篇很好的博客

阅读更多

CUDA学习笔记(一)VS/C++代码调用CUDA C/C++函数

cu3

        最近入手了一块GPU,就迅速的开始了GPU编程的学习,这里强行安利几个中文博客(很不错的哦):CUDA开发环境配置教程CUDA从入门到精通CUDA官方手册,这份官方手册的pdf版就在安装文件夹NVIDA Corporation的doc里面。

        CUDA齐全丰富的开发工具使得VS可以直接新建CUDA C/C++工程,但是,如果我们要在一个已经建立好的C++工程中调用CUDA应该怎么做呢?这篇博客为您详细解答。

阅读更多

信息检索(IR)的评价指标——Precision、Recall、F1、mAP、ROC、AUC

0_1309960406ypy4        在信息检索、分类体系中,有一系列的指标,在学术研究和工程应用上经常出现。以上名词的中文名分别是:准确率、找回率、F1、平均正确率、ROC、AUC(ROC曲线下的面积)。

        在信息检索中,常用Precision、Recall、F1、mAP指标进行评价系统性能,左图就是一份可以计算mAP的曲线图。

        在分类和识别中,常用ROC和AUC来衡量体系性能,这也和我们常常认识的正例分对,错例分错相对应。这些指标常常在论文中出现,了解这些指标非常重要。下面的博客将详细介绍这些指标。

阅读更多

张正友标定法(二)张正友Matlab工具箱的使用

zzy1        有两份资料,一是加州理工大学开发的标定工具箱,其中实现了全套张正友标定,网站也同样也有详细的使用文档。另一份是OpenCV的标定工具箱,其中使用的也是张正友标定,只不过略有简化。如果你不是直接使用C++书写标定程序的话,强烈推荐加州理工大学的标定工具箱。

        张正友Matlab工具箱使用手册,这份文档详细介绍了该工具箱的使用。这篇博客是对这份文档的补充,所以,如果你本着学习工具箱使用方法而来,请点击题头的链接。学习玩使用手册,这篇博客的内容可能会对你进一步了解工具箱有一定帮助。

        再附上张正友1998年的Paper,我们开始学习吧。

阅读更多

旋转向量与旋转矩阵——罗德里格斯(Rodrigues)变换Matlab

        Matlab计算旋转矩阵有两种方法,一种是通过欧拉角,计算yaw,pitch和row轴的旋转角。这里要介绍的是另一种是直接绕一个向量旋转theta角的方法,就是Rodrigues变换,其中的向量就是旋转向量,其得到的矩阵就是旋转矩阵,这个矩阵和欧拉角的方法计算出来是一样的。

阅读更多