1) The goal of the program you are going to write is to classify street signs, in particular stop signs and speed limit signs. There are four images that you will use to test your program; speedsign3.jpg – a 40km speed sign, speedsign12.jpg – an 80km speed sign, speedsign4.jpg – a 100km speed sign and finally stop4.jpg – a stop sign. I have given you a program called classify_sign_template.cpp, which you should change to do the classification. The result will be a copy of the input image with the appropriate label (a stop sign, speed limit 40, speed limit 80, or no match) for each of these three input images. There are two parts to the program, the first decides on which type of sign you are looking at (stop sign or speed limit). To do this you will use the routines Canny, findContours, and approxPolyDP. To help you I am giving you some information on the parameters of these routines. First of all, Canny(, , canny_thresh, canny_thresh*2, 3) where canny_thresh is defined in the program I have given to you. Also, findContours(, , , RETR_EXTERNAL, CHAIN_APPROX_NONE, Point(0, 0)), and approxPolyDP(, , contours[i].size()*.02, true). These are the parameter values which worked for me, you can use them if you want, but you do not need to use them. The second part of the program will use the routines getPerspectiveTransform, and warpPerspective along with images speed_40.bmp, and speed_80.bmp to tell the type of speed limit sign, but only once you have determined that your are indeed looking at a speed limit sign. Hand in the source code, and tell me the version of OpenCV that you are using. You should also include the four output files that you have produced, one for each of the four test cases.