meta-for BWIntegralImage also as IBWIntegralImage { static byte[] scaledGrayBytesFromBWIntegralImage(int w, BWIntegralImage img) { ret scaledGrayBytesFromBWIntegralImage(img, w); } static byte[] scaledGrayBytesFromBWIntegralImage(BWIntegralImage img, int w, int h default heightForWidth(img, w)) { int w1 = img.getWidth(), h1 = img.getHeight(); double stepX = doubleRatio(w1, w), stepY = doubleRatio(h1, h); byte[] pixels = new[w*h]; int i = 0; double srcY = 0; if (stepX == 1 && stepY == 1) { // No scaling for y to h: for x to w: { int pixel = img.getPixelBrightness(x, y); pixels[i++] = clampToUByte(pixel); } } else { // With arbitrary scaling for y to h: { double srcX = 0, nextSrcY = srcY+stepY; for x to w: { double nextSrcX = srcX+stepX; int pixel = iround(img.getPixelAverage(srcX, srcY, nextSrcX, nextSrcY)); pixels[i++] = clampToUByte(pixel); srcX = nextSrcX; } srcY = nextSrcY; } } ret pixels; } }