Uses 1113K of libraries. Click here for Pure Java version (3357L/17K).
1  | cmodule2 URecog > DynPrintLog {   | 
2  | // returns 0, 1 or 2  | 
3  |   int posterizeToInt(double x) { | 
4  | ret ifloor(clampZeroToOne(x)*3);  | 
5  | }  | 
6  | |
7  | // returns 0, .5 or 1  | 
8  |   double posterizeInPlace(double x) { | 
9  | ret posterizeToInt(x)*.5;  | 
10  | }  | 
11  | |
12  |   class Cell { | 
13  | // Original image and which part we are looking at  | 
14  | IIntegralImage image;  | 
15  | DoubleRange xClip, yClip;  | 
16  | |
17  | // color transformations in place  | 
18  | DoubleRange[] colorClips = new[3];  | 
19  | |
20  |     *() {} // internal | 
21  | |
22  | // make the root cell  | 
23  |     *(IIntegralImage *image) { | 
24  | xClip = yClip = zeroToOne();  | 
25  | for i to 3: colorClips[i] = zeroToOne();  | 
26  | }  | 
27  | |
28  |     Cell copy() { | 
29  | new Cell c;  | 
30  | c.image = image;  | 
31  | c.xClip = xClip;  | 
32  | arrayCopy(colorClips, c.colorClips);  | 
33  | ret c;  | 
34  | }  | 
35  | |
36  |     Rect rectInImage() { | 
37  | ret toRect_floor(doubleRectFromRanges(xClip, yClip));  | 
38  | }  | 
39  | |
40  | // get color of cell  | 
41  | |
42  |     double color(int channel) { | 
43  | double color = ii_averageBrightnessOfArea(image, rectInImage());  | 
44  | ret transformBetweenDoubleRanges(color, colorClips[channel], zeroToOne());  | 
45  | }  | 
46  | |
47  |     int posterizedIntColor(int channel) { | 
48  | ret posterizeToInt(color(channel));  | 
49  | }  | 
50  | |
51  | // get sub-cells  | 
52  | |
53  |     Cell[] xSplit() { | 
54  | Cell[] cells = new[3];  | 
55  | for i to 3: cells[i] = xSlice(i, i+1);  | 
56  | ret cells;  | 
57  | }  | 
58  | |
59  |     Cell xSlice(double a, double b) { | 
60  | Cell c = copy();  | 
61  | c.xClip = transformBetweenDoubleRanges(DoubleRange(a, b), zeroToOne(), xClip);  | 
62  | ret c;  | 
63  | }  | 
64  | |
65  |     Cell[] ySplit() { | 
66  | Cell[] cells = new[3];  | 
67  | for i to 3: cells[i] = ySlice(i, i+1);  | 
68  | ret cells;  | 
69  | }  | 
70  | |
71  |     Cell ySlice(double a, double b) { | 
72  | Cell c = copy();  | 
73  | c.yClip = transformBetweenDoubleRanges(DoubleRange(a, b), zeroToOne(), yClip);  | 
74  | ret c;  | 
75  | }  | 
76  | }  | 
77  | }  | 
download show line numbers debug dex old transpilations
Travelled to 3 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx
No comments. add comment
| Snippet ID: | #1031919 | 
| Snippet name: | U [dev.] | 
| Eternal ID of this version: | #1031919/9 | 
| Text MD5: | 9c2a0b17b85afdb12fb12c8ff67b4387 | 
| Transpilation MD5: | d4ae873c81bac2cd260ed173a2907dd5 | 
| Author: | stefan | 
| Category: | |
| Type: | JavaX source code (Dynamic Module) | 
| Public (visible to everyone): | Yes | 
| Archived (hidden from active list): | No | 
| Created/modified: | 2021-08-02 04:42:20 | 
| Source code size: | 1753 bytes / 77 lines | 
| Pitched / IR pitched: | No / No | 
| Views / Downloads: | 374 / 537 | 
| Version history: | 8 change(s) | 
| Referenced in: | [show references] |