License Plate Recognition

A license plate recognition engine is built into Viinex and, as other features, is available via HTTP RPC. To perform the license plate number recognition, the client’s code sends an image as an HTTP request and gets the recognition result in the body of the HTTP response. Such scheme requires that the client software knows when the car license plate is within the camera’s field of view. This is usually the case when the client software is intended for the automation of checkpoints.

An important feature of the LPR engine built into Viinex is that it is not bound to a single camera: the client software may use one instance of the engine to do license plate number recognition from many cameras.

LPR engine offered with Viinex has no adjustments required for a specific camera position. It makes the deployment and usage of this LPR engine very simple. Everything that has to be done to perform a license plate number recognition on a checkpoint is to acquire a JPEG image and feed it as is to Viinex LPR engine, – without any additional parameters.

The recognition module works as an external process, starts automatically and does the following:

  • retrieval  video from surveillance cameras via ONVIF and RTSP;
  • decompresses video streams for video analytics module;
  • recognizes license plate numbers and delivers results in JSON format:
  • license plate number;
  • timestamp for the frame with the best recognition result;
  • license plate position at the image;
  • confidence – recognizer confidence level.
  • provides video storage and receiving video and/or frames on timestamps of license plate number recognition.

Viinex supports two work modes for two possible use scenarios in integrating software recognition performed on video stream or on still images (JPEG)

License Plate Recognition performed on video stream

This is a typical scenario for transport checkpoints, when a video analytics algorithm analyzes all frames in the video stream, since at the moving vehicle the geometry of license plate symbols in the images captured by the camera may change.

License plate recognition in managed mode (HTTP request)

Recognition algorithm mode can be operated: in this case the integrating application can start and stop the algorithm, when a vehicle is in front of the camera (after receiving information from the loop or other sensors and detectors, button being pushed etc).

In case of on-command recognition Viinex interacts with the algorithms via HTTP protocol, which is used as a transport protocol for remote procedure calls. It allows to launch multiple recognition tasks simultaneously for a variety of reasons – with no need to serialize requests or take any other precautions usually necessary for multithreaded use of recognition libraries.

License plate recognition request example:

GET http://servername:port/v1/svc/alprCamN

Preprocess and postprocess parameters of time of recognition can be preset, like half a second before and after receiving this command.

License plate recognition in automated mode (WebSocket)

The algorithm of recognition in video stream can also work in fully automated mode (freeflow) – when there is no possibility to use additional information as to whether the car is in front of the camera and control the recognition process via HTTP requests. In this case it is possible to receive recognition results through the use of alert service via WebSocket interface. WebSocket subscription also works fine when it’s necessary to deliver results to multiple clients of the integration application, not only to the one controlling the recognition and sending HTTP requests.

Fully automatic mode provides better results than a single frame recognition mode (described below) simply by having more data for recognition and possibility to analyze results from multiple frames with the same license plate.

In fully automatic mode there’s a lot of data, and the algorithm analyzes all images it receives looking for a license plate on each frame. If traffic is not too busy, most of the time it analyzes the images with no vehicles.

For the purpose of hardware resources use optimization Viinex offers a capability to specify a ROI (range of interest) to analyze only a part of the image. Moreover, one can also adjust the parameters of video stream details – whether all frames or only key frames should be analyzed; can they be skipped; should the analysis process be stopped if the initial result has a necessary confidence rate. These settings help to save a lot on hardware resources, especially when the traffic is calm, like at the parking lots and traffic checkpoints. This way hardware resources can be distributed to process more video streams.

License Plate Recognition performed on still images

Single frame recognition mode is preferable when working with stationary vehicles – like the ones that have stopped at a barrier gate in camera coverage area or the ones standing on static vehicle scales, i.e. when the stop lasts one second or longer.

In this case there are no significant changes of the license plate image. Ergo, the hypotheses made by a recognition algorithm for each frame will be the same. The reason for this is that the frames will only differ from each other by image artifacts, which do not have considerable impact on the quality of recognition. At the same time, the most important factor that affects the recognition quality, which is the plate and symbols geometry, will remain the same on each frame, until the vehicle starts moving. That’s why there is no need to analyze a sequence of images.

Thus, if there’s a need to recognize the license plate of a vehicle standing on a scale or at a checkpoint (if the place where the vehicle stops is known in advance and there’s an external signal when the vehicle is at such place), the static recognition mode will be enough. For example, one can send a random image to the license recognition engine input by using CURL to form HTTP requests to Viinex (the image is sent in the body of HTTP request, and the results of license plate recognition return as a JSON structure in the body of HTTP response, the same data list as in the video stream mode).

Request example:

POST http://servername:port/v1/svc/alprN

There are no restrictions related to the number of cameras, since the recognition is performed by single frames. It makes this mode cost efficient when used at weighing points and checkpoints, where vehicles stop in camera coverage area. Hardware load is minimal, since this mode allows to process video data only when there is a license plate in the image. This provides a capability to deploy Viinex at the same hardware platform with automation software, no additional dedicated hardware resources needed. Besides, this mode is notable for its usability and no need for recognition algorithm setup. The whole frame is analyzed, since there are no hard time limits for delivering the recognition results, as in video stream mode, when after a fraction of a second another frame is delivered for processing.

Here is the list of the countries’ license plates that Viinex can recognize:
  • Australia
  • Bahrain
  • Belarus
  • Brazil
  • Canada
  • China
  • France
  • Germany
  • Great Britain
  • India
  • Israel
  • Kazakhstan
  • Lebanon
  • Malaysia
  • Mexico
  • Oman
  • Poland
  • Russia
  • Qatar
  • Saudi Arabia
  • Singapore
  • South Africa
  • South Korea
  • Sri Lanka
  • Taiwan
  • UAE
  • Ukraine
  • USA
  • Vietnam