Hi Joe,
I have a master in computer graphics, good mathematical skills, and the last year, I've been working on barcode readers (projects from ziji in my project history). In both cases, the two first steps are the same: edge detection and edge tracking. But the right approach will depend of the kind of images. There are many questions that can lead to one or other approach: all roads have the same color (then we can use segmentation instead of edge detection), are wide enough (has to do with image resolution), have colored edges, background is monochromatic, images are noisy, burred...well, a large list.
The result of these two steps is a set of polylines that join in nodes, i.e a graph. Not sure if you want to store all this data, or just nodes and distance of roads connecting nodes. Anyway, this part of the program looks simple.
Conceptually, the problem is easy but all depends on the quality of the images. Just in case, I placed a budget of $1500, once I know the details of the project, I can adjust it.
thanks,
david.