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."":()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."":()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 }