/** * Converts a 2D array of luminance data to 1 bit. As above, assume this method is expensive and * do not call it repeatedly. This method is intended for decoding 2D barcodes and may or may not * apply sharpening. Therefore, a row from this matrix may not be identical to one fetched using * getBlackRow(), so don't mix and match between them. * * @return The 2D array of bits for the image (true means black). * @throws NotFoundException if image can't be binarized to make a matrix */ public BitMatrix getBlackMatrix() throws NotFoundException { // The matrix is created on demand the first time it is requested, then cached. There are two // reasons for this: // 1. This work will never be done if the caller only installs 1D Reader objects, or if a // 1D Reader finds a barcode before the 2D Readers run. // 2. This work will only be done once even if the caller installs multiple 2D Readers. if (matrix == null) { matrix = binarizer.getBlackMatrix(); } return matrix; }