// background must be white static Pair bwii_detectSingleLine(IBWIntegralImage ii) { int whiteValue = 255; int imgW = ii.getWidth(), imgH = ii.getHeight(); IIntIntPred predX = (x1, x2) -> ii.getPixelAverage(x1, 0, x2, imgH) != whiteValue; IIntIntPred predY = (y1, y2) -> ii.getPixelAverage(0, y1, imgW, y2) != whiteValue; // find bounding box Pair endpoints = pair( pt(indexOfRangePredicate_IIntIntPred(imgW, predX), indexOfRangePredicate_IIntIntPred(imgH, predY)), pt(lastIndexOfRangePredicate_IIntIntPred(imgW, predX), lastIndexOfRangePredicate_IIntIntPred(imgH, predY))); // find out which diagonal it is if (ii.getPixel(endpoints.a) > ii.getPixel(endpoints.b.x, endpoints.a.y)) { int temp = endpoints.b.x; endpoints.b.x = endpoints.a.x; endpoints.a.x = temp; } ret endpoints; }