searching for the signs

1. color filtering

The input image is a frame from a dashboard cam video, 640x480, well lit:

The task is to find the speed limit sign, which is a white disk with black digits and a red circular frame on it.

First stage is to convert the full color range to 3 discrete colors:

Stage 1 image:

Stage 2 takes red pixels, try to floodfill them with a high tolerance for gaps to identify solid red regions on stage 1 image; while doing so, red turns to blue:

Finally, stage 3 is about taking each (originally) red region and try to guess whether it's the frame of a sign. The regions are cut out with their bounding box and evaluated separately. Such a small image is a sign if:

This complex-looking task is performed by a simple hammer: fire radial rays from the "middle" of the suspected table and see how long it stays on green (greyish) pixels then for how long it stays on blue (redish) pixels. Then check how how many rays met the above three criteria reworded for rays: from the center out, there should be a long green section and a shorter blue section. If most of the rays looked like this, then bingo, we've got a mostly symmetrical, maybe elliptic, maybe noisy sign.

Here are the stage3 suspects listed in order of their appearance from top-left corner down to the bottom-right corner. When the second column looks like a grey sun, "we happy".
stage3 in sign validation debug output is it a sign?
yes
no
no
no
no
no
no

Once this is done, it's possible to highlight sign-suspects by darkening out everything else:

This is the bounding box found in stage 3; it would be possible to highlight the circular cutout using stage3 debug output (the little sun), but that wouldn't be a major improvement.

Disclaimer: this is not how professional image processing happens - this is how you hack with a pick axe in 200 lines of C code. But well, it does work.