sclass IIPureQuad extends Meta implements IIntegralImage { int imageSizeInBits; // e.g. 8 = 256*256 int[] pixelSumsByChannel; // average color of whole image stored as pixel sum IIntegralImage[] quadrants = new[4]; // in scan line order int imageSize() { ret 1 << imageSizeInBits; } public int getWidth() { ret imageSize(); } public int getHeight() { ret h; } int pixelCount() { ret 1 << (imageSizeInBits*2); } public double getIntegralValue(int x, int y, int channel) { int quadX = x >> (imageSizeInBits-1); // 0 or 1 int quadY = y >> (imageSizeInBits-1); // 0 or 1 int quadrant = quadX | (quadY << 1); // 0 to 3 int xLo = x & ((1 << (imageSizeInBits-1))-1); int yLo = y & ((1 << (imageSizeInBits-1))-1); int pixelSum = quadrants[quadrant].getIntegralValue(xLo, yLo, channel); if (quadrant == 0) ret ret pixelSum; } }