亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? cluster.cpp

?? 一OCR的相關(guān)資料。.希望對(duì)研究OCR的朋友有所幫助.
?? CPP
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
PROTOTYPE *NewSphericalProto(UINT16 N,                             CLUSTER *Cluster,                             STATISTICS *Statistics);PROTOTYPE *NewEllipticalProto(INT16 N,                              CLUSTER *Cluster,                              STATISTICS *Statistics);PROTOTYPE *NewMixedProto(INT16 N, CLUSTER *Cluster, STATISTICS *Statistics);PROTOTYPE *NewSimpleProto(INT16 N, CLUSTER *Cluster);BOOL8 Independent (PARAM_DESC ParamDesc[],INT16 N, FLOAT32 * CoVariance, FLOAT32 Independence);BUCKETS *GetBuckets(DISTRIBUTION Distribution,                    UINT32 SampleCount,                    FLOAT64 Confidence);BUCKETS *MakeBuckets(DISTRIBUTION Distribution,                     UINT32 SampleCount,                     FLOAT64 Confidence);UINT16 OptimumNumberOfBuckets(UINT32 SampleCount);FLOAT64 ComputeChiSquared(UINT16 DegreesOfFreedom, FLOAT64 Alpha);FLOAT64 NormalDensity(INT32 x);FLOAT64 UniformDensity(INT32 x);FLOAT64 Integral(FLOAT64 f1, FLOAT64 f2, FLOAT64 Dx);void FillBuckets(BUCKETS *Buckets,                 CLUSTER *Cluster,                 UINT16 Dim,                 PARAM_DESC *ParamDesc,                 FLOAT32 Mean,                 FLOAT32 StdDev);UINT16 NormalBucket(PARAM_DESC *ParamDesc,                    FLOAT32 x,                    FLOAT32 Mean,                    FLOAT32 StdDev);UINT16 UniformBucket(PARAM_DESC *ParamDesc,                     FLOAT32 x,                     FLOAT32 Mean,                     FLOAT32 StdDev);BOOL8 DistributionOK(BUCKETS *Buckets);void FreeStatistics(STATISTICS *Statistics);void FreeBuckets(BUCKETS *Buckets);void FreeCluster(CLUSTER *Cluster);UINT16 DegreesOfFreedom(DISTRIBUTION Distribution, UINT16 HistogramBuckets);int NumBucketsMatch(void *arg1,   //BUCKETS                                       *Histogram,                    void *arg2);  //UINT16                        *DesiredNumberOfBuckets);int ListEntryMatch(void *arg1, void *arg2);void AdjustBuckets(BUCKETS *Buckets, UINT32 NewSampleCount);void InitBuckets(BUCKETS *Buckets);int AlphaMatch(void *arg1,   //CHISTRUCT                             *ChiStruct,               void *arg2);  //CHISTRUCT                             *SearchKey);CHISTRUCT *NewChiStruct(UINT16 DegreesOfFreedom, FLOAT64 Alpha);FLOAT64 Solve(SOLVEFUNC Function,              void *FunctionParams,              FLOAT64 InitialGuess,              FLOAT64 Accuracy);FLOAT64 ChiArea(CHISTRUCT *ChiParams, FLOAT64 x);BOOL8 MultipleCharSamples(CLUSTERER *Clusterer,                          CLUSTER *Cluster,                          FLOAT32 MaxIllegal);double InvertMatrix(const float* input, int size, float* inv);//--------------------------Public Code--------------------------------------/** MakeClusterer **********************************************************Parameters:	SampleSize	number of dimensions in feature space      ParamDesc	description of each dimensionGlobals:	NoneOperation:	This routine creates a new clusterer data structure,      initializes it, and returns a pointer to it.Return:		pointer to the new clusterer data structureExceptions:	NoneHistory:	5/29/89, DSJ, Created.****************************************************************************/CLUSTERER *MakeClusterer (INT16 SampleSize, PARAM_DESC ParamDesc[]) {  CLUSTERER *Clusterer;  int i;  // allocate main clusterer data structure and init simple fields  Clusterer = (CLUSTERER *) Emalloc (sizeof (CLUSTERER));  Clusterer->SampleSize = SampleSize;  Clusterer->NumberOfSamples = 0;  Clusterer->NumChar = 0;  // init fields which will not be used initially  Clusterer->Root = NULL;  Clusterer->ProtoList = NIL;  // maintain a copy of param descriptors in the clusterer data structure  Clusterer->ParamDesc =    (PARAM_DESC *) Emalloc (SampleSize * sizeof (PARAM_DESC));  for (i = 0; i < SampleSize; i++) {    Clusterer->ParamDesc[i].Circular = ParamDesc[i].Circular;    Clusterer->ParamDesc[i].NonEssential = ParamDesc[i].NonEssential;    Clusterer->ParamDesc[i].Min = ParamDesc[i].Min;    Clusterer->ParamDesc[i].Max = ParamDesc[i].Max;    Clusterer->ParamDesc[i].Range = ParamDesc[i].Max - ParamDesc[i].Min;    Clusterer->ParamDesc[i].HalfRange = Clusterer->ParamDesc[i].Range / 2;    Clusterer->ParamDesc[i].MidRange =      (ParamDesc[i].Max + ParamDesc[i].Min) / 2;  }  // allocate a kd tree to hold the samples  Clusterer->KDTree = MakeKDTree (SampleSize, ParamDesc);  // execute hook for monitoring clustering operation  // (*ClustererCreationHook)( Clusterer );  return (Clusterer);}                                // MakeClusterer/** MakeSample ***********************************************************Parameters:	Clusterer	clusterer data structure to add sample to      Feature		feature to be added to clusterer      CharID		unique ident. of char that sample came fromGlobals:	NoneOperation:	This routine creates a new sample data structure to hold      the specified feature.  This sample is added to the clusterer      data structure (so that it knows which samples are to be      clustered later), and a pointer to the sample is returned to      the caller.Return:		Pointer to the new sample data structureExceptions:	ALREADYCLUSTERED	MakeSample can't be called after      ClusterSamples has been calledHistory:	5/29/89, DSJ, Created.*****************************************************************************/SAMPLE *MakeSample (CLUSTERER * Clusterer, FLOAT32 Feature[], INT32 CharID) {  SAMPLE *Sample;  int i;  // see if the samples have already been clustered - if so trap an error  if (Clusterer->Root != NULL)    DoError (ALREADYCLUSTERED,      "Can't add samples after they have been clustered");  // allocate the new sample and initialize it  Sample = (SAMPLE *) Emalloc (sizeof (SAMPLE) +    (Clusterer->SampleSize -    1) * sizeof (FLOAT32));  Sample->Clustered = FALSE;  Sample->Prototype = FALSE;  Sample->SampleCount = 1;  Sample->Left = NULL;  Sample->Right = NULL;  Sample->CharID = CharID;  for (i = 0; i < Clusterer->SampleSize; i++)    Sample->Mean[i] = Feature[i];  // add the sample to the KD tree - keep track of the total # of samples  Clusterer->NumberOfSamples++;  KDStore (Clusterer->KDTree, Sample->Mean, (char *) Sample);  if (CharID >= Clusterer->NumChar)    Clusterer->NumChar = CharID + 1;  // execute hook for monitoring clustering operation  // (*SampleCreationHook)( Sample );  return (Sample);}                                // MakeSample/** ClusterSamples ***********************************************************Parameters:	Clusterer	data struct containing samples to be clustered      Config		parameters which control clustering processGlobals:	NoneOperation:	This routine first checks to see if the samples in this      clusterer have already been clustered before; if so, it does      not bother to recreate the cluster tree.  It simply recomputes      the prototypes based on the new Config info.        If the samples have not been clustered before, the      samples in the KD tree are formed into a cluster tree and then      the prototypes are computed from the cluster tree.        In either case this routine returns a pointer to a      list of prototypes that best represent the samples given      the constraints specified in Config.Return:		Pointer to a list of prototypesExceptions:	NoneHistory:	5/29/89, DSJ, Created.*******************************************************************************/LIST ClusterSamples(CLUSTERER *Clusterer, CLUSTERCONFIG *Config) {  //only create cluster tree if samples have never been clustered before  if (Clusterer->Root == NULL)    CreateClusterTree(Clusterer);  //deallocate the old prototype list if one exists  FreeProtoList (&Clusterer->ProtoList);  Clusterer->ProtoList = NIL;  //compute prototypes starting at the root node in the tree  ComputePrototypes(Clusterer, Config);  return (Clusterer->ProtoList);}                                // ClusterSamples/** FreeClusterer *************************************************************Parameters:	Clusterer	pointer to data structure to be freedGlobals:	NoneOperation:	This routine frees all of the memory allocated to the      specified data structure.  It will not, however, free      the memory used by the prototype list.  The pointers to      the clusters for each prototype in the list will be set      to NULL to indicate that the cluster data structures no      longer exist.  Any sample lists that have been obtained      via calls to GetSamples are no longer valid.Return:		NoneExceptions:	NoneHistory:	6/6/89, DSJ, Created.*******************************************************************************/void FreeClusterer(CLUSTERER *Clusterer) {  if (Clusterer != NULL) {    memfree (Clusterer->ParamDesc);    if (Clusterer->KDTree != NULL)      FreeKDTree (Clusterer->KDTree);    if (Clusterer->Root != NULL)      FreeCluster (Clusterer->Root);    iterate (Clusterer->ProtoList) {      ((PROTOTYPE *) (first (Clusterer->ProtoList)))->Cluster = NULL;    }    memfree(Clusterer);  }}                                // FreeClusterer/** FreeProtoList ************************************************************Parameters:	ProtoList	pointer to list of prototypes to be freedGlobals:	NoneOperation:	This routine frees all of the memory allocated to the      specified list of prototypes.  The clusters which are      pointed to by the prototypes are not freed.Return:		NoneExceptions:	NoneHistory:	6/6/89, DSJ, Created.*****************************************************************************/void FreeProtoList(LIST *ProtoList) {  destroy_nodes(*ProtoList, FreePrototype);}                                // FreeProtoList/** FreePrototype ************************************************************Parameters:	Prototype	prototype data structure to be deallocatedGlobals:	NoneOperation:	This routine deallocates the memory consumed by the specified      prototype and modifies the corresponding cluster so that it      is no longer marked as a prototype.  The cluster is NOT      deallocated by this routine.Return:		NoneExceptions:	NoneHistory:	5/30/89, DSJ, Created.*******************************************************************************/void FreePrototype(void *arg) {  //PROTOTYPE     *Prototype)  PROTOTYPE *Prototype = (PROTOTYPE *) arg;  // unmark the corresponding cluster (if there is one  if (Prototype->Cluster != NULL)    Prototype->Cluster->Prototype = FALSE;  // deallocate the prototype statistics and then the prototype itself  if (Prototype->Distrib != NULL)    memfree (Prototype->Distrib);  if (Prototype->Mean != NULL)    memfree (Prototype->Mean);  if (Prototype->Style != spherical) {    if (Prototype->Variance.Elliptical != NULL)      memfree (Prototype->Variance.Elliptical);    if (Prototype->Magnitude.Elliptical != NULL)      memfree (Prototype->Magnitude.Elliptical);    if (Prototype->Weight.Elliptical != NULL)      memfree (Prototype->Weight.Elliptical);  }  memfree(Prototype);}                                // FreePrototype/** NextSample ************************************************************Parameters:	SearchState	ptr to list containing clusters to be searchedGlobals:	NoneOperation:	This routine is used to find all of the samples which      belong to a cluster.  It starts by removing the top      cluster on the cluster list (SearchState).  If this cluster is      a leaf it is returned.  Otherwise, the right subcluster      is pushed on the list and we continue the search in the

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆精品一区二区| 欧美电影免费观看高清完整版 | 狠狠久久亚洲欧美| 亚洲一区二区三区四区中文字幕| 18成人在线观看| 欧美极品另类videosde| 国产女主播视频一区二区| xnxx国产精品| 国产人久久人人人人爽| 欧美国产1区2区| 中文字幕日韩欧美一区二区三区| 国产精品久久影院| 国产精品久久看| 中文字幕亚洲成人| 中文字幕一区二区三区精华液| 亚洲视频免费看| 亚洲综合区在线| 亚洲成人你懂的| 日本美女视频一区二区| 老司机精品视频一区二区三区| 九九精品视频在线看| 国产伦精品一区二区三区在线观看| 国产麻豆一精品一av一免费| 国产九色sp调教91| 盗摄精品av一区二区三区| 一本久道中文字幕精品亚洲嫩| 欧美性受xxxx黑人xyx性爽| 欧美日韩中文字幕一区| 欧美乱妇23p| 精品国免费一区二区三区| 久久久精品日韩欧美| 国产区在线观看成人精品 | 日韩高清欧美激情| 日日夜夜精品视频天天综合网| 欧美亚洲日本一区| 制服丝袜中文字幕亚洲| 久久婷婷成人综合色| 国产精品久久久一本精品 | 久久国产尿小便嘘嘘尿| 丁香六月久久综合狠狠色| 欧洲av在线精品| 精品国产一区a| 亚洲天天做日日做天天谢日日欢 | 亚洲综合视频网| 性久久久久久久久久久久| 国模娜娜一区二区三区| 99久久精品免费精品国产| 欧美色图第一页| 精品国产乱码久久久久久影片| 亚洲三级在线免费| 日韩精品一二三区| 国产电影一区二区三区| 欧美三级韩国三级日本一级| 国产亚洲欧美日韩日本| 亚洲国产一区在线观看| 国产专区综合网| 欧美视频在线不卡| 国产精品亲子乱子伦xxxx裸| 另类调教123区 | 一区二区三区四区精品在线视频| 久久精品国产精品亚洲精品| 91老师片黄在线观看| 日韩一级欧美一级| 亚洲日本免费电影| 国内精品免费**视频| 色吧成人激情小说| 精品国产髙清在线看国产毛片| 亚洲一二三区视频在线观看| 国产91精品欧美| 欧美久久高跟鞋激| 一区在线观看免费| 麻豆国产一区二区| 色噜噜狠狠成人中文综合| 欧美精品一区二区三区四区 | 午夜欧美电影在线观看| caoporen国产精品视频| 亚洲精品在线一区二区| 日韩av一级片| 在线观看精品一区| 国产精品久久一卡二卡| 国产呦萝稀缺另类资源| 日韩欧美精品三级| 亚洲综合色区另类av| 白白色 亚洲乱淫| 久久久久久**毛片大全| 六月丁香婷婷久久| 欧美久久一二区| 一级女性全黄久久生活片免费| 99在线视频精品| 久久精品免视看| 久久99精品国产.久久久久| 欧美精品一二三| 亚洲图片欧美综合| 91网页版在线| 精品一区中文字幕| 日韩免费福利电影在线观看| 石原莉奈在线亚洲二区| 欧美午夜一区二区| 亚洲欧洲制服丝袜| av在线不卡电影| 亚洲国产精华液网站w | 欧美一区二区三区免费| 天天色综合成人网| 精品视频1区2区3区| 亚洲电影一区二区三区| 在线日韩国产精品| 亚洲四区在线观看| 成人国产电影网| 国产精品久久久久天堂| 成人精品国产免费网站| 国产欧美一区二区在线| 成人福利视频网站| 国产精品嫩草影院com| www.综合网.com| 亚洲男同性视频| 欧美在线观看你懂的| 亚洲一区二区在线播放相泽| 51久久夜色精品国产麻豆| 日韩激情视频网站| 日韩丝袜情趣美女图片| 韩国在线一区二区| 国产亚洲人成网站| 成人国产亚洲欧美成人综合网| 亚洲日本在线视频观看| 欧美色中文字幕| 麻豆精品一二三| 国产亚洲成aⅴ人片在线观看 | 久久久91精品国产一区二区三区| 国产成人精品一区二区三区网站观看 | 欧美一卡二卡在线观看| 男人的天堂亚洲一区| 2017欧美狠狠色| 成人一区二区三区视频| 亚洲精品高清在线| 欧美日韩成人高清| 六月丁香婷婷久久| 日本视频一区二区| 国产日产欧美一区二区三区| 99视频热这里只有精品免费| 亚洲国产三级在线| 欧美一区二区三区电影| 国产剧情一区二区三区| 亚洲另类色综合网站| 91精品国产综合久久久久久久| 国产九色精品成人porny| 亚洲欧美另类综合偷拍| 日韩欧美综合一区| 成人伦理片在线| 天堂资源在线中文精品| 久久久亚洲精品石原莉奈 | 精品国产免费一区二区三区香蕉 | 欧美精品一区二区三区一线天视频| voyeur盗摄精品| 日韩影院在线观看| 国产精品久久久久毛片软件| 欧美精品自拍偷拍| 国产一区二区美女诱惑| 亚洲精品一二三| 2020国产精品自拍| 欧美性大战久久久久久久蜜臀| 国产一区二区在线观看免费| 亚洲午夜精品在线| 久久中文字幕电影| 欧美日韩二区三区| 国产91精品久久久久久久网曝门| 免费成人在线观看视频| 成人免费视频在线观看| 精品国产乱码久久久久久蜜臀| 欧美亚洲国产一区二区三区va| 国产超碰在线一区| 日韩高清在线不卡| 亚洲欧美乱综合| 国产欧美日韩精品a在线观看| 日韩一级视频免费观看在线| 欧美亚洲禁片免费| 大白屁股一区二区视频| 蜜桃视频在线观看一区| 亚洲一区二区影院| 日韩一区在线看| 久久久噜噜噜久噜久久综合| 91精品国产综合久久小美女| 欧美专区日韩专区| 不卡免费追剧大全电视剧网站| 精品一区二区成人精品| 午夜视频久久久久久| 一区二区三区自拍| 国产精品国产馆在线真实露脸| 久久精品一区四区| 日韩欧美一卡二卡| 欧美裸体bbwbbwbbw| 欧洲国内综合视频| 色综合久久综合网欧美综合网| 成人美女视频在线观看| 国产一区二区主播在线| 久久精品国产999大香线蕉| 日本不卡视频一二三区| 丝瓜av网站精品一区二区| 亚洲一区二区美女| 亚洲精品久久久蜜桃| 午夜精品福利视频网站|