forked from rajbot/autocrop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathautoCropCommon.h
129 lines (100 loc) · 5.41 KB
/
autoCropCommon.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#ifndef AUTOCROP_AUTOCROPCOMMON_H
#define AUTOCROP_AUTOCROPCOMMON_H
#define DEBUG_IMAGE_DIR "./debug-images/"
#define debugstr printf
//#define debugstr
//Binary PIX structs store black as 1
#define PEL_IS_BLACK 1
#define PEL_IS_WHITE 0
#define kGrayModeSingleChannel 1
#define kGrayModeThreeChannel 3
#define kSkewModeText 0
#define kSkewModeEdge 1
#define kSkewModeNone 2
l_uint32 calcLimitLeft(l_uint32 w, l_uint32 h, l_float32 angle);
l_uint32 calcLimitTop(l_uint32 w, l_uint32 h, l_float32 angle);
l_int32 FindBindingEdge2(PIX *pixg,
l_int32 rotDir,
l_uint32 topEdge,
l_uint32 bottomEdge,
float *skew,
l_uint32 *thesh,
l_int32 textBlockL,
l_int32 textBlockR);
PIX* ConvertToGray(PIX *pix, l_int32 *grayChannel);
double CalculateAvgCol(PIX *pixg,
l_uint32 i,
l_uint32 jTop,
l_uint32 jBot);
double CalculateAvgRow(PIX *pixg,
l_uint32 j,
l_uint32 iLeft,
l_uint32 iRight);
double CalculateVarRow(PIX *pixg,
l_uint32 j,
l_uint32 iLeft,
l_uint32 iRight);
double CalculateVarCol(PIX *pixg,
l_uint32 i,
l_uint32 jTop,
l_uint32 jBot);
l_uint32 CalculateSADcol(PIX *pixg,
l_uint32 left,
l_uint32 right,
l_uint32 jTop,
l_uint32 jBot,
l_int32 *reti,
l_uint32 *retDiff
);
l_uint32 CalculateSADrow(PIX *pixg,
l_uint32 left,
l_uint32 right,
l_uint32 top,
l_uint32 bottom,
l_int32 *reti,
l_uint32 *retDiff
);
l_int32 CalculateTreshInitial(PIX *pixg, l_int32 *histmax);
l_int32 RemoveBackgroundTop(PIX *pixg, l_int32 rotDir, l_int32 initialBlackThresh);
l_int32 RemoveBackgroundBottom(PIX *pixg, l_int32 rotDir, l_int32 initialBlackThresh);
l_int32 CalculateNumBlackPelsRow(PIX *pixg, l_int32 j, l_int32 limitL, l_int32 limitR, l_uint32 blackThresh);
l_int32 CalculateNumBlackPelsCol(PIX *pixg, l_int32 i, l_int32 limitT, l_int32 limitB, l_uint32 blackThresh);
l_int32 CalculateMinRow(PIX *pixg, l_int32 j, l_int32 limitL, l_int32 limitR);
l_int32 CalculateMinCol(PIX *pixg, l_int32 i, l_int32 limitT, l_int32 limitB);
l_int32 FindDarkRowUp(PIX *pixg, l_int32 limitB, l_int32 limitL, l_int32 limitR, l_uint32 blackThresh, l_int32 blackLimit);
l_int32 FindDarkRowDown(PIX *pixg, l_int32 limitT, l_int32 limitL, l_int32 limitR, l_uint32 blackThresh, l_int32 blackLimit);
l_int32 FindDarkColLeft(PIX *pixg, l_int32 limitR, l_int32 limitT, l_int32 limitB, l_uint32 blackThresh, l_int32 blackLimit);
l_int32 FindDarkColRight(PIX *pixg, l_int32 limitL, l_int32 limitT, l_int32 limitB, l_uint32 blackThresh, l_int32 blackLimit);
l_int32 FindWhiteRowUp(PIX *pixg, l_int32 limitB, l_int32 limitL, l_int32 limitR, l_uint32 blackThresh, l_int32 blackLimit);
l_int32 FindWhiteRowDown(PIX *pixg, l_int32 limitB, l_int32 limitL, l_int32 limitR, l_uint32 blackThresh, l_int32 blackLimit);
l_int32 FindWhiteColLeft(PIX *pixg, l_int32 limitR, l_int32 limitT, l_int32 limitB, l_uint32 blackThresh, l_int32 blackLimit);
l_int32 FindWhiteColRight(PIX *pixg, l_int32 limitL, l_int32 limitT, l_int32 limitB, l_uint32 blackThresh, l_int32 blackLimit);
void PrintKeyValue_int32(const char *key, l_int32 val);
void DebugKeyValue_int32(const char *key, l_int32 val);
void PrintKeyValue_float(const char *key, l_float32 val);
void PrintKeyValue_str(const char *key, char *val);
l_int32 min_int32(l_int32 a, l_int32 b);
l_int32 max_int32(l_int32 a, l_int32 b);
void ReduceRowOrCol(l_float32 percent, l_int32 oldT, l_int32 oldB, l_int32 *newT, l_int32 *newB);
l_int32 FindBindingUsingBlackBar(PIX *pixg,
l_int32 rotDir,
l_int32 topEdge,
l_int32 bottomEdge,
l_int32 textBlockL,
l_int32 textBlockR);
l_int32 RemoveBackgroundOuter(PIX *pixg, l_int32 rotDir, l_uint32 topEdge, l_uint32 bottomEdge, l_int32 initialBlackThresh);
l_uint32 RemoveBlackPelsBlockColRight(PIX *pixg, l_uint32 starti, l_uint32 endi, l_uint32 top, l_uint32 bottom, l_uint32 kernelWidth, l_uint32 blackThresh);
l_uint32 RemoveBlackPelsBlockColLeft(PIX *pixg, l_uint32 starti, l_uint32 endi, l_uint32 top, l_uint32 bottom, l_uint32 kernelWidth, l_uint32 blackThresh);
l_uint32 RemoveBlackPelsBlockRowTop(PIX *pixg, l_uint32 startj, l_uint32 endj, l_uint32 left, l_uint32 right, l_uint32 kernelWidth, l_uint32 blackThresh);
l_uint32 RemoveBlackPelsBlockRowBot(PIX *pixg, l_uint32 startj, l_uint32 endj, l_uint32 left, l_uint32 right, l_uint32 kernelWidth, l_uint32 blackThresh);
int FindInnerCrop(PIX *pixBigT,
l_uint32 threshBinding,
l_int32 outerCropL,
l_int32 outerCropR,
l_int32 outerCropT,
l_int32 outerCropB,
l_int32 *innerCropL,
l_int32 *innerCropR,
l_int32 *innerCropT,
l_int32 *innerCropB);
#endif