Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Thank you for providing some example images. If they look similar to those you can identify your lcd-region by color since it is the only one which is in a yellow area.

Steps I would do:

  1. clean ore denoise the source-image (e.g. by using cv::fastNLMeans()) or blur your image using a Gaussian-kernel: cv::GaussianBlur()

  2. optional: normalize contrast --> cv::equalizeHist()

  3. Iterate through your images and identify yellow pixels (a simple if-condition here)

  4. get the bounding box of all these yellow pixels, i.e. get the min, max x and y-locations of your yellow points (you could do this also in the for-loop of step 3.)

  5. Pass the region of interest of step 4 to the open-source ocr software tesseract (http://code.google.com/p/tesseract-ocr/) to obtain an ocr result.


If your LCD is not always looking yellow-ish then you have several options, here are some ideas:

  1. identify the lcd by context, maybe you know that the lcd-line is always the second one in your image then you could also give tesseract the whole image and get an ocr of the whole image and the second line is then your result

  2. if you know it is the largest bounding box, apply the first two steps from above and find connected components (cv::findContours()) then pass the largest bounding box of connected components to tesseract.

  3. more advanced: if you know that it has the fattest stroke lines you could get the thickness by computing the distances between gradients of the strokes

  4. also advanced: if this was really just an example image and all your others look completely different then you need a learning approach, e.g. you could try out the cascade-classifier of OpenCV