static int bwContrastQuadtree_minOfArea(BWImage min, Rect rect) { ret bwContrastQuadtree_minOfArea(min, rect, 0, 0, img.getWidth()); } static int bwContrastQuadtree_minOfArea(BWImage min, Rect rect, Rect block) { Rect r2 = intersectRects(rect, block); if (r2.empty()) ret 255; int r = block.w/2; // process 4 subsquares ret intMin( bwContrastQuadtree_minOfArea(min, r2, Rect(block.x, block.y, r, r)), bwContrastQuadtree_minOfArea(min, r2, Rect(block.x+r, block.y, r, r)), bwContrastQuadtree_minOfArea(min, r2, Rect(block.x, block.y+r, r, r)), bwContrastQuadtree_minOfArea(min, r2, Rect(block.x+r, block.y+r, r, r))); }