Refactored the MonochromeBitmapSource class hierarchy into LuminanceSource, Binarizer...
authordswitkin <dswitkin@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Fri, 26 Jun 2009 17:49:45 +0000 (17:49 +0000)
committerdswitkin <dswitkin@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Fri, 26 Jun 2009 17:49:45 +0000 (17:49 +0000)
commitafc10a58143505842f5a3433ba5675d45346f0be
treecafb7051a2b403cd3e7ec860809cfd07f633b595
parentc12299981507dba0a690febd9a06c528f59f8b1b
Refactored the MonochromeBitmapSource class hierarchy into LuminanceSource, Binarizer, and BinaryBitmap classes. The unit tests pass and I believe the change is complete, but there are some clients like J2ME and Bug that I can't build.

This change will allow new thresholding algorithms to be developed and tested, as well as implemented per platform if needed (e.g. in JNI on Android). It should also perform better when multiple 2D Readers are installed, because the underlying image will only be converted to 1 bit once. It also allows some platforms to return luminance data without a copy.

The current state of this checkin is to use the old black point algorithm, which now lives in GlobalHistogramBinarizer. This will be our benchmark and fallback for slower platforms. Going forward we will begin to use LocalBlockBinarizer as I shake out the edge cases and tune it for performance. Currently it is unused.

IMPORTANT: I have temporarily included three methods from MonochromeBitmapSource at the end of BinaryBitmap as a way to make this change in stages. They are deprecated and will be removed soon. All of the Reader classes will need to change the way they examine 1 bit pixels to use the new getBlackRow() and getBlackMatrix() calls.

git-svn-id: http://zxing.googlecode.com/svn/trunk@993 59b500cc-1b3d-0410-9834-0bbf25fbcc57
55 files changed:
android/src/com/google/zxing/client/android/DecodeThread.java
android/src/com/google/zxing/client/android/YUVLuminanceSource.java [new file with mode: 0644]
android/src/com/google/zxing/client/android/YUVMonochromeBitmapSource.java [deleted file]
androidtest/src/com/google/zxing/client/androidtest/BenchmarkThread.java
androidtest/src/com/google/zxing/client/androidtest/RGBLuminanceSource.java [new file with mode: 0644]
androidtest/src/com/google/zxing/client/androidtest/RGBMonochromeBitmapSource.java [deleted file]
bug/src/com/google/zxing/client/bug/AWTImageLuminanceSource.java [new file with mode: 0644]
bug/src/com/google/zxing/client/bug/AWTImageMonochromeBitmapSource.java [deleted file]
bug/src/com/google/zxing/client/bug/app/BugBarcodeApp.java
core/src/com/google/zxing/Binarizer.java [new file with mode: 0644]
core/src/com/google/zxing/BinaryBitmap.java [new file with mode: 0644]
core/src/com/google/zxing/BlackPointEstimationMethod.java [deleted file]
core/src/com/google/zxing/DecodeHintType.java
core/src/com/google/zxing/LuminanceSource.java [new file with mode: 0644]
core/src/com/google/zxing/MonochromeBitmapSource.java [deleted file]
core/src/com/google/zxing/MultiFormatReader.java
core/src/com/google/zxing/Reader.java
core/src/com/google/zxing/common/BaseMonochromeBitmapSource.java [deleted file]
core/src/com/google/zxing/common/BlackPointEstimator.java [deleted file]
core/src/com/google/zxing/common/CroppedMonochromeBitmapSource.java [deleted file]
core/src/com/google/zxing/common/DefaultGridSampler.java
core/src/com/google/zxing/common/GlobalHistogramBinarizer.java [new file with mode: 0644]
core/src/com/google/zxing/common/GridSampler.java
core/src/com/google/zxing/common/LocalBlockBinarizer.java [new file with mode: 0644]
core/src/com/google/zxing/common/detector/MonochromeRectangleDetector.java
core/src/com/google/zxing/datamatrix/DataMatrixReader.java
core/src/com/google/zxing/datamatrix/detector/Detector.java
core/src/com/google/zxing/multi/ByQuadrantReader.java
core/src/com/google/zxing/multi/GenericMultipleBarcodeReader.java
core/src/com/google/zxing/multi/MultipleBarcodeReader.java
core/src/com/google/zxing/multi/qrcode/QRCodeMultiReader.java
core/src/com/google/zxing/multi/qrcode/detector/MultiDetector.java
core/src/com/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder.java
core/src/com/google/zxing/oned/AbstractOneDReader.java
core/src/com/google/zxing/oned/UPCAReader.java
core/src/com/google/zxing/pdf417/PDF417Reader.java
core/src/com/google/zxing/pdf417/detector/Detector.java
core/src/com/google/zxing/qrcode/QRCodeReader.java
core/src/com/google/zxing/qrcode/detector/AlignmentPatternFinder.java
core/src/com/google/zxing/qrcode/detector/Detector.java
core/src/com/google/zxing/qrcode/detector/FinderPatternFinder.java
core/test/src/com/google/zxing/common/AbstractBlackBoxTestCase.java
core/test/src/com/google/zxing/common/AbstractNegativeBlackBoxTestCase.java
core/test/src/com/google/zxing/common/BlackPointEstimatorTestCase.java [deleted file]
javame/src/com/google/zxing/client/j2me/LCDUIImageLuminanceSource.java [new file with mode: 0644]
javame/src/com/google/zxing/client/j2me/LCDUIImageMonochromeBitmapSource.java [deleted file]
javame/src/com/google/zxing/client/j2me/SnapshotThread.java
javase/src/com/google/zxing/client/j2se/BufferedImageLuminanceSource.java [new file with mode: 0644]
javase/src/com/google/zxing/client/j2se/BufferedImageMonochromeBitmapSource.java [deleted file]
javase/src/com/google/zxing/client/j2se/CommandLineRunner.java
javase/src/com/google/zxing/client/j2se/GUIRunner.java
javase/src/com/google/zxing/client/j2se/ImageConverter.java
rim/src/com/google/zxing/client/rim/ZXingLMMainScreen.java
zxingorg/src/com/google/zxing/web/DecodeEmailTask.java
zxingorg/src/com/google/zxing/web/DecodeServlet.java