Files
MAG160C/analysis/reverse-cache-20260811/thermal_processor.txt
T
2026-08-12 15:25:34 +08:00

1097 lines
60 KiB
Plaintext

Compiled from "ThermalImageProcesser.java"
public class com.elotouch.thermallib.ThermalImageProcesser {
private static final java.lang.String TAG;
public static final int IMAGE_HEIGHT;
public static final int IMAGE_WIDTH;
public static final float MIN_TEMP;
public static final float MAX_TEMP;
public static final int MAX_GRAY;
public static final int MIN_GRAY;
public static final float MIN_TEMP_THRESHOLD;
public static final float MAX_TEMP_THRESHOLD;
private final int COLOR_LEFT;
private final int COLOR_L1;
private final int COLOR_MIDDLE;
private final int COLOR_R1;
private final int COLOR_RIGHT;
public int[] rawtempData;
public android.graphics.Bitmap orgBitmap;
public int[] orgBitmapPixels;
public android.graphics.Bitmap colorRenderBitmap;
public float[] procPixels;
public float[] horizenCount;
public float[] horizenDiff;
public int totalCount;
public int startY;
public int endY;
public int startX;
public int endX;
public android.graphics.Bitmap faceBitmap;
public android.graphics.Rect faceRect;
private static final int SUM_1;
private float[] CORE_1;
private float[] CORE_2;
private float CORE_VERT_FILL_SUM;
private float[] CORE_VERT_FILL;
private float[] CORE_1D_AVG;
private float[] CORE_1D_DIFF;
private int getGrayThreshold();
Code:
0: bipush 30
2: ireturn
com.elotouch.thermallib.ThermalImageProcesser(int[]);
Code:
0: aload_0
1: invokespecial #2 // Method java/lang/Object."<init>":()V
4: aload_0
5: ldc #3 // int -16711936
7: putfield #4 // Field COLOR_LEFT:I
10: aload_0
11: ldc #5 // int -8388864
13: putfield #6 // Field COLOR_L1:I
16: aload_0
17: sipush -256
20: putfield #7 // Field COLOR_MIDDLE:I
23: aload_0
24: ldc #8 // int -33024
26: putfield #9 // Field COLOR_R1:I
29: aload_0
30: ldc #10 // int -65536
32: putfield #11 // Field COLOR_RIGHT:I
35: aload_0
36: iconst_m1
37: putfield #12 // Field startY:I
40: aload_0
41: iconst_m1
42: putfield #13 // Field endY:I
45: aload_0
46: iconst_m1
47: putfield #14 // Field startX:I
50: aload_0
51: iconst_m1
52: putfield #15 // Field endX:I
55: aload_0
56: aconst_null
57: putfield #16 // Field faceRect:Landroid/graphics/Rect;
60: aload_0
61: bipush 9
63: newarray float
65: dup
66: iconst_0
67: ldc #17 // float 0.05f
69: fastore
70: dup
71: iconst_1
72: ldc #18 // float 0.2f
74: fastore
75: dup
76: iconst_2
77: ldc #17 // float 0.05f
79: fastore
80: dup
81: iconst_3
82: ldc #18 // float 0.2f
84: fastore
85: dup
86: iconst_4
87: ldc #19 // float 0.45f
89: fastore
90: dup
91: iconst_5
92: ldc #18 // float 0.2f
94: fastore
95: dup
96: bipush 6
98: ldc #17 // float 0.05f
100: fastore
101: dup
102: bipush 7
104: ldc #18 // float 0.2f
106: fastore
107: dup
108: bipush 8
110: ldc #17 // float 0.05f
112: fastore
113: putfield #20 // Field CORE_1:[F
116: aload_0
117: bipush 9
119: newarray float
121: dup
122: iconst_0
123: fconst_0
124: fastore
125: dup
126: iconst_1
127: ldc #21 // float -1.0f
129: fastore
130: dup
131: iconst_2
132: fconst_0
133: fastore
134: dup
135: iconst_3
136: ldc #21 // float -1.0f
138: fastore
139: dup
140: iconst_4
141: ldc #22 // float 4.0f
143: fastore
144: dup
145: iconst_5
146: ldc #21 // float -1.0f
148: fastore
149: dup
150: bipush 6
152: fconst_0
153: fastore
154: dup
155: bipush 7
157: ldc #21 // float -1.0f
159: fastore
160: dup
161: bipush 8
163: fconst_0
164: fastore
165: putfield #23 // Field CORE_2:[F
168: aload_0
169: ldc #24 // float 20.0f
171: putfield #25 // Field CORE_VERT_FILL_SUM:F
174: aload_0
175: bipush 9
177: newarray float
179: dup
180: iconst_0
181: fconst_1
182: aload_0
183: getfield #25 // Field CORE_VERT_FILL_SUM:F
186: fdiv
187: fastore
188: dup
189: iconst_1
190: ldc #26 // float 9.0f
192: aload_0
193: getfield #25 // Field CORE_VERT_FILL_SUM:F
196: fdiv
197: fastore
198: dup
199: iconst_2
200: fconst_1
201: aload_0
202: getfield #25 // Field CORE_VERT_FILL_SUM:F
205: fdiv
206: fastore
207: dup
208: iconst_3
209: fconst_1
210: aload_0
211: getfield #25 // Field CORE_VERT_FILL_SUM:F
214: fdiv
215: fastore
216: dup
217: iconst_4
218: fconst_0
219: aload_0
220: getfield #25 // Field CORE_VERT_FILL_SUM:F
223: fdiv
224: fastore
225: dup
226: iconst_5
227: fconst_1
228: aload_0
229: getfield #25 // Field CORE_VERT_FILL_SUM:F
232: fdiv
233: fastore
234: dup
235: bipush 6
237: fconst_1
238: aload_0
239: getfield #25 // Field CORE_VERT_FILL_SUM:F
242: fdiv
243: fastore
244: dup
245: bipush 7
247: ldc #26 // float 9.0f
249: aload_0
250: getfield #25 // Field CORE_VERT_FILL_SUM:F
253: fdiv
254: fastore
255: dup
256: bipush 8
258: fconst_1
259: aload_0
260: getfield #25 // Field CORE_VERT_FILL_SUM:F
263: fdiv
264: fastore
265: putfield #27 // Field CORE_VERT_FILL:[F
268: aload_0
269: iconst_3
270: newarray float
272: dup
273: iconst_0
274: ldc #28 // float 0.33333334f
276: fastore
277: dup
278: iconst_1
279: ldc #28 // float 0.33333334f
281: fastore
282: dup
283: iconst_2
284: ldc #28 // float 0.33333334f
286: fastore
287: putfield #29 // Field CORE_1D_AVG:[F
290: aload_0
291: iconst_2
292: newarray float
294: dup
295: iconst_0
296: ldc #21 // float -1.0f
298: fastore
299: dup
300: iconst_1
301: fconst_1
302: fastore
303: putfield #30 // Field CORE_1D_DIFF:[F
306: aload_0
307: aload_1
308: putfield #31 // Field rawtempData:[I
311: aload_0
312: invokespecial #32 // Method _proprocessArray:()V
315: aload_0
316: invokespecial #33 // Method processBitmap:()V
319: return
com.elotouch.thermallib.ThermalImageProcesser(android.graphics.Bitmap);
Code:
0: aload_0
1: invokespecial #2 // Method java/lang/Object."<init>":()V
4: aload_0
5: ldc #3 // int -16711936
7: putfield #4 // Field COLOR_LEFT:I
10: aload_0
11: ldc #5 // int -8388864
13: putfield #6 // Field COLOR_L1:I
16: aload_0
17: sipush -256
20: putfield #7 // Field COLOR_MIDDLE:I
23: aload_0
24: ldc #8 // int -33024
26: putfield #9 // Field COLOR_R1:I
29: aload_0
30: ldc #10 // int -65536
32: putfield #11 // Field COLOR_RIGHT:I
35: aload_0
36: iconst_m1
37: putfield #12 // Field startY:I
40: aload_0
41: iconst_m1
42: putfield #13 // Field endY:I
45: aload_0
46: iconst_m1
47: putfield #14 // Field startX:I
50: aload_0
51: iconst_m1
52: putfield #15 // Field endX:I
55: aload_0
56: aconst_null
57: putfield #16 // Field faceRect:Landroid/graphics/Rect;
60: aload_0
61: bipush 9
63: newarray float
65: dup
66: iconst_0
67: ldc #17 // float 0.05f
69: fastore
70: dup
71: iconst_1
72: ldc #18 // float 0.2f
74: fastore
75: dup
76: iconst_2
77: ldc #17 // float 0.05f
79: fastore
80: dup
81: iconst_3
82: ldc #18 // float 0.2f
84: fastore
85: dup
86: iconst_4
87: ldc #19 // float 0.45f
89: fastore
90: dup
91: iconst_5
92: ldc #18 // float 0.2f
94: fastore
95: dup
96: bipush 6
98: ldc #17 // float 0.05f
100: fastore
101: dup
102: bipush 7
104: ldc #18 // float 0.2f
106: fastore
107: dup
108: bipush 8
110: ldc #17 // float 0.05f
112: fastore
113: putfield #20 // Field CORE_1:[F
116: aload_0
117: bipush 9
119: newarray float
121: dup
122: iconst_0
123: fconst_0
124: fastore
125: dup
126: iconst_1
127: ldc #21 // float -1.0f
129: fastore
130: dup
131: iconst_2
132: fconst_0
133: fastore
134: dup
135: iconst_3
136: ldc #21 // float -1.0f
138: fastore
139: dup
140: iconst_4
141: ldc #22 // float 4.0f
143: fastore
144: dup
145: iconst_5
146: ldc #21 // float -1.0f
148: fastore
149: dup
150: bipush 6
152: fconst_0
153: fastore
154: dup
155: bipush 7
157: ldc #21 // float -1.0f
159: fastore
160: dup
161: bipush 8
163: fconst_0
164: fastore
165: putfield #23 // Field CORE_2:[F
168: aload_0
169: ldc #24 // float 20.0f
171: putfield #25 // Field CORE_VERT_FILL_SUM:F
174: aload_0
175: bipush 9
177: newarray float
179: dup
180: iconst_0
181: fconst_1
182: aload_0
183: getfield #25 // Field CORE_VERT_FILL_SUM:F
186: fdiv
187: fastore
188: dup
189: iconst_1
190: ldc #26 // float 9.0f
192: aload_0
193: getfield #25 // Field CORE_VERT_FILL_SUM:F
196: fdiv
197: fastore
198: dup
199: iconst_2
200: fconst_1
201: aload_0
202: getfield #25 // Field CORE_VERT_FILL_SUM:F
205: fdiv
206: fastore
207: dup
208: iconst_3
209: fconst_1
210: aload_0
211: getfield #25 // Field CORE_VERT_FILL_SUM:F
214: fdiv
215: fastore
216: dup
217: iconst_4
218: fconst_0
219: aload_0
220: getfield #25 // Field CORE_VERT_FILL_SUM:F
223: fdiv
224: fastore
225: dup
226: iconst_5
227: fconst_1
228: aload_0
229: getfield #25 // Field CORE_VERT_FILL_SUM:F
232: fdiv
233: fastore
234: dup
235: bipush 6
237: fconst_1
238: aload_0
239: getfield #25 // Field CORE_VERT_FILL_SUM:F
242: fdiv
243: fastore
244: dup
245: bipush 7
247: ldc #26 // float 9.0f
249: aload_0
250: getfield #25 // Field CORE_VERT_FILL_SUM:F
253: fdiv
254: fastore
255: dup
256: bipush 8
258: fconst_1
259: aload_0
260: getfield #25 // Field CORE_VERT_FILL_SUM:F
263: fdiv
264: fastore
265: putfield #27 // Field CORE_VERT_FILL:[F
268: aload_0
269: iconst_3
270: newarray float
272: dup
273: iconst_0
274: ldc #28 // float 0.33333334f
276: fastore
277: dup
278: iconst_1
279: ldc #28 // float 0.33333334f
281: fastore
282: dup
283: iconst_2
284: ldc #28 // float 0.33333334f
286: fastore
287: putfield #29 // Field CORE_1D_AVG:[F
290: aload_0
291: iconst_2
292: newarray float
294: dup
295: iconst_0
296: ldc #21 // float -1.0f
298: fastore
299: dup
300: iconst_1
301: fconst_1
302: fastore
303: putfield #30 // Field CORE_1D_DIFF:[F
306: aload_0
307: aload_1
308: putfield #34 // Field orgBitmap:Landroid/graphics/Bitmap;
311: aload_0
312: invokespecial #35 // Method _preprocessBitmap:()V
315: aload_0
316: invokespecial #33 // Method processBitmap:()V
319: return
private int getColor(int, int, double);
Code:
0: iconst_0
1: istore 5
3: iconst_0
4: istore 6
6: iload 6
8: iconst_4
9: if_icmpge 77
12: iload_1
13: iload 6
15: bipush 8
17: imul
18: ishr
19: sipush 255
22: iand
23: istore 7
25: iload_2
26: iload 6
28: bipush 8
30: imul
31: ishr
32: sipush 255
35: iand
36: istore 8
38: iload 7
40: i2d
41: dconst_1
42: dload_3
43: dsub
44: dmul
45: iload 8
47: i2d
48: dload_3
49: dmul
50: dadd
51: d2i
52: istore 9
54: iload 5
56: iload 9
58: sipush 255
61: iand
62: iload 6
64: bipush 8
66: imul
67: ishl
68: ior
69: istore 5
71: iinc 6, 1
74: goto 6
77: iload 5
79: ireturn
private void _proprocessArray();
Code:
0: aload_0
1: sipush 19200
4: newarray int
6: putfield #36 // Field orgBitmapPixels:[I
9: aload_0
10: sipush 19200
13: newarray float
15: putfield #37 // Field procPixels:[F
18: iconst_0
19: istore_1
20: iload_1
21: bipush 120
23: if_icmpge 132
26: iconst_0
27: istore_2
28: iload_2
29: sipush 160
32: if_icmpge 126
35: aload_0
36: getfield #31 // Field rawtempData:[I
39: sipush 160
42: bipush 119
44: iload_1
45: isub
46: imul
47: iload_2
48: iadd
49: iaload
50: i2f
51: ldc #38 // float 1000.0f
53: fdiv
54: fstore_3
55: fload_3
56: ldc #39 // float 25.0f
58: fcmpg
59: ifgt 78
62: aload_0
63: getfield #37 // Field procPixels:[F
66: sipush 160
69: iload_1
70: imul
71: iload_2
72: iadd
73: fconst_0
74: fastore
75: goto 120
78: fload_3
79: ldc #40 // float 40.0f
81: fcmpl
82: iflt 101
85: aload_0
86: getfield #37 // Field procPixels:[F
89: sipush 160
92: iload_1
93: imul
94: iload_2
95: iadd
96: fconst_1
97: fastore
98: goto 120
101: aload_0
102: getfield #37 // Field procPixels:[F
105: sipush 160
108: iload_1
109: imul
110: iload_2
111: iadd
112: fload_3
113: ldc #39 // float 25.0f
115: fsub
116: ldc #41 // float 15.0f
118: fdiv
119: fastore
120: iinc 2, 1
123: goto 28
126: iinc 1, 1
129: goto 20
132: return
private void _preprocessBitmap();
Code:
0: aload_0
1: sipush 19200
4: newarray int
6: putfield #36 // Field orgBitmapPixels:[I
9: aload_0
10: getfield #34 // Field orgBitmap:Landroid/graphics/Bitmap;
13: aload_0
14: getfield #36 // Field orgBitmapPixels:[I
17: iconst_0
18: sipush 160
21: iconst_0
22: iconst_0
23: sipush 160
26: bipush 120
28: invokevirtual #42 // Method android/graphics/Bitmap.getPixels:([IIIIIII)V
31: aload_0
32: sipush 19200
35: newarray float
37: putfield #37 // Field procPixels:[F
40: iconst_0
41: istore_1
42: iload_1
43: bipush 120
45: if_icmpge 142
48: iconst_0
49: istore_2
50: iload_2
51: sipush 160
54: if_icmpge 136
57: aload_0
58: getfield #36 // Field orgBitmapPixels:[I
61: sipush 160
64: iload_1
65: iconst_0
66: iadd
67: imul
68: iload_2
69: iconst_0
70: iadd
71: iadd
72: iaload
73: istore_3
74: iload_3
75: ldc #43 // int -16777216
77: iand
78: bipush 24
80: ishr
81: sipush 255
84: iand
85: istore 4
87: iload_3
88: ldc #44 // int 16711680
90: iand
91: bipush 16
93: ishr
94: istore 5
96: iload_3
97: ldc #45 // int 65280
99: iand
100: bipush 8
102: ishr
103: istore 6
105: iload_3
106: sipush 255
109: iand
110: istore 7
112: aload_0
113: getfield #37 // Field procPixels:[F
116: sipush 160
119: iload_1
120: imul
121: iload_2
122: iadd
123: iload 5
125: i2f
126: ldc #46 // float 255.0f
128: fdiv
129: fastore
130: iinc 2, 1
133: goto 50
136: iinc 1, 1
139: goto 42
142: return
private void processBitmap();
Code:
0: aload_0
1: sipush 160
4: bipush 120
6: getstatic #47 // Field android/graphics/Bitmap$Config.ARGB_8888:Landroid/graphics/Bitmap$Config;
9: invokestatic #48 // Method android/graphics/Bitmap.createBitmap:(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
12: putfield #49 // Field colorRenderBitmap:Landroid/graphics/Bitmap;
15: ldc #50 // float 0.11764706f
17: fstore_1
18: ldc #51 // float 0.7058824f
20: fstore_2
21: ldc #52 // float 0.50980395f
23: fstore_3
24: ldc #53 // float 0.3137255f
26: fstore 4
28: ldc #54 // float 0.9019608f
30: fstore 5
32: sipush 19200
35: newarray int
37: astore 6
39: iconst_0
40: istore 7
42: iload 7
44: bipush 120
46: if_icmpge 289
49: iconst_0
50: istore 8
52: iload 8
54: sipush 160
57: if_icmpge 283
60: aload_0
61: getfield #37 // Field procPixels:[F
64: sipush 160
67: iload 7
69: imul
70: iload 8
72: iadd
73: faload
74: fstore 9
76: fload 9
78: fload_1
79: fcmpg
80: ifge 100
83: aload 6
85: sipush 160
88: iload 7
90: imul
91: iload 8
93: iadd
94: ldc #56 // int -16776961
96: iastore
97: goto 277
100: fload 9
102: fload_2
103: fcmpg
104: ifge 139
107: aload 6
109: sipush 160
112: iload 7
114: imul
115: iload 8
117: iadd
118: aload_0
119: ldc #3 // int -16711936
121: ldc #5 // int -8388864
123: fload 9
125: fload_1
126: fsub
127: fload_2
128: fload_1
129: fsub
130: fdiv
131: f2d
132: invokespecial #57 // Method getColor:(IID)I
135: iastore
136: goto 277
139: fload 9
141: fload_3
142: fcmpg
143: ifge 179
146: aload 6
148: sipush 160
151: iload 7
153: imul
154: iload 8
156: iadd
157: aload_0
158: ldc #5 // int -8388864
160: sipush -256
163: fload 9
165: fload_2
166: fsub
167: fload_3
168: fload_2
169: fsub
170: fdiv
171: f2d
172: invokespecial #57 // Method getColor:(IID)I
175: iastore
176: goto 277
179: fload 9
181: fload 4
183: fcmpg
184: ifge 221
187: aload 6
189: sipush 160
192: iload 7
194: imul
195: iload 8
197: iadd
198: aload_0
199: sipush -256
202: ldc #8 // int -33024
204: fload 9
206: fload_3
207: fsub
208: fload 4
210: fload_3
211: fsub
212: fdiv
213: f2d
214: invokespecial #57 // Method getColor:(IID)I
217: iastore
218: goto 277
221: fload 9
223: fload 5
225: fcmpg
226: ifge 264
229: aload 6
231: sipush 160
234: iload 7
236: imul
237: iload 8
239: iadd
240: aload_0
241: ldc #8 // int -33024
243: ldc #10 // int -65536
245: fload 9
247: fload 4
249: fsub
250: fload 5
252: fload 4
254: fsub
255: fdiv
256: f2d
257: invokespecial #57 // Method getColor:(IID)I
260: iastore
261: goto 277
264: aload 6
266: sipush 160
269: iload 7
271: imul
272: iload 8
274: iadd
275: iconst_m1
276: iastore
277: iinc 8, 1
280: goto 52
283: iinc 7, 1
286: goto 42
289: aload_0
290: getfield #49 // Field colorRenderBitmap:Landroid/graphics/Bitmap;
293: aload 6
295: iconst_0
296: sipush 160
299: iconst_0
300: iconst_0
301: sipush 160
304: bipush 120
306: invokevirtual #58 // Method android/graphics/Bitmap.setPixels:([IIIIIII)V
309: return
private float[] matrix_1D(float[], float[]);
Code:
0: aload_1
1: arraylength
2: istore_3
3: aload_2
4: arraylength
5: istore 4
7: iload_3
8: newarray float
10: astore 5
12: iload 4
14: iconst_2
15: idiv
16: ineg
17: istore 6
19: iconst_0
20: istore 7
22: iload 7
24: iload_3
25: if_icmpge 98
28: fconst_0
29: fstore 8
31: iconst_0
32: istore 9
34: iload 9
36: iload 4
38: if_icmpge 85
41: fconst_0
42: fstore 10
44: iload 7
46: iload 9
48: iadd
49: iload 6
51: iadd
52: istore 11
54: iload 11
56: iflt 79
59: iload 11
61: iload_3
62: if_icmpge 79
65: fload 8
67: aload_1
68: iload 11
70: faload
71: aload_2
72: iload 9
74: faload
75: fmul
76: fadd
77: fstore 8
79: iinc 9, 1
82: goto 34
85: aload 5
87: iload 7
89: fload 8
91: fastore
92: iinc 7, 1
95: goto 22
98: aload 5
100: areturn
private void matrix_2D(float[], int, int, float[], int);
Code:
0: aload_1
1: arraylength
2: newarray float
4: astore 6
6: iload 5
8: iconst_2
9: idiv
10: ineg
11: istore 7
13: iconst_0
14: istore 8
16: iload 8
18: iload_3
19: if_icmpge 179
22: iconst_0
23: istore 9
25: iload 9
27: iload_2
28: if_icmpge 173
31: fconst_0
32: fstore 10
34: iconst_0
35: istore 11
37: iload 11
39: iload 5
41: if_icmpge 134
44: iconst_0
45: istore 12
47: iload 12
49: iload 5
51: if_icmpge 128
54: iload 9
56: iload 12
58: iadd
59: iload 7
61: iadd
62: istore 13
64: iload 8
66: iload 11
68: iadd
69: iload 7
71: iadd
72: istore 14
74: iload 13
76: iflt 122
79: iload 13
81: iload_2
82: if_icmpge 122
85: iload 14
87: iflt 122
90: iload 14
92: iload_3
93: if_icmpge 122
96: fload 10
98: aload_1
99: iload_2
100: iload 14
102: imul
103: iload 13
105: iadd
106: faload
107: aload 4
109: iload 5
111: iload 11
113: imul
114: iload 12
116: iadd
117: faload
118: fmul
119: fadd
120: fstore 10
122: iinc 12, 1
125: goto 47
128: iinc 11, 1
131: goto 37
134: fload 10
136: invokestatic #59 // Method java/lang/Math.abs:(F)F
139: fstore 11
141: aload 6
143: iload_2
144: iload 8
146: imul
147: iload 9
149: iadd
150: fload 11
152: f2d
153: ldc2_w #60 // double 0.5d
156: dcmpl
157: iflt 164
160: fconst_1
161: goto 166
164: fload 11
166: fastore
167: iinc 9, 1
170: goto 25
173: iinc 8, 1
176: goto 16
179: iconst_0
180: istore 8
182: iload 8
184: aload_1
185: arraylength
186: if_icmpge 204
189: aload_1
190: iload 8
192: aload 6
194: iload 8
196: faload
197: fastore
198: iinc 8, 1
201: goto 182
204: return
static {};
Code:
0: ldc #1 // class com/elotouch/thermallib/ThermalImageProcesser
2: invokevirtual #62 // Method java/lang/Class.getSimpleName:()Ljava/lang/String;
5: putstatic #63 // Field TAG:Ljava/lang/String;
8: return
}