I think you have two solution:
- if all road are line: use the Hough transform (here) and find intersections analytically.
- if you are in the more general and complex case (''the real one'') where road are anything: lines, circle, curves, ... the first thing to try is thinning algorithm from this post which is related to finger print detection (quite close to your subject) and after you can either find intersections with detector inspired from fingerprint (no ref, but I'm looking) or build a graph from each line (just follow the line and look at the neighborhood) to make a road graph.
Enjoy.