meta-for BWIntegralImage also as IBWIntegralImage { static BufferedImage scaledGrayImageFromBWIntegralImage(int w, BWIntegralImage img) { ret scaledGrayImageFromBWIntegralImage(img, w); } static BufferedImage scaledGrayImageFromBWIntegralImage(BWIntegralImage img, int w, int h default heightForWidth(img, w)) { int w1 = img.w, h1 = img.h; double stepX = w1/w, stepY = h1/h; byte[] pixels = new[w*h]; int i = 0; double srcY = 0; 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 newGrayBufferedImage(w, h, pixels); } }