/** * Generates codebook by clustering all features in training set raw data * * @return */ public boolean generateCodeBook() { boolean operationSuccess = false; database.setMode(DBMode.TRAINDATA); Model[][] regModels = database.readAllDataofCurrentMode(); int totalFrames = 0; allFeaturesList.clear(); // extract single list of all features for (int i = 0; i < regModels.length; i++) { for (int j = 0; j < regModels[i].length; j++) { GestureFeature[] gf = getFeature((RawFeature) regModels[i][j]); for (int k = 0; k < gf.length; k++) { allFeaturesList.add(gf[k]); totalFrames++; } } } // // single array from list GestureFeature[] allFeaturesArr = new GestureFeature[totalFrames]; allFeaturesArr = allFeaturesList.toArray(new GestureFeature[0]); // clustering is done automatically after callng constructor Codebook cbk = new Codebook(getPointsFromFeatureVector(allFeaturesArr)); cbk.saveToFile(); operationSuccess = true; return operationSuccess; }