00001
00020 #include "mfcpch.h"
00021 #include "blobcmp.h"
00022 #include "tfacep.h"
00023 #include "paircmp.h"
00024
00025 #define EXTERN
00026
00030 BOOL8 compare_blob_pairs(
00031 BLOCK *,
00032 ROW *row,
00033 WERD *,
00034 PBLOB *blob
00035 ) {
00036 static ROW *prev_row = NULL;
00037 static PBLOB *prev_blob = NULL;
00038 float rating;
00039
00040 if (prev_row == NULL || prev_blob == NULL) {
00041 prev_row = row;
00042 prev_blob = blob;
00043 }
00044 else {
00045 rating = compare_blobs (prev_blob, prev_row, blob, row);
00046 tprintf ("Rating=%g\n", rating);
00047 prev_row = NULL;
00048 prev_blob = NULL;
00049 }
00050 return TRUE;
00051 }
00052
00053
00057 float compare_blobs(
00058 PBLOB *blob1,
00059 ROW *row1,
00060 PBLOB *blob2,
00061 ROW *row2) {
00062 PBLOB *bn_blob1;
00063 PBLOB *bn_blob2;
00064 DENORM denorm1, denorm2;
00065 float rating;
00066
00067 bn_blob1 = blob1->baseline_normalise (row1, &denorm1);
00068 bn_blob2 = blob2->baseline_normalise (row2, &denorm2);
00069 rating = compare_bln_blobs (bn_blob1, &denorm1, bn_blob2, &denorm2);
00070 delete bn_blob1;
00071 delete bn_blob2;
00072 return rating;
00073 }
00074
00075
00079 float compare_bln_blobs(
00080 PBLOB *blob1,
00081 DENORM *denorm1,
00082 PBLOB *blob2,
00083 DENORM *denorm2) {
00084 TBLOB *tblob1;
00085 TBLOB *tblob2;
00086 TEXTROW tessrow1, tessrow2;
00087 float rating;
00088
00089 tblob1 = make_tess_blob (blob1, TRUE);
00090 make_tess_row(denorm1, &tessrow1);
00091 tblob2 = make_tess_blob (blob2, TRUE);
00092 make_tess_row(denorm2, &tessrow2);
00093 rating = compare_tess_blobs (tblob1, &tessrow1, tblob2, &tessrow2);
00094 free_blob(tblob1);
00095 free_blob(tblob2);
00096
00097 return rating;
00098 }