-4

Hi I am a student doing research in my university. This is my first time using computer vision (openCV) and I am fairly new to image preprocessing. I have these images of License Plates and I would like to use easyOCR/pytesseract to read the plates. Currently all I have done is convert the image to grayscale, rotate it by a few degrees, but the reading results are very inconsistent. How do I improve that?

I have tried using kernels to sharpen the images but they seem to be fairly inconsistent too.

Here are some images I have to give you a general idea of what the images are like: Images

Christoph Rackwitz
  • 11,317
  • 4
  • 27
  • 36
  • 3
    picture 2881 looks legible but a lot of the others are basically junk. 2556 is very junky, 2788 too, ... -- garbage in, garbage out. this can't be "fixed in post-production". image acquisition needs to be improved. -- you could try training a neural network... but you can expect it to perform on par with a human. if *you* can't read the plate, just assume it's impossible. – Christoph Rackwitz Jan 10 '22 at 13:25
  • Thank you @ChristophRackwitz I will try the neural network idea – Nikhilesh Chhetri Jan 13 '22 at 00:22

1 Answers1

1

I would start with image enhancement. It's hard to tell what exactly is applicable but here are some possible manuevers:

  1. As usual recognition algorithms are not invariant to rotation. And every image seems to be geometically distorted similarly. You can try to normalize the geometry by warpPerspective function from Opencv with appropriate transformation matrix. Rotation is a subset of all possible transformations covered by perspective transform.
  2. You can try to use advanced deblurring techniques like wiener filter or deeplearning. It seems like point spread function is different from image to image that complecates the recovery.
  3. There is some periodic signal in your images (vertical blue-white-blue stripes). That can possibly can be enhanced by doing FFT -> removing components of the specific wavelength -> iFFT.

Anyway looking on your images, I am not sure if it will be easy to achieve the desired result without diving into the OCR pipeline.