00001 #ifndef __objectPairClass_H
00002 #define __objectPairClass_H
00003
00004 #ifndef __objectInfoClass_H
00005 #include <objectInfoClass.h>
00006 #endif
00007
00008 #ifndef __polyClass_H
00009 #include <polyClass.h>
00010 #endif
00011
00012 #ifndef __polyMatchClass_H
00013 #include <polyMatchClass.h>
00014 #endif
00015
00016 #define MAX_QUALIFIER_LEN 20
00017
00018
00019 struct objectPairInfo
00020 {
00021 objectType type1;
00022 objectType type2;
00023 char obj1_qualifier[MAX_QUALIFIER_LEN];
00024 char obj2_qualifier[MAX_QUALIFIER_LEN];
00025 int obj1_int_qualifier;
00026 int obj2_int_qualifier;
00027 pointLocation vertices[4];
00028 int pageInstanceCount;
00029 int docsCount;
00030 int totalInstanceCount;
00031 int availableInstanceCount;
00032 float area;
00033 float area_upper_thresh;
00034 float area_lower_thresh;
00035 int crossing;
00036 int tag;
00037 float score;
00038
00039 TURN_REP_REC t;
00040 int object1;
00041 int object2;
00042 };
00043
00044 class objectPairClass {
00045
00046 public:
00047
00048 objectPairClass(FILE *fp);
00049 objectPairClass(char *data_path,FILE *fp);
00050 objectPairClass(struct objectInfo *obj1,
00051 int object_count,int documentId,FILE *fp);
00052 objectPairClass::~objectPairClass();
00053 int getPairCount() const {return( _numPairsAfterPrune);}
00054 void printInfo(char *filename);
00055 void printScoreInfo(char *filename);
00056 void assignScore (objectPairClass *otherClass);
00057 void scoreImage(objectPairClass *objects,float *score,int storeScoreFlag);
00058 void objectPairClass::dumpHighScoringObjects(struct objectInfo *obj1,
00059 float *threshold);
00060 void deleteDocList();
00061 void printInfoSummary(char *filename);
00062 void printVertices();
00063 objectPairInfo *getPairs() const {return(_objectPairs);}
00064 void merge(objectPairClass *newData, int new_doc_number);
00065 void objectPairClass::scoreBasedPrune(float *threshold);
00066 void objectPairClass::frequencyBasedPrune(int threshold, FILE * coref_file);
00067 void objectPairClass::frequencyBasedPruneForScoring(int threshold);
00068
00069 private:
00070
00071
00072 void objectPairClass::readDataWithScores(FILE *fp);
00073 int objectPairClass::matches(objectPairInfo *pair1,
00074 objectPairInfo *pair2);
00075 void objectPairClass::prune();
00076 struct objectPairInfo *_objectPairs;
00077 FILE *_coref_file;
00078 int _numPairs;
00079 int _numPairsAfterPrune;
00080 int _availableEntries;
00081 int _frequencyPrunedLevel;
00082
00083
00084 };
00085
00086 class objectPairMatrix {
00087
00088 public:
00089
00090 objectPairMatrix (vector<std::string> inputVector,
00091 FILE *fp,char *directory_path, char *final_pair_filename);
00092
00093 private:
00094
00095
00096 };
00097
00098
00099 #endif
00100
00101
00102
00103