📄 charsample.h
字号:
/********************************************************************** * File: charsample.h (Formerly charsample.h) * Description: Class to contain character samples and match scores * to be used for adaption * Author: Chris Newton * Created: Thu Oct 7 13:40:37 BST 1993 * * (C) Copyright 1993, Hewlett-Packard Ltd. ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. * **********************************************************************/#ifndef CHARSAMPLE_H#define CHARSAMPLE_H#include "elst.h"#include "pageres.h"#include "memry.h"#include "notdll.h"#include "notdll.h"#define BAD_SCORE MAX_INT32#define FIRST_CHAR '!'#define LAST_CHAR '~'enum ClusterType{ UNKNOWN, BLOB_CLUSTER, IMAGE_CLUSTER };class CHAR_SAMPLE; //forward declELISTIZEH (CHAR_SAMPLE)class CHAR_SAMPLES; //forward declELISTIZEH (CHAR_SAMPLES)class CHAR_PROTO; //forward declclass CHAR_SAMPLE:public ELIST_LINK{ public: CHAR_SAMPLE(); // empty constructor CHAR_SAMPLE( // simple constructor PBLOB *blob, DENORM *denorm, char c); CHAR_SAMPLE( // simple constructor IMAGE *image, char c); ~CHAR_SAMPLE () { // We own the image, so it has to be deleted. if (sample_image != NULL) delete sample_image; } float match_sample(CHAR_SAMPLE *test_sample, BOOL8 updating); INT32 n_matches() { return n_samples_matched; } IMAGE *image() { return sample_image; } PBLOB *blob() { return sample_blob; } DENORM *denorm() { return sample_denorm; } double mean_score(); double variance(); char character() { return ch; } void print(FILE *f); void reset_match_statistics(); NEWDELETE2 (CHAR_SAMPLE) private: IMAGE * sample_image; PBLOB *sample_blob; DENORM *sample_denorm; INT32 n_samples_matched; double total_match_scores; double sumsq_match_scores; char ch;};class CHAR_SAMPLES:public ELIST_LINK{ public: CHAR_SAMPLES(); //empty constructor CHAR_SAMPLES(CHAR_SAMPLE *sample); ~CHAR_SAMPLES () { //destructor } INT32 n_samples() { return samples.length (); } void add_sample(CHAR_SAMPLE *sample); void build_prototype(); void rebuild_prototype(INT32 new_xsize, INT32 new_ysize); void add_sample_to_prototype(CHAR_SAMPLE *sample); CHAR_PROTO *prototype() { return proto; } void find_best_sample(); float match_score(CHAR_SAMPLE *sample); float nn_match_score(CHAR_SAMPLE *sample); char character() { return ch; } void assign_to_char(); void print(FILE *f); NEWDELETE2 (CHAR_SAMPLES) private: ClusterType type; char ch; CHAR_PROTO *proto; CHAR_SAMPLE *best_sample; CHAR_SAMPLE_LIST samples;};class CHAR_PROTO{ public: CHAR_PROTO(); // empty constructor CHAR_PROTO(INT32 x_size, INT32 y_size, INT32 n_samples, float initial_value, char c); CHAR_PROTO( // simple constructor CHAR_SAMPLE *sample); ~CHAR_PROTO (); float match_sample(CHAR_SAMPLE *test_sample); float match(CHAR_PROTO *test_proto); INT32 n_samples() { return nsamples; } INT32 x_size() { return xsize; } INT32 y_size() { return ysize; } float **data() { return proto; } char character() { return ch; } void enlarge_prototype(INT32 new_xsize, INT32 new_ysize); void add_sample(CHAR_SAMPLE *sample); IMAGE *make_image(); void print(FILE *f); NEWDELETE2 (CHAR_PROTO) private: INT32 xsize; INT32 ysize; float *proto_data; float **proto; INT32 nsamples; char ch;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -