NormalizedCharacterImage.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from copy import deepcopy
  2. from GrayscaleImage import GrayscaleImage
  3. from LetterCropper import LetterCropper
  4. from GaussianFilter import GaussianFilter
  5. class NormalizedCharacterImage(GrayscaleImage):
  6. def __init__(self, image=None, data=None, height=None, blur=1.1):
  7. if image != None:
  8. GrayscaleImage.__init__(self, data=deepcopy(image.data))
  9. elif data != None:
  10. GrayscaleImage.__init__(self, data=deepcopy(data))
  11. self.blur = blur
  12. self.gaussian_filter()
  13. self.increase_contrast()
  14. #self.crop_threshold = crop_threshold
  15. #self.crop_to_letter()
  16. self.height = height
  17. self.resize()
  18. def increase_contrast(self):
  19. self.data -= self.data.min()
  20. self.data = self.data.astype(float) / self.data.max()
  21. def gaussian_filter(self):
  22. GaussianFilter(self.blur).filter(self)
  23. def crop_to_letter(self):
  24. cropper = LetterCropper(0.9)
  25. cropper.crop_to_letter(self)
  26. def resize(self):
  27. """Resize the image to a fixed height."""
  28. if self.height == None:
  29. return
  30. h, w = self.data.shape
  31. GrayscaleImage.resize(self, (self.height, self.height * w / h))