资源描述:
《基于meanshift算法的图像处理.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、MeanShift,我们翻译为“均值飘移”。其在聚类,图像平滑。图像分割和跟踪方面得到了比较广泛的应用。由于本人目前研究跟踪方面的东西,故此主要介绍利用MeanShift方法进行目标跟踪,从而对MeanShift有一个比较全面的介绍。(以下某些部分转载常峰学长的“MeanShift概述”)MeanShift这个概念最早是由Fukunaga等人于1975年在一篇关于概率密度梯度函数的估计(TheEstimationoftheGradientofaDensityFunction,withApplic
2、ationsinPatternRecognition)中提出来的,其最初含义正如其名,就是偏移的均值向量,在这里MeanShift是一个名词,它指代的是一个向量,但随着MeanShift理论的发展,MeanShift的含义也发生了变化,如果我们说MeanShift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束.然而在以后的很长一段时间内MeanShift并没有引起人们的注意,直到20年以后,也就是1995年,另
3、外一篇关于MeanShift的重要文献(Meanshift,modeseeking,andclustering)才发表.在这篇重要的文献中,YizongCheng对基本的MeanShift算法在以下两个方面做了推广,首先YizongCheng定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同,其次YizongCheng还设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了MeanShift的适用范围.另外YizongCheng指出了MeanShift
4、可能应用的领域,并给出了具体的例子。Comaniciu等人在还(Mean-shiftBlobTrackingthroughScaleSpace)中把非刚体的跟踪问题近似为一个MeanShift最优化问题,使得跟踪可以实时的进行。目前,利用MeanShift进行跟踪已经相当成熟。目标跟踪不是一个新的问题,目前在计算机视觉领域内有不少人在研究。所谓跟踪,就是通过已知的图像帧中的目标位置找到目标在下一帧中的位置。下面主要以代码形式展现MeanShift在跟踪中的应用。voidCObjectTracke
5、r::ObjeckTrackerHandlerByUser(IplImage*frame)//跟踪函数{m_cActiveObject=0;if(m_sTrackingObjectTable[m_cActiveObject].Status){if(!m_sTrackingObjectTable[m_cActiveObject].assignedAnObject){FindHistogram(frame,m_sTrackingObjectTable[m_cActiveObject].initHis
6、togram);m_sTrackingObjectTable[m_cActiveObject].assignedAnObject=true;}else{FindNextLocation(frame);//利用meanshift迭代找出目标下一个位置点DrawObjectBox(frame);}}}voidCObjectTracker::FindNextLocation(IplImage*frame){inti,j,opti,optj;SINT16scale[3]={-3,3,0};FLOAT32
7、dist,optdist;SINT16h,w,optX,optY;//tryno-scalingFindNextFixScale(frame);//找出目标的下一个大致范围optdist=LastDist;optX=m_sTrackingObjectTable[m_cActiveObject].X;optY=m_sTrackingObjectTable[m_cActiveObject].Y;//tryoneofthe9possiblescalingi=rand()*2/RAND_MAX;j=ra
8、nd()*2/RAND_MAX;h=m_sTrackingObjectTable[m_cActiveObject].H;w=m_sTrackingObjectTable[m_cActiveObject].W;if(h+scale[i]>10&&w+scale[j]>10&&h+scale[i]