CameraITS: update ev compensation tests
1. basic test: always test [-2 ev, -1 ev, 0 ev, 1 ev, 2 ev]
2. advanced test: always test [-Max EV, ..., Max EV]
3. Allow images to be saturated for positive ev level
Change-Id: I138194c09f397ea1f1e96a1ef8ef8cf71ce0ed2c
diff --git a/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py b/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py
index 2c311f8..9b43a74 100644
--- a/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py
+++ b/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py
@@ -36,7 +36,13 @@
its.caps.per_frame_control(props) and
its.caps.ev_compensation(props))
- evs = range(-4,5)
+ ev_compensation_range = props['android.control.aeCompensationRange']
+ range_min = ev_compensation_range[0]
+ 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)
lumas = []
for ev in evs:
# Re-converge 3A, and lock AE once converged. skip AF trigger as
@@ -59,10 +65,8 @@
tile = its.image.get_image_patch(y, 0.45,0.45,0.1,0.1)
lumas.append(its.image.compute_image_means(tile)[0])
- ev_step_size_in_stops = its.objects.rational_to_float(
- props['android.control.aeCompensationStep'])
- luma_increase_per_step = pow(2, ev_step_size_in_stops)
- print "ev_step_size_in_stops", ev_step_size_in_stops
+ 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)] + \
diff --git a/apps/CameraITS/tests/scene1/test_ev_compensation_basic.py b/apps/CameraITS/tests/scene1/test_ev_compensation_basic.py
index 30f1df2..d09f2fd 100644
--- a/apps/CameraITS/tests/scene1/test_ev_compensation_basic.py
+++ b/apps/CameraITS/tests/scene1/test_ev_compensation_basic.py
@@ -31,7 +31,10 @@
props = cam.get_camera_properties()
its.caps.skip_unless(its.caps.ev_compensation(props))
- evs = range(-4,5)
+ ev_per_step = its.objects.rational_to_float(
+ props['android.control.aeCompensationStep'])
+ steps_per_ev = int(1.0 / ev_per_step)
+ evs = range(-2 * steps_per_ev, 2 * steps_per_ev + 1, steps_per_ev)
lumas = []
for ev in evs:
# Re-converge 3A, and lock AE once converged. skip AF trigger as
@@ -51,6 +54,11 @@
pylab.plot(evs, lumas, 'r')
matplotlib.pyplot.savefig("%s_plot_means.png" % (NAME))
+ # trim trailing 1.0s (for saturated image)
+ while lumas and lumas[-1] == 1.0:
+ lumas.pop(-1)
+ # Only allow positive EVs to give saturated image
+ assert(len(lumas) > 2)
luma_diffs = numpy.diff(lumas)
min_luma_diffs = min(luma_diffs)
print "Min of the luma value difference between adjacent ev comp: ", \