// background must be white static Pair bwii_detectSingleLine(BWIntegralImage 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) != whiteValue) { endpoint.s.x ? pair(pt(endpoints.b.x, endpoints.a.y), pt(endpoints.a.x, endpoints.b.y)) : endpoints; }