I have been given the task to develop a code which checks if the display of a device is showing information correctly (i.e. any segments are activating when they are not supposed to).
To meet this goal the device is able to show different segment sets, especifically symbol segments, numeric segments, all segments and none.
The image is captured in these conditions:
To prepare the image, I rotate it and afterwards apply some filtering while decomposing the image channels and working on the Green channel, resulting in the following image.
I am using HALCON to carry out this task, developing a code which performs a pattern matching over a set of ROIs with the following result. For the following images I zommed in to the region most interesting for the pattern matching.
As you can see in the resulting pattern, there are some segments I am not checking (i.e the decimal points) while some not being completely checked like the PROG segment.
After altering the parameters I get the following pattern:
As you can see, it now checks for more information, but now there have appeared undesired traces in the pattern, which might end up affecting the performance of the pattern matching procedure.
Note that the images taken are not the original ones, I have performed the following filters on the image:
shock_filter (ImageRotate, SharpenedImage, 0.1, 20, 'canny', 1)
binomial_filter (SharpenedImage, ImageBinomial, 9, 17)
My questions are:
- Am I approaching this pattern detection correctly? If not, how should I approach it.
- For better results, should I illuminate the display as to reduce the amount of noise to a minimum?
I feel like I should do a matching per every segment group (Perform a matching for every ROI)