From 8072eb4d248debf2d049548dd5dec21cc0152c52 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Thu, 13 Mar 2014 17:32:30 +0000 Subject: matrix size adjustment --- offsetProject/src/imageStore.h | 34 ++++++++++++++++++++++++++++------ offsetProject/src/ofApp.cpp | 28 +++++++++++++++++++--------- offsetProject/src/ofApp.h | 2 ++ 3 files changed, 49 insertions(+), 15 deletions(-) diff --git a/offsetProject/src/imageStore.h b/offsetProject/src/imageStore.h index 8d1b584..a2bd39d 100644 --- a/offsetProject/src/imageStore.h +++ b/offsetProject/src/imageStore.h @@ -5,6 +5,8 @@ #define MIN_TILE_SIZE 8 #define MAX_TILE_SIZE 16 +#define FLANN_MATRIX_SIZE 3 + #include "ofMain.h" #include "ofxJSONElement.h" #include "ofxOpenCv.h" @@ -51,7 +53,7 @@ class imageStore : public ofThread{ img.setUseTexture(true); img.update(); images["000000"]=img; - colours["000000"]=ofColor(0,0,0); + //colours["000000"]=ofColor(0,0,0); } ~imageStore(){ @@ -113,6 +115,22 @@ class imageStore : public ofThread{ Matrix query(test,1,3); Matrix indices(new int[1], query.rows, 1); Matrix dists(new float[1], query.rows, 1); + index->knnSearch(query, indices, dists, 1,SearchParams(10)); + im=*imageptrs[*indices[0]]; + //int i=rand()%imageptrs.size(); + //im=images[imageptrs[i]]; + //cerr<<"returning image "<second; + if( lock() ){ + Matrix query(data,1,FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE*3); + Matrix indices(new int[1], query.rows, 1); + Matrix dists(new float[1], query.rows, 1); index->knnSearch(query, indices, dists, 1,SearchParams(4)); im=*imageptrs[*indices[0]]; //int i=rand()%imageptrs.size(); @@ -131,10 +149,14 @@ class imageStore : public ofThread{ void add_data(const ofImage& _img){ ofImage img=_img; - img.resize(1,1); - data.push_back(img.getPixels()[0]); - data.push_back(img.getPixels()[1]); - data.push_back(img.getPixels()[2]); + img.resize(FLANN_MATRIX_SIZE,FLANN_MATRIX_SIZE); + for (int i=0;i dataset(&data[0],data.size()/3,3); + Matrix dataset(&data[0],data.size()/(3*FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE),3*FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE); index= new Index >(dataset, KDTreeIndexParams(4)); index->buildIndex(); diff --git a/offsetProject/src/ofApp.cpp b/offsetProject/src/ofApp.cpp index 63b0791..51795f5 100644 --- a/offsetProject/src/ofApp.cpp +++ b/offsetProject/src/ofApp.cpp @@ -76,6 +76,8 @@ void ofApp::setup() { mode=MODE_COLOURTILES; fullscreen=false; + + tiledata=new float[FLANN_MATRIX_SIZE*FLANN_MATRIX_SIZE*3]; } //-------------------------------------------------------------- @@ -103,7 +105,7 @@ void ofApp::update() { int h=ceil(ofGetHeight()/MAX_TILE_SIZE); int w=(h*4)/3; depthImage.resize(w,h); - colourImage.resize(w,h); + colourImage.resize(w*FLANN_MATRIX_SIZE,h*FLANN_MATRIX_SIZE); // mark pixels and texture dirty depthImage.flagImageChanged(); @@ -145,22 +147,29 @@ void ofApp::draw() { switch(mode){ case MODE_COLOURTILES: //store.draw(); - xstart=(ofGetWidth()/2)-((colourImage.getHeight()/2)*MAX_TILE_SIZE); - ystart=(ofGetHeight()/2)-((colourImage.getHeight()/2)*MAX_TILE_SIZE); + xstart=(ofGetWidth()/2)-((depthImage.getHeight()/2)*MAX_TILE_SIZE); + ystart=(ofGetHeight()/2)-((depthImage.getHeight()/2)*MAX_TILE_SIZE); kinexstart=(colourImage.getWidth()/2)-(colourImage.getHeight()/2); ofPushMatrix(); ofTranslate(xstart,ystart); w=colourImage.getWidth(); for (int i=0;i