OpenCV光流跟踪程序学习

TermCriteria类

TermCriteria类主要用于控制迭代算法的终止条件,它取代了之前版本中的CvTermCriteria类,该类中的信息具体如下:

class CV_EXPORTS TermCriteria
{
public:
    enum Type           // 类型的枚举
    {
        COUNT=1,        // 按照最大迭代次数和元素达到最大值作为控制终止条件
        MAX_ITER=COUNT, // 按照最大迭代次数和元素达到最大值作为控制终止条件 
        EPS=2           // 按照达到某个收敛的阈值作为终止条件
    };

    // 构造函数
    TermCriteria();
    TermCriteria(int type, int maxCount, double epsilon);

    int type;         // 类型,主要包括最大迭代次数,收敛到某个阈值,最大迭代次数且收敛到某个阈值
    int maxCount;     // 迭代的最大次数
    double epsilon;   // 迭代终止的阈值
};

cornerSubPix()函数

功能:用于在角点检测中精确化角点位置。

void cv::cornerSubPix( InputArray _image, InputOutputArray _corners,
                       Size winSize, Size zeroZone,
                       TermCriteria criteria )
// 参数说明如下:
// _image:输入图像
// _corners:输入角点的初始坐标,并作为角点精准化的输出
// winSize:搜索窗口变长的一般,若为winSize = Size(5, 5),此时为11 * 11的搜索窗口
// zeroZone:搜索区域中间的dead region变长的一般,用于避免自相关矩阵的奇异性。为(-1, -1)表示没有这个区域
// criteria:为角点精准化跌打终止条件

calcOpticalFlowPyrLK()函数

功能:用于计算一个系数特征集的光流,使用金字塔中的迭代Lucas-Kanade方法。

void cv::calcOpticalFlowPyrLK( InputArray _prevImg, InputArray _prevImg,
                           InputArray _prevPts, InputOutputArray _nextPts,
                           OutputArray _status, OutputArray _err,
                           Size winSize, int maxLevel,
                           TermCriteria criteria,
                           int flags, double minEigThreshold )
// 参数说明如下:
// _prevImg:深度为8位的前一帧图像或金字塔图像
// _prevImg:深度为8为的后一帧图像或金字塔图像
// _prevPts:前一帧图像中的特征点
// _nextPts:特征点在后一帧中的位置,并通过计算更新对应的位置,用于输出
// _status:输出状态矢量,如果相应的特征的流被发现,则为此值置为1,否则置为0
// _err:输出误差矢量
// winSize:每个金字塔层搜索窗大小
// maxLevel:金字塔层的最大数目。为0表示不使用金字塔(单层)
// criteria:搜索算法迭代终止条件
// flags:用于标志调用前,前一帧,后一帧等的金字塔是否已经准备好
// minEigThreshold:算法计算的光流等式的2*2常规矩阵的最小特征值

goodFeaturesToTrack()函数

功能:在图像中寻找具有最大特征值的角点。

void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners,
                              int maxCorners, double qualityLevel, double minDistance,
                              InputArray _mask, int blockSize,
                              bool useHarrisDetector, double harrisK )
// 参数说明如下:
// _image:输入图像,8位或浮点32位,单通道
// _corners:输出的特征点,每一个元素就是一个特征点的位置
// maxCorners:规定的特征点最大数目
// qualityLevel:最大最小特征值的乘法因子。定义可接受图像角点的最小质量因子
// minDistance:限制因子。特征点与点之间的最小距离
// _mask:ROI感兴趣区域。为NULL时选择整个图像
// blockSize:计算导数的自相关矩阵时指定点的领域,采用小窗口计算的结果比单点计算的结果好
// useHarrisDetector:标志位。非0则使用Harris角点,为0使用Shi-Tomasi定义
// harrisK:用于设置Hessian自相关矩阵

参考文献:

http://blog.csdn.net/holybin/article/details/41122493

http://blog.csdn.net/u010684134/article/details/49185535

你可能感兴趣的:(opencv)