extractParameters(bullsEyeCorners) {
			if (!this.isValidPoint(bullsEyeCorners[0]) || !this.isValidPoint(bullsEyeCorners[1]) ||
				!this.isValidPoint(bullsEyeCorners[2]) || !this.isValidPoint(bullsEyeCorners[3])) {
				throw new NotFoundException();
			}
			let length = 2 * this.nbCenterLayers;
			// Get the bits around the bull's eye
			let sides = new Int32Array([
				this.sampleLine(bullsEyeCorners[0], bullsEyeCorners[1], length),
				this.sampleLine(bullsEyeCorners[1], bullsEyeCorners[2], length),
				this.sampleLine(bullsEyeCorners[2], bullsEyeCorners[3], length),
				this.sampleLine(bullsEyeCorners[3], bullsEyeCorners[0], length) // Top
			]);
			// bullsEyeCorners[shift] is the corner of the bulls'eye that has three
			// orientation marks.
			// sides[shift] is the row/column that goes from the corner with three
			// orientation marks to the corner with two.
			this.shift = this.getRotation(sides, length);
			// Flatten the parameter bits into a single 28- or 40-bit long
			let parameterData = 0;
			for (let i = 0; i < 4; i++) {
				let side = sides[(this.shift + i) % 4];
				if (this.compact) {
					// Each side of the form ..XXXXXXX. where Xs are parameter data
					parameterData <<= 7;
					parameterData += (side >> 1) & 0x7F;
				}
				else {
					// Each side of the form ..XXXXX.XXXXX. where Xs are parameter data
					parameterData <<= 10;
					parameterData += ((side >> 2) & (0x1f << 5)) + ((side >> 1) & 0x1F);
				}
			}
			// Corrects parameter data using RS.  Returns just the data portion
			// without the error correction.
			let correctedData = this.getCorrectedParameterData(parameterData, this.compact);
			if (this.compact) {
				// 8 bits:  2 bits layers and 6 bits data blocks
				this.nbLayers = (correctedData >> 6) + 1;
				this.nbDataBlocks = (correctedData & 0x3F) + 1;
			}
			else {
				// 16 bits:  5 bits layers and 11 bits data blocks
				this.nbLayers = (correctedData >> 11) + 1;
				this.nbDataBlocks = (correctedData & 0x7FF) + 1;
			}
		}
Extracts the number of data layers and data blocks from the layer around the bull's eye.

@param bullsEyeCorners the array of bull's eye corners
@throws NotFoundException in case of too many errors or invalid parameters