KCF算法(相关滤波算法) 跟踪目标

这是笔者目前碰到的性能最好的传统目标跟踪算法,所以这里也简单介绍下这个算法的由来。

一、算法介绍

KCF全称为Kernel Correlation Filter 核相关滤波算法。是在2014年由Joao F. Henriques, Rui Caseiro, Pedro Martins, and Jorge Batista提出来的,算法出来之后也算是轰动一时,这个算法不论是在跟踪效果还是跟踪速度上都有十分亮眼的表现。属于判别式跟踪,主要是使用给出的样本去训练一个判别分类器,判断跟踪到的是目标还是周围的背景信息。主要使用轮转矩阵对样本进行采集,使用快速傅里叶变化对算法进行加速计算。

对原理很感兴趣的小伙伴可以看这个博客,写得很详细。

算法的2个缺点

第一点,KCF因为在跟踪过程当中目标框是已经设定好的,从始至终大小为发生变化,但是我们的跟踪序列当中目标大小时有发生变化,这个就会导致跟踪器跟踪过程当中目标框漂移,从而导致跟踪失败。

第二点,KCF对在跟踪过程当中当目标被遮挡时候的处理问题没有进行很好的解决。

二、代码

int main(int argc, char* argv[])
{
    VideoCapture capture(2);
    if (!capture.isOpened())
        return 1;

    Mat firframe, frame;
    capture>>firframe;
    Rect roi = selectROI("tracker", firframe);

    Ptr<TrackerKCF> tracker = TrackerKCF::create();
    tracker->init(firframe,roi);
//    tracker->update(firframe,roi);

    while (1) {
        capture>>frame;

        bool isFound = tracker->update(frame, roi);
        if (isFound)
            rectangle(frame,roi, Scalar(0, 255, 0), 2, 8);
        imshow("traker", frame);
        if(waitKey(30) == 27) break;
    }


    return 0;
}

三、个人总结

蛮喜欢这个算法的,做个总结吧。跑起来发现前面提到的2个缺点,其实第一点,也就是当目标大小发生变化的时候,比如把你自己设为目标,远离摄像头后,就检测不出来了。

所以,也有大佬用YOLOv4-tiny结合进行目标跟踪,博客在这里

参考:

opencv自带kcf算法实现目标跟踪_kcf opencv_追忆似水_年华的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值