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; }
//根据传递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; } } }