// .......ooooooooo // .......ooooooooo // .......ooooooooo // .......ooooooooo public static double Filter2(IntegralImage image, int x, int y, int w, int h, Func <double, double, double> cmp) { //Debug.Assert(x >= 0); //Debug.Assert(y >= 0); //Debug.Assert(w >= 1); //Debug.Assert(h >= 1); int w_2 = w / 2; double a = image.Area(x + w_2, y, x + w - 1, y + h - 1); double b = image.Area(x, y, x + w_2 - 1, y + h - 1); return(cmp(a, b)); }
// ................ // oooooooooooooooo // ................ public static double Filter4(IntegralImage image, int x, int y, int w, int h, Func <double, double, double> cmp) { //Debug.Assert(x >= 0); //Debug.Assert(y >= 0); //Debug.Assert(w >= 1); //Debug.Assert(h >= 1); int h_3 = h / 3; double a = image.Area(x, y + h_3, x + w - 1, y + 2 * h_3 - 1); double b = image.Area(x, y, x + w - 1, y + h_3 - 1) + image.Area(x, y + 2 * h_3, x + w - 1, y + h - 1); return(cmp(a, b)); }