#include "iclVQ.h" #include "iclInterleaved.h" #include "iclImg.h" #include "iclMathematics.h" #include "iclFileReader.h" #include "iclFileWriter.h" using namespace icl; using namespace std; #define TRAINSTEPS 3000 #define CLUSTER 10 int main() { // Initialization randomSeed(); vector dataPtr; vqinitmode vqInitMode=initRndFromData; // Real image vector vecResultData; FileReader reader("demoImages/testImg.ppm"); const ImgBase *tImgIn = reader.grab(); ImgBase *tImg = tImgIn->convert(); ImgBase *tResultImg = imgNew(depth32f, tImg->getSize(), formatGray); vecResultData.resize(tImg->getChannels()); for (int i=0;igetChannels();i++) { vecResultData[i] = (icl32f*) tResultImg->getDataPtr(i); } // create cluster with 10 nodes VQ vq(tImg); vq.createCluster(CLUSTER); // initialize cluster vq.initClusterFromSrc(tImg, vqInitMode); //---- Pixel coloring interval ---- unsigned int uiColoring = 255 / ( CLUSTER - 1); for(unsigned int i=0;igetDim();i++) { unsigned int uiWinner = vq.nn(i,fMinDist); vecResultData[0][i] = uiWinner * uiColoring; } //write result image FileWriter("resultImg.pgm").write(tResultImg); }