-2

I have a video filmed by bad quality surveillance camera. I need to get some information from the video, as example the car number.

enter image description here

is it doable?

Makyen
  • 31,849
  • 12
  • 86
  • 121
jobin
  • 1,119
  • 2
  • 12
  • 22
  • 1
    There's a license plate in that picture??? Anyways are you actually programming this or you want a click-to-fix tool? If you're coding this then you need to say what language you use (Java? C++? Flash/AS3?) and possibly show what code you tried. Its not looking good though like that. Do you have multiple pics with slightly better views of some of the numbers? maybe together they can reveal the final number... – VC.One Aug 23 '15 at 17:44
  • Thank you, actually I have the 10 minutes original video. I'm c# programmer, also I can work with ffmpeg if it help. it is very important to me, so I'll learn c++ if it is able to allow me extract the license plate – jobin Aug 23 '15 at 22:24

1 Answers1

2

I would:

  1. Locate the plate inside frame

    need to specify the plate corners reliably from image as your camera is most likely fixed then you know it is +/- on fixed height of image and usually on the back side of car from one half way and on front in the other halfway. So some edge detection inside specified region of image should do. You can also help by manual selection hint from User with some GUI

  2. map it to rectangular target image (with sub-pixel precision)

    create empty target plate image with high enough resolution. Each pixel will need to hold single float per channel and single integer counter. Clear the image with 0 per channel and 0 per counter. Then Create transform matrix mapping found plate pixels to it

  3. integrate all usable plates from single vehicle from each frames available

    so just Add them to target image (add pixels and increase used pixel counter). Use as many frames as you can and do not include frames with not reliably found plate ...

  4. Interpolate holes

    after the integration of all frames scan the target image for used pixels (counter>0) and divide color channels by it. Then scan the target image for unused pixels (counter=0) and interpolate their color from used neighbors (bilinear interpolation). If you have bigger resolution then simpler is find 4 used pixels corners and interpolate the inside ...

  5. This should improve the plate image

    after you do this then you will see how much information you actually have. Without trying is hard to tell if the result will be enough for OCR or for human readability ...

[Notes]

You can improve OCR also by probabilities of pixel intensity. So the higher the counter value the more reliable pixel is. If you include this to OCR decisioning you can obtain better results.

Also Enhancing dynamic range and normalizing illumination prior to integration should improve results a bit more

Community
  • 1
  • 1
Spektre
  • 49,595
  • 11
  • 110
  • 380