Optical number recognition for Bingo balls

This is the stand-alone Bingo ball optical reader, based on PIC24EP512GP806. This MCU has 52K (53,248 bytes) of Data memory and 512K of Program memory. CPU speed is 70 MIPS.

Due to the limited amount of RAM, frame resolution is 220x220 pixels, which consumes 48,400 bytes. The rest of 4,848 bytes is used for housekeeping. One pixel takes 6-bit (monochromatic), and bits #6 and #7 are used in image processing routines, as there is no auxiliary frame buffer. There is the 8-bit ADC (National Semiconductor`s ADC1173), used for sinle frame grabbing (6 bits are used).

To enable the software development and adjusting process, there is also the VGA video stage, which enables full reproduction of the frame buffer, plus some other digital data (important status messages, variables and memory dump). This video stage is fully software supported, and it is similar to the video stage described here.

I/O communication is via RS232 port. During the development process, the same port is connected to the simple terminal unit with 12-key keyboard.

The whole program is written in assembly language. One ball number recognition takes about 450 ms, including about 110 ms for frame fetch.

This is not DIY project and it will not be described in detail, but only the principles used for number location, rotating and recognition.

This is my third trying to make the same project. I built the first one about five years ago, you can see it on  https://www.youtube.com/watch?v=napA-fwdxeY  It worked fine, but there were problems with single digit numbers rotation. I started again from scratch two more times, and I learned some things doing this - for instance, that the recognition itself is the peace of cake, compared to ball and number locating and angle detection. So I left the first neural network idea and made the recognition algoritmic, as, at least, there is no network training.

Here is the picture of the system. Don`t ask why the PCB is skewed, it was the requirement of the system in which it was embedded.


    Back to projects 
0. Home
H. Hardware
L. Lighting
1. Frame fetch
2. Ball locate
3. Stretching
4. Unsharp mask
5. Component selection
6. Holes and scratches
7. Component shrink
8. Invert selection
9. Component list
10. Select best circle
11. Angle detection
12. Rotate selected
13. Select broad lines
14. Selected components list
15. Components scaling
16. Histogram
17. MSE and voting
C. Conclusion