向小俊同志学习,发一个基于Mean Shift的运动物体跟踪
93°2010/06/18软件综合 IP:广东
当然没有小俊同志高深 。。。 = =

Mean Shift,业内人士称为Mean Sh!t,比较慢,剧烈运动的物体跟踪效果较差 好像是废话 = =

PDF截图两张 敏感部位

viewer1.png   

viewer.png

“敏感部位”代码

[size=3]int MeanShift::CalcHisSp(unsigned char* frame, float* histogram){
    int pxValue = 0;

    for(int i = 0 ; i < HISLENGTH; i++)
        histogram[i] = 0;

        for(int j = max(0,cY - trackWinHeight / 2);j < min(cY + trackWinHeight / 2,imgH - 1); j ++){
            for(int i = max(0,cX - TrackwWidth/ 2); i < min(cX + TrackwWidth/ 2,imgW - 1);i ++){
                pixel r = frame[j * imgW * 3 + i * 3] / 16;
                pixel g = frame[j * imgW * 3 + i * 3 + 1] / 16;
                pixel b = frame[j * imgW * 3 + i * 3 + 2] / 16;

                histogram[256 * (int)r + 16 * (int)g + (int)b] += 1;
                pxValue ++;

            }

        }

        for(int i = 0; i < HISLENGTH; i ++)
            histogram[i] /= pxValue;
    else
    {
        return 0;
    }
    return pxValue;
}


void MeanShift::MSPSp(unsigned char * frame){
    float weights[HISLENGTH];

    float newX = 0.0;
    float newY = 0.0;

    for (int i=0;i<HISLENGTH;i++)
    {
        if (currHistogram[i] >0.0 )
            weights[i] = (float)tempHistogram[i]/(float)currHistogram[i];

        else
            weights[i] = 0;
    }

    float sumOfWeights = 0.0;

        for(int j = max(0,cY - trackWinHeight / 2);j < min(cY + trackWinHeight / 2,imgH - 1); j ++){
            for(int i = max(0,cX - TrackwWidth/ 2); i < min(cX + TrackwWidth/ 2,imgW - 1);i ++){
            pixel r = frame[j * imgW * 3 + i * 3] / 16;
            pixel g = frame[j * imgW * 3 + i * 3 + 1] / 16;
            pixel b = frame[j * imgW * 3 + i * 3 + 2] / 16;

            int ptr = (int)(256 * (int)r + 16 * (int)g + (int)b);

            newX += (weights[ptr] * (float)i);
            newY += (weights[ptr] * (float)j);

            sumOfWeights += weights[ptr];


        }

    }
    if(sumOfWeights != 0){
        cX = int((newX/sumOfWeights) + 0.5);
        cY = int((newY/sumOfWeights) + 0.5);
    }
    return;

}


void MeanShift::MSTP(unsigned char*  frame,int frameNumber)
{
    if(frameNumber == 0){

        CalcHisSp(frame ,this->tempHistogram);
    }
    else
    {
        int stopThreshold = 10;
        int iteratorCoumt = 0;
        while(iteratorCoumt < stopThreshold){

            CalcHisSp(frame ,this->currHistogram);
            MSPSp(frame);

            iteratorCoumt++;
        }
        
    }
}
[/size]

misuzu什么的最喜欢了

11.jpg


attachment icon YDD_CVPR_05.pdf 571.13KB PDF 66次下载 预览
+794  科创币    phpskycn    2010/06/18 &nbsp;
+800  科创币    小俊    2010/06/18 厉害厉害!佩服佩服!
来自:计算机科学 / 软件综合
15
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
93° 作者
14年7个月前 IP:未同步
225751
XXXXXXXXXXXXXXXXXXXXXXXX/t/24617

用的就是Mean Sh!t,加上目标检测算法。。。啥算法来着 忘了 = =
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
93°作者
14年7个月前 IP:未同步
225898
引用第5楼ltl于2010-06-19 10:26发表的  :
代码不大美……

敢吐点有意义的槽么= =
晒下限自重
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
93°
学者 笔友
文章
651
回复
6032
学术分
30
2007/04/10注册,6年11个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}