// background must be white static Pair bwii_detectSingleLine(BWIntegralImage ii) { int whiteValue = 255; int imgW = ii.getWidth(), imgH = ii.getHeight(); IPred predX = (x1, x2) -> ii.getPixelAverage(x1, 0, x2, imgH) != whiteValue; IPred predY = (y1, y2) -> ii.getPixelAverage(0, y1, imgW, y2) != whiteValue; Pair endpoints = pair( pt(indexOfRangePredicate (imgW, predX), indexOfRangePredicate (imgH, predY)), pt(lastIndexOfRangePredicate(imgW, predX), lastIndexOfRangePredicate(imgH, predY))); ret ii.get(endpoints.a) == whiteValue ? pair(pt(endpoints.b.x, endpoints.a.y), pt(endpoints.a.x, endpoints.b.y) : endpoints; }