CameraITS: fix ev compendation advance test

Fix a bug in expected luma compensation

Bug: 21619252
Change-Id: I6bb3c68053153d397f0a0282f696a37d6f5f9ed3
diff --git a/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py b/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py
index 9b43a74..5fd8f73 100644
--- a/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py
+++ b/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py
@@ -41,10 +41,12 @@
         range_max = ev_compensation_range[1]
         ev_per_step = its.objects.rational_to_float(
                 props['android.control.aeCompensationStep'])
-        steps_per_ev = int(1.0 / ev_per_step)
-        evs = range(range_min, range_max + 1, steps_per_ev)
+        steps_per_ev = int(round(1.0 / ev_per_step))
+        ev_steps = range(range_min, range_max + 1, steps_per_ev)
+        imid = len(ev_steps) / 2
+        ev_shifts = [pow(2, step * ev_per_step) for step in ev_steps]
         lumas = []
-        for ev in evs:
+        for ev in ev_steps:
             # Re-converge 3A, and lock AE once converged. skip AF trigger as
             # dark/bright scene could make AF convergence fail and this test
             # doesn't care the image sharpness.
@@ -65,19 +67,16 @@
             tile = its.image.get_image_patch(y, 0.45,0.45,0.1,0.1)
             lumas.append(its.image.compute_image_means(tile)[0])
 
-        luma_increase_per_step = pow(2, ev_per_step)
         print "ev_step_size_in_stops", ev_per_step
-        imid = len(lumas) / 2
-        expected_lumas = [lumas[imid] / pow(luma_increase_per_step, i)
-                          for i in range(imid , 0, -1)]  + \
-                         [lumas[imid] * pow(luma_increase_per_step, i-imid)
-                          for i in range(imid, len(evs))]
+        shift_mid = ev_shifts[imid]
+        luma_normal = lumas[imid] / shift_mid
+        expected_lumas = [luma_normal * ev_shift for ev_shift in ev_shifts]
 
-        pylab.plot(evs, lumas, 'r')
-        pylab.plot(evs, expected_lumas, 'b')
+        pylab.plot(ev_steps, lumas, 'r')
+        pylab.plot(ev_steps, expected_lumas, 'b')
         matplotlib.pyplot.savefig("%s_plot_means.png" % (NAME))
 
-        luma_diffs = [expected_lumas[i] - lumas[i] for i in range(len(evs))]
+        luma_diffs = [expected_lumas[i] - lumas[i] for i in range(len(ev_steps))]
         max_diff = max(abs(i) for i in luma_diffs)
         avg_diff = abs(numpy.array(luma_diffs)).mean()
         print "Max delta between modeled and measured lumas:", max_diff