reference/ocr-simple/Component.h
author viric@llimona
Thu, 18 May 2006 23:12:51 +0200
changeset 0 6b8091ca909a
permissions -rw-r--r--
Init from working directory of svn repository.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     1
#ifndef _COMPONENT_H
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     2
#define _COMPONENT_H
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     3
#include "system.h" 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     4
#include "list.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     5
#include "RLEMap.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     6
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     7
class BitMap;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     8
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     9
class Components: public List
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    10
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    11
 public:
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    12
  Components();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    13
  ~Components();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    14
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    15
     
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    16
};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    17
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    18
class Component{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    19
      public:
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    20
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
       	Component(Point ul, Point lr)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
	  :ful(ul), flr(lr), fnumBits(0),fasciiId(0), fconfid(0),
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    23
	  charGroup(0), ffontId(0)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    24
	    { fproperty = new Property[numProperties];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    25
	      for (int i = 0; i < numProperties; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    26
	         fproperty[i] = 0;};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    27
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    28
	Component()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
	  :ful(-1), flr(-1), fnumBits(0),fasciiId(0),fconfid(0),
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    30
	  charGroup(0), ffontId(0)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    31
	    { fproperty = new Property[numProperties];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    32
	      for (int i = 0; i < numProperties; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    33
	         fproperty[i] = 0;};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    34
	~Component(){
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    35
	    if (fproperty != NULL) delete fproperty;}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    36
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    38
	 inline Point & ul() {return ful;};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    39
	 inline Point & lr() {return flr;};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    40
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    41
	 inline double width() {return (double)(flr.x() - ful.x() + 1); };
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    42
	 inline double height() {return (double)(flr.y() - ful.y() + 1); };
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    43
         inline int & numBits(){return fnumBits;};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    44
	 short int charGroup; // values 0-3: 0=acemno, 1=gpqy, 2=dfhikl, 3=j([}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    45
         int vertShrink(BitMap * bitmap);									     
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    46
	int AddToComponent(ListElement* intrvl, RLEMap* rlemap);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    47
	/*--------------------------------------------------------------
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    48
	Primary Purpose: Extend boundaries of component by connected intervals.
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    49
        Arguments: startIntrvl is interval to start from
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    50
        Return Value: Number of intervals added. 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    51
	Effects: Updates component's LR and UL. Deletes all added intervals. 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    52
	----------------------------------------------------------------*/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    53
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    54
	 // Access entire property vector
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    55
	 inline Property * properties()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    56
	   {return fproperty;}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    57
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    58
	 // Set or read one value in property vector
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    59
	 inline Property & property(int p) // Possibly use overload []
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    60
	   {return fproperty[p];};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    61
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    62
	 // Set or read ascii id;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    63
	 inline Character & asciiId(){ return fasciiId;};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    64
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    65
	// Set or read font id;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    66
	inline short int & fontId() {return ffontId;};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    67
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    68
	 inline Confidence & confid(){ return fconfid; };
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    69
	// Determine heuristic distance between this and comp
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    70
	 Distance distance(Component * comp);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    71
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    72
	// Use the BitMap map to set the property vector for 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    73
        // this component
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    74
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    75
	void setProperties(RLEMap * map);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    76
	void setProperties(BitMap * map);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    77
	void setSectionFlags(short int hflag[], short int vflag[]);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    78
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    79
	void display_bounding_box();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    80
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    81
	Distance recognize(Component * learnedchars);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    82
	// find best match in learned characters.  Set ascii value
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    83
        // and return distance.
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    84
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    85
	Distance recognize(Components * learnedgroups, bool allGroups=FALSE);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    86
	// find best match from learned character groups. Set ascii value
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    87
        // and return distance.
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    88
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    89
        Property * fproperty;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    90
      private:
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    91
       	Point ful;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    92
      	Point flr;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    93
       	int fnumBits;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    94
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    95
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    96
       	Character fasciiId;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    97
	short int ffontId;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    98
       	Confidence fconfid;     
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    99
};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   100
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   101
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   102
#endif
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   103
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   104
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   105
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   106
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   107
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   108
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   109
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   110
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   111
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   112
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   113
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   114
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   115
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   116
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   117
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   118
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   119
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   120
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   121
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   122