ricardocabral/iskdaemon — Issue #39: cluster images by similarity
Author: ricardocabral
Created: 2012-01-22 18:07:07+00:00
State: open
Labels: P:Wishlist

there are already some datastructures on .h.

sample code for imgdb.cpp:

// cluster by similarity. Returns list of list of long ints (img ids)
/*
long_list_2 clusterSim(const int dbId, float thresd, int fast = 0) {
long_list_2 res;	// will hold a list of lists. ie. a list of clusters
sigMap wSigs(dbSpace[dbId]->sigs);	// temporary map of sigs, as soon as an image becomes part of a cluster, it's removed from this map
sigMap wSigsTrack(dbSpace[dbId]->sigs);	// temporary map of sigs, as soon as an image becomes part of a cluster, it's removed from this map

for (sigIterator sit = wSigs.begin(); sit != wSigs.end(); sit++) {	// for every img on db
long_list res2;

if (fast) {
res2 =
queryImgDataForThresFast(&wSigs, (*sit).second->avgl,
thresd, 1);
} else {
res2 =
queryImgDataForThres(dbId, &wSigs, (*sit).second->sig1,
(*sit).second->sig2,
(*sit).second->sig3,
(*sit).second->avgl, thresd, 1);
}
// continue;
long int hid = (*sit).second->id;
// if ()
wSigs.erase(hid);
if (res2.size() <= 1) {
if (wSigs.size() <= 1)
break;	// everything already added to a cluster sim. Bail out immediately, otherwise next iteration
// will segfault when incrementing sit
continue;
}
res2.push_front(hid);
res.push_back(res2);
if (wSigs.size() <= 1)
break;
// sigIterator sit2 = wSigs.end();
// sigIterator sit3 = sit++;
}
return res;
}
*/