Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recommended pattern recognition technique for chess board

I'm trying to do an application which, among other things, is able to recognize chess positions on a computer screen from screenshots. I have very limited experience with image processing techniques and don't wish to invest a great amount of time in studying this, as this is just a pet project of mine.

Can anyone recommend me one or more image processing techniques that would yield me a good result?

The conditions are:

  • The image is always crispy clean, no noise, poor light conditions etc (since it's a screenshot)
  • I'm expecting a very low impact on computer performance while doing 1 image / second
  • I've thought of two modes to start the process:
    • Feed the piece shapes to the program (so that it knows what a queen, king etc. looks like)
    • just feed the program an initial image which contains the startup position, from which the program can (after it recognizes the position of the board) pick each chess piece
  • The process should be relatively easy to understand, as I don't have a very good grasp of image processing techniques (yet)
  • I'm not interested in using any specific technology, so technology-agnostic documentation would be ideal (C/C++, C#, Java examples would also be fine).

Thanks for taking the time to read this, and I hope to get some good answers.

like image 680
scripni Avatar asked Nov 13 '22 02:11

scripni


1 Answers

It' an interesting problem, but you need to specify a lot more than in your original question in order to find an acceptable answer.

On the input images: "screenshots" is quote vague a category. Can you assume that the chessboard will always be entirely in view? Will you have multiple views of the same board? Can you assume that no pieces will be partially or completely occluded in all views?

On the imaged objects and the capture system: will the same chessboard and pieces be used, under very similar illumination? Will the same lens/camera/digitization pipeline be used?

like image 153
Francesco Callari Avatar answered Dec 30 '22 11:12

Francesco Callari