#include "VQ.h" #include "Interleaved.h" #include "Img.h" #include "Mathematics.h" #include "FileReader.h" #include "FileWriter.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"); ImgBase *tImgIn = const_cast(reader.grab()); ImgBase *tImg = tImgIn->convertTo(); 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(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); }