pythonopencvpython-tesseractautomatic-license-plate-recognitioneasyocr

Trying to read these plates using OCR but they are blurry. Where do I start?


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


Solution

  • 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.