diff mupdf-source/thirdparty/zxing-cpp/core/src/HybridBinarizer.h @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/thirdparty/zxing-cpp/core/src/HybridBinarizer.h	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,40 @@
+/*
+* 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