Example #1
0
TMS_Data::Queue_ptr
OneCloudInstance::getQueueInfo(void)
{
  updatePool();
  TMS_Data::Queue_ptr queue = new TMS_Data::Queue();
  //FIXE: use pool info to update queue
  return queue;
}
Example #2
0
//根据传递trackerlet判定当前跟踪目标是否为指定目标,同时对自身信息进行更新
//在跟踪目标与指定目标不一致的情形下(return false),对tracker进行修正
//默认链表第一个节点为跟踪目标
//返回值表示,头结点是否为跟踪节点。是 true,否 false
bool Manager::dicision()
{
	//完成两个操作,判定头结点是否为指定目标;更新目标池

	//判断当前trackerletList头结点是否为跟踪节点
	if(trackerletList == NULL)
		return true;//在链表无内容情形下,自然无法进行修正过程,自然返回true,都不知道有没有错,怎么改?有道理哈
	
	if(front == rear)//当前目标池为空,直接加入链表头结点
	{
		trackerletList->occupied++;
		targetPool[front++] = trackerletList;//将头结点内容入池
		return true;
	}
	else//目标池非空的情形下,需要对头结点进行判定,
	{
		discriminator.clearDistance();
		//首先将头结点blockfeature内容暂时存放于discriminator
		discriminator.setCurrentFeature(trackerletList->featureSet);

		//将头结点内容与目标池中存储内容进行比较
		int traversal = rear;
		while(traversal != front)
		{   
			blockFeature distratorFeature = targetPool[traversal]->featureSet;
			discriminator.computeDistanceHold(distratorFeature);
			traversal = (traversal + 1) % capacity;
		}
		double dissimilarity = discriminator.distinguish();//得到当前target与目标池中所有元素的差异值
		if(dissimilarity > 1.0)//表示头结点不是跟踪目标,需要对list剩余内容进行遍历,寻找是否存在跟踪目标
		{
			correctTarget = haveTarget();//得到修正trackerlet
			if(correctTarget != NULL)
			{
				updatePool(correctTarget);
			}
			return false;
		}
		else
		{
			//认定当前头结点内容为指定跟踪目标,在必要的情形下对目标池进行更新
			updatePool(trackerletList);
			return true;
		}
	}
}