loading

Automated Dice Counting


The following tutorial describes one way to use a vision system to count the values of dice after they are rolled into view of a camera.

Our first example starts with an image of some colored dice.

Original Image

Our first impluse is to extract out the white dots by simply detecting the red color of our dice and then removing that from the image. But first we add in Mean Module with value of 2 to help smooth the color within the image. You will not notice much of a change to the unmagnified eye but this filter helps to soften the color. Then we apply the RGB Filter module to extract out just the red within the image. The Mean with Red extraction then looks like

Red Extracted

We then select the Black Mask result of the RGB Filter to produce

Black Mask

which shows the white dots plus the background white. We can now count the number of blobs using the Blob Count module. Finally using the Display Variables module we can display that count into the image. The result appears like

which we can clearly see is not the right count. We would expect the count to be +1 given the background white blob but 17 is incorrect (+2). The reason for this is in the middle of the dice a white blob is created due to the dice touching each other. We could remove this incorrect blob using size but that would restrict the camera movement to the same distance from the dice otherwise the actual spots may be removed if they become larger with camera movement.

Instead, we can use the Blob Colorize followed by the Blob Filter to remove all blobs whose original average intensity is below a certain amount. As the center blob is darker than the white spots we can use intensity to remove this erroneous blob.

Middle Blob Removed

You can see the effect of the Blob Colorize module in that the background blob approximates the color of the surface we are using (plastic table). Now the count is correct (minus 1 for the background).

When viewed on a live camera this count can flicker at times since the spots may momentarily become connected. This is normal camera noise which we can reduce by using an Average module which will average together serveral images (10 in our case) to produce a much more stable image. You do get some blurring when motion happens but not enought to cause us problems if the number of frames used is kept low.

We can then try a couple more combinations.

12 9 5

which all seem to work fine. The following  robofile can be used to replicate these results.

The problem now is that regular black and white dice will not work! Given the image

Black and White

there is no red color and thus no dice are extracted. In this case we need to use a thresholding technique to isolate the spots (now black instead of white) against the rest of the image. We can do this using the Auto_Threshold module and the Two Peaks setting. The thresholded image set again to Black Mask appears as

Thresholded

but now our previous trick of removing the inner part of a connected set of dice will fail since the spots are now also dark!

Inner Blob

In this case instead of using intensity to remove the erronious inner blob we use the Blob Filter to remove blobs that are not very circular in shape. A setting of 0.60 will remove the inner blob and the outer background blob (its not a circle either) to leave us with just our circles that we wish to count.

Filtered for Circles

The final count is then displayed correctly for the Black and White dice. The following  robofile can be used to replicate these results.

However, when viewed with a camera the thresholding technique used (Two Peaks) can cause the image to momentarily jump into an incorrect state. As pixel values will contain noise any global thresholding technique can cause flickering in the image. A more stable technique to use is the Adaptive Threshold module which determines threshold values more locally and is more stable overall. Substituting this module results in final stable dice counter script. You can download that  robofile that is used in the movie below.

Video

The End

That's all folks. We hope you've enjoyed this little adventure into an application of machine vision processing. If you have any questions or comments about this tutorial please feel free to contact us.

Have a nice day!


 New Post 

Counting Dice Related Forum PostsLast postPostsViews
Counting Dice Tutorial
I just set up Roborealm for the first time and I probably am doing something wrong.  I have a PS3 Eye camera connected...
10 year 3 2611