void CMultiSeg::ComputeSeparateness(int m,int n) { double separateness = 0; vector<pair<int,int>> vecpairSeperatenessSmallEdge; for(int i = 0;i < vecvecMultiResult[m].size();i++) { int patchIndex = vecvecMultiResult[m][i]; // connect before vector<int> vecConnectPatchBefore; for(int j = 0;j < vecvecPatchConnectFlag[patchIndex].size();j++) { if(vecvecPatchConnectFlag[patchIndex][j]) { vecConnectPatchBefore.push_back(j); } } // disconnnect after vector<pair<int,int>> vecpairDisconnect; pair<int,int> pairsDisconnect; for(int j = 0;j < vecConnectPatchBefore.size();j++) { pairsDisconnect.first = patchIndex; pairsDisconnect.second = vecConnectPatchBefore[j]; for(int k = 0;k < vecvecMultiResult[n].size();k++) { if(vecvecMultiResult[n][k] == vecConnectPatchBefore[j]) vecpairDisconnect.push_back(pairsDisconnect); } } for(int j = 0;j < vecpairDisconnect.size();j++) { for(int k = 0;k < vecpairPatchConnection.size();k++) { if(vecpairPatchConnection[k].first == vecpairDisconnect[j].first && vecpairPatchConnection[k].second == vecpairDisconnect[j].second) { separateness += vecSmoothValue[k]; vecpairSeperatenessSmallEdge.push_back(vecpairDisconnect[j]); } } } } if(separateness > 0) { EdgeHypo edgeHypo; edgeHypo.begin = m; edgeHypo.end = n; edgeHypo.areaIndex = GetAreaIndex(vecvecMultiResult[m][0]); edgeHypo.pairPatch = vecpairSeperatenessSmallEdge; edgeHypo.separateness = 0; vecEdgeHypo.push_back(edgeHypo); } }
void CMultiSeg::ComputeObjectness(int m) { ObjectHypo objectHypo; objectHypo.patchIndex = vecvecMultiResult[m]; objectHypo.objectness = 0; objectHypo.areaIndex = GetAreaIndex(vecvecMultiResult[m][0]); objectHypo.mergeFlag = false; vecObjectHypo.push_back(objectHypo); }
void AGScreen::DestroyArea (AGArea *pArea) // DestroyArea // // Destroys an area { // Clean up if (pArea == m_pMouseOver) m_pMouseOver = NULL; if (pArea == m_pMouseCapture) { ::ReleaseCapture(); m_pMouseCapture = NULL; } // Destroy and invalidate RECT rcRect = pArea->GetRect(); m_Areas.RemoveObject(GetAreaIndex(pArea)); Invalidate(rcRect); }