00001 00002 //Refereanser til eksternt grensesnitt/kode som anvendes i denne filen 00003 #include <string> 00004 #include <vector> 00005 #include "Image.h" 00006 #include "Feature.h" 00007 #include "Image_pair.h" 00008 #include "Region.h" 00009 #include "Pixel.h" 00010 #include "Sort.h" 00011 #using <mscorlib.dll> 00012 00014 using namespace std; 00015 00017 const float NN_INFINITY = 1000000; 00018 00019 00027 class AVI 00028 { 00029 00031 vector<Image*> approvedImages; 00032 00034 vector<Image*> rejectedImages; 00035 00037 vector<Feature*> featureCandidates; 00038 00040 vector<Region*> calculatedRegions; 00041 00043 Image_pair *imagePairs; 00044 00046 float weightArea; 00047 00049 float weightCentroid; 00050 00052 float weightBoundingBox; 00053 00055 unsigned short int numberOfWindows; 00056 00058 unsigned int *windowVectorMapX; 00059 00061 unsigned int *windowVectorMapY; 00062 00064 int windowPartitioning; 00065 00067 int minIntensity; 00068 00070 int maxInhomogenity; 00071 00073 int maxBlurIterations; 00074 00076 int minArea; 00077 00079 int grow; 00080 00082 int writeSegmentationToFile; 00083 00085 Sort *sort; 00086 00088 int numberOfFeatureCandidates; 00089 00091 string trainingDataFileName; 00092 00094 string executeDataFileName; 00095 00097 string selectedFeaturesFileName; 00098 00100 string folderNameOnline; 00101 00103 string onlineResultFileName; 00104 00106 vector<string> *approvedNames; 00107 00109 vector<string> *rejectedNames; 00110 00112 vector<string> *onlineNames; 00113 00115 string appString; 00116 00118 string rejString; 00119 00121 string onlineString; 00122 00124 int nnNumNeuronsHidden; 00125 00127 int nnMaxEpochs; 00128 00130 int nnEpochsBetweenReports; 00131 00133 float nnDesiredError; 00134 00136 int dimSum; 00137 00138 00144 void readConfiguration(const char *fileName); 00145 00146 00154 float * readReq(string input); 00155 00156 00163 void initializeFeature(Feature *feature, string *lines); 00164 00165 00175 string ToCppString(System::String *str); 00176 00177 00183 void windowAssignment(int *dimension); 00184 00185 00193 int getWindow(Pixel p); 00194 00195 00201 void calculateRegionData(Image *image); 00202 00203 00209 int createImagePairs(); 00210 00211 00217 void calculateBigFeatureSet(int numberOfPairs); 00218 00219 00225 void calculateRegionFeatureVector(Region *region); 00226 00227 00236 void calculateFeatureCandidatesKeyData(int numberOfPairs); 00237 00238 00244 vector<int> * selectCandidateFeatures(); 00245 00246 00256 void calculateLeftovers(vector<int> *selectedFeatures); 00257 00258 00267 int writeTrainingDataToFile(vector<int> *selectedFeatures, const char *filename); 00268 00269 00279 void writeTrainingVector(unsigned int nnInputVectorSize, float *nnInputVector, FILE *out); 00280 00281 00290 void insertValuesIntoVector(int start, float *nnInputVector, Region *region, vector<int> *selectedFeatures); 00291 00292 00300 vector<Feature*> * readSelectedFeaturesFromFile(const char *fileName); 00301 00302 00310 Feature * getFeatureFromID(int id); 00311 00312 00321 float * calculateOnlineImageData(vector<Feature*> *selectedFeatures, vector<Region*> *regions); 00322 00323 00331 float roundOf(float x); 00332 00333 00334 public: 00335 00342 AVI(int online, const char *configurationFileName); 00343 00347 ~AVI(); 00348 00349 };