static extractPureBits(image) {
			const leftTopBlack = image.getTopLeftOnBit();
			const rightBottomBlack = image.getBottomRightOnBit();
			if (leftTopBlack == null || rightBottomBlack == null) {
				throw new NotFoundException();
			}
			const moduleSize = this.moduleSize(leftTopBlack, image);
			let top = leftTopBlack[1];
			const bottom = rightBottomBlack[1];
			let left = leftTopBlack[0];
			const right = rightBottomBlack[0];
			const matrixWidth = (right - left + 1) / moduleSize;
			const matrixHeight = (bottom - top + 1) / moduleSize;
			if (matrixWidth <= 0 || matrixHeight <= 0) {
				throw new NotFoundException();
			}
			// Push in the "border" by half the module width so that we start
			// sampling in the middle of the module. Just in case the image is a
			// little off, this will help recover.
			const nudge = moduleSize / 2;
			top += nudge;
			left += nudge;
			// Now just read off the bits
			const bits = new BitMatrix(matrixWidth, matrixHeight);
			for (let y = 0; y < matrixHeight; y++) {
				const iOffset = top + y * moduleSize;
				for (let x = 0; x < matrixWidth; x++) {
					if (image.get(left + x * moduleSize, iOffset)) {
						bits.set(x, y);
					}
				}
			}
			return bits;
		}
This method detects a code in a "pure" image -- that is, pure monochrome image
which contains only an unrotated, unskewed, image of a code, with some white border
around it. This is a specialized method that works exceptionally fast in this special
case.

@see com.google.zxing.qrcode.QRCodeReader#extractPureBits(BitMatrix)