Implemented Mobile Phone Clients

So far we implemented two kinds of mobile phone clients for the the recognition of barcodes.

J2ME Version

This version consists of a freely available J2ME based client. It allows for the recognition of barcodes based on still images and works quite well as long as the images are sharp. It represents a first approach and has still a lot of potential for improvement.


Figure 1: Screenshots of the recognition process on the current J2ME client.


ExampleVideo

This small example video illustrates the recognition of barcodes with the free J2ME version.


C++ Symbian Version

Besides the J2ME version, we also developed a C++ client for Symbian phones. This version provides a much easier and more robust recognition, which is mainly due to the fact that the recognition is performed in real-time on the camera images.


Figure 2: Screenshots of the C++ Symbian client. The green box above the viewfinder indicates that the displayed barcode is recognized in the current camera image.


There are a few (not reworked) example videos available that illustrate the current state of the recognition. The videos have been taken using a Nokia N70 device. This phone model has no autofocus camera and is approximately 2 years old.

RealtimeRecognition

This video illustrates how well the realtime recognition of EAN13 barcodes works.

AllergyAssistant

This video shows how easy according applications can be. Transparent overlays are used to show the user if a certain product is fine for him or not.

ProductInformation

This video illustrates how fast data can be aquired from different sources. Each time a barcode has been recognized, it will be sent to a server using the mobile phone network. This server will then query the webservices offered by Amazon to obtain the current product's price and send the information back to the mobile phone where it will be displayed.

Testing the Clients

Supported Phones

The J2ME Client has been developed für mobile phones supporting J2ME and the MMAPI (Mobile Media API) extension.

It has been tested on a Nokia N70 mobile phone and is also working on a Nokia N90 device. We also tried them on a Nokia 6630 device, but discovered that the recognition on this device is very poor, due to the fact that the the Java implementation limited the resolution of the camera images to 160x120 pixels. (The images returned by the system have the dimension they should have, for example 640x480 pixels, but when one takes a closer look at the returned images, it turns out that they are extrapolated from the lower resolution...)

Since our primary focus was not on providing a ready product that runs on many phones, it is possible that the software is not working out of the box on some models. Even though it has no special requirements regarding the used phones. If it is not working properly, one very likely reason is the fact that the device doesn't support the format in which we try to get the image from the camera. The standard format used when pressing the OK button is specified in the genericClient.algorithm.Profile class. Currently we use the following encoding that works on the above Nokia phones:

private String image_encoding = "encoding=bmp&width=640&height=480";


Additional Requirements

In order to test the provided clients, you will either need a mobile phone that provides autofocus, a macro-mode, or an additional, so called macro-lens. Using normal fixed focus cameras will result in barcode pictures that are too unsharp for recognition. (See Documentation/BarcodeRecognition? for more information why this is necessary.)

You could also apply a small trick in order to test the recognition with a standard phone: Print out a normal EAN13-Code in full size on a DIN A4 sheet of paper. If we take the picture now from further away, the barcode itself will have the same size on the phone's screen like a standard code from a closer distance, but this way the image taken will be sharp and therefore more suitable for recognition.