예제 #1
0
int main (int argc, const char* argv[]) {
	char inputFileName[64], outputFileName[64];
	int nClusters;
	RgbImage srcImage;
	Clusters clusters;

	if (argc < 4) {
		printf("Error: Oops! Too few parameters!\n");
		printf("Usage: %s <INPUT_RGB_FILE> <N_CLUSTERS> <OUTPUT_RGB_FILE>\n", argv[0]);

		return -1;
	}

	strcpy(inputFileName, argv[1]);
	nClusters = atoi(argv[2]);
	strcpy(outputFileName, argv[3]);

	RgbImage srcImage;
	initRgbImage(&srcImage);
	if (loadRgbImage(inputFileName, &srcImage, 256) == 0) {
		printf("Error! Oops: Cannot load the input image: %s!\n", inputFileName);

		return -1;
	}

	initClusters(&clusters, nClusters, 1);
	segmentImage(&srcImage, &clusters, 1);

	saveRgbImage(&srcImage, outputFileName, 255);

	freeRgbImage(&srcImage);
	freeClusters(&clusters);

	return 0;
}
예제 #2
0
 Clusterizer(Vunit& unit, const Scale& scale)
     : m_unit(unit)
     , m_scale(scale)
     , m_blocks(sortBlocks(unit)) {
   initClusters();
   clusterize();
   sortClusters();
   splitHotColdClusters();
   FTRACE(1, "{}", toString());
 }
OfflineKMeans::OfflineKMeans(const Samples<float>& data, const int k): samples(data),
	featureNum(data.getFeatureNum()), sampleNum(data.getSampleNum()), clusterNum(k) {
	initClusters();
#ifdef OKM_DBG
	print();
	while(reCluster() == true) {
		print();
	}
#else
	while(reCluster() == true);
#endif
}