// forgets sub-pixels sclass TruncatedIBWIntegralImage is IBWIntegralImage { IBWIntegralImage img; int w, h; *(IBWIntegralImage *img) { w = img.getWidth(); h = img.getHeight(); } public int getWidth() { ret w; } public int getHeight() { ret h; } // normal range [0; pixelCount*256) public double getIIValue(dbl x, dbl y) { int xFloor = ifloor(x), yFloor = ifloor(y); // get value at top left corner of pixel double val = img.getIIValue(xFloor, yFloor); // at integer coordinate? done if (xFloor == x && yFloor == y) ret val; double xFrac = x-xFloor, yFrac = y-yFloor; // at non-integer coordinate, perform subpixel calculation double area = xFrac*yFrac; double pixelColor = img.getPixelBrightness(xFloor+1, yFloor+1); ret val+area*pixelColor; } }