!7 static double[][] ii; p { ii = integralImage(toBW(new RGBImage(10, 10, Color.gray))); printStruct(ii); checkRect(rect(1, 1, 2, 2)); checkRect(rect(1, 2, 2, 2)); checkRect(rect(2, 2, 2, 2)); checkRect(rect(2, 3, 3, 3)); haarFeature(rect(1, 1, 2, 2), rect(3, 1, 2, 2)); } svoid checkRect(Rect r) { print("Expected: " + rectVolume(r)*0.5 + ", sum: " + iiSumRect(ii, r)); } svoid haarFeature(Rect black, Rect white) { if (rectVolume(black) != rectVolume(white)) fail("Unequal volumes: " + rectWithVolume(black) + "/" + rectWithVolume(white)); double value = iiSumRect(ii, white)-iiSumRect(ii, black); print("Haar " + black + " with " + white + " => " + value); }