diff mupdf-source/thirdparty/tesseract/src/training/degradeimage.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/tesseract/src/training/degradeimage.h	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,57 @@
+/**********************************************************************
+ * File:        degradeimage.h
+ * Description: Function to degrade an image (usually of text) as if it
+ *              has been printed and then scanned.
+ * Authors:     Ray Smith
+ *
+ * (C) Copyright 2013, Google Inc.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ **********************************************************************/
+#ifndef TESSERACT_TRAINING_DEGRADEIMAGE_H_
+#define TESSERACT_TRAINING_DEGRADEIMAGE_H_
+
+#include <allheaders.h>
+#include "helpers.h" // For TRand.
+#include "rect.h"
+
+namespace tesseract {
+
+// Degrade the pix as if by a print/copy/scan cycle with exposure > 0
+// corresponding to darkening on the copier and <0 lighter and 0 not copied.
+// If rotation is not nullptr, the clockwise rotation in radians is saved there.
+// The input pix must be 8 bit grey. (Binary with values 0 and 255 is OK.)
+// The input image is destroyed and a different image returned.
+Image DegradeImage(Image input, int exposure, TRand *randomizer, float *rotation);
+
+// Creates and returns a Pix distorted by various means according to the bool
+// flags. If boxes is not nullptr, the boxes are resized/positioned according to
+// any spatial distortion and also by the integer reduction factor box_scale
+// so they will match what the network will output.
+// Returns nullptr on error. The returned Pix must be pixDestroyed.
+Image PrepareDistortedPix(const Image pix, bool perspective, bool invert, bool white_noise,
+                         bool smooth_noise, bool blur, int box_reduction, TRand *randomizer,
+                         std::vector<TBOX> *boxes);
+// Distorts anything that has a non-null pointer with the same pseudo-random
+// perspective distortion. Width and height only need to be set if there
+// is no pix. If there is a pix, then they will be taken from there.
+void GeneratePerspectiveDistortion(int width, int height, TRand *randomizer, Image *pix,
+                                   std::vector<TBOX> *boxes);
+// Computes the coefficients of a randomized projective transformation.
+// The image transform requires backward transformation coefficient, and the
+// box transform the forward coefficients.
+// Returns the incolor arg to pixProjective.
+int ProjectiveCoeffs(int width, int height, TRand *randomizer, float **im_coeffs,
+                     float **box_coeffs);
+
+} // namespace tesseract
+
+#endif // TESSERACT_TRAINING_DEGRADEIMAGE_H_