code: def measure(self, line):
      h, w = line.shape
      smoothed = cv.GaussianBlur(
          line,
          (0, 0),
          sigmaX=h * self.smoothness,
          sigmaY=h * 0.5,
          borderType=cv.BORDER_CONSTANT,
      )
      smoothed += 0.001 * cv.blur(
          smoothed, (w, int(h * 0.5)), borderType=cv.BORDER_CONSTANT
      )
  
      a = np.argmax(smoothed, axis=0).astype(np.uint16)
      kernel = cv.getGaussianKernel(
          int((8.0 * h * self.extra) + 1), h * self.extra
      )
      center = cv.filter2D(
          a, cv.CV_16U, kernel, borderType=cv.BORDER_REFLECT
      ).flatten()
  
      deltas = abs(np.arange(h)[:, np.newaxis] - center[np.newaxis, :])
      mad = np.mean(deltas[line != 0])
      r = int(1 + self.range * mad)
  
      return center, r
  
file_path: calamari/calamari_ocr/ocr/dataset/imageprocessors/center_normalizer.py
imports: from dataclasses import dataclass, field
  from typing import Type, Tuple
  import numpy
  import cv2
  from paiargparse import pai_dataclass
  from tfaip.data.pipeline.processor.dataprocessor import DataProcessorParams
  from calamari_ocr.ocr.dataset.imageprocessors.scale_to_height_processor import scale_to_h
  from calamari_ocr.ocr.dataset.imageprocessors.data_preprocessor import ImageProcessor
label_desc: Use image node_id 4 for calling the CenterNormalizerProcessor obj's underlying member method code with example usage: obj.measure(line) and returns: center,  r