You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.5 KiB
40 lines
1.5 KiB
/* |
|
* Copyright 2016 Nu-book Inc. |
|
* Copyright 2016 ZXing authors |
|
*/ |
|
// SPDX-License-Identifier: Apache-2.0 |
|
|
|
#pragma once |
|
|
|
#include "GlobalHistogramBinarizer.h" |
|
|
|
namespace ZXing { |
|
|
|
/** |
|
* This class implements a local thresholding algorithm, which while slower than the |
|
* GlobalHistogramBinarizer, is fairly efficient for what it does. It is designed for |
|
* high frequency images of barcodes with black data on white backgrounds. For this application, |
|
* it does a much better job than a global blackpoint with severe shadows and gradients. |
|
* However it tends to produce artifacts on lower frequency images and is therefore not |
|
* a good general purpose binarizer for uses outside ZXing. |
|
* |
|
* This class extends GlobalHistogramBinarizer, using the older histogram approach for 1D readers, |
|
* and the newer local approach for 2D readers. 1D decoding using a per-row histogram is already |
|
* inherently local, and only fails for horizontal gradients. We can revisit that problem later, |
|
* but for now it was not a win to use local blocks for 1D. |
|
* |
|
* This Binarizer is the default for the unit tests and the recommended class for library users. |
|
* |
|
* @author dswitkin@google.com (Daniel Switkin) |
|
*/ |
|
class HybridBinarizer : public GlobalHistogramBinarizer |
|
{ |
|
public: |
|
explicit HybridBinarizer(const ImageView& iv); |
|
~HybridBinarizer() override; |
|
|
|
bool getPatternRow(int row, int rotation, PatternRow &res) const override; |
|
std::shared_ptr<const BitMatrix> getBlackMatrix() const override; |
|
}; |
|
|
|
} // ZXing
|
|
|