This demo works for "perfect mazes." A perfect maze is defined as a maze which has one and only one path from any point in the maze to any other point. This means that the maze has no inaccessible sections, no circular paths, and no open areas. A perfect maze should have only 2 walls (I believe). No searching or optimization methods (such as A* or dynamic programming) are used - only morphology and standard image processing methods. Only tested for 8 bit integer color and monochrome images.
Demo mazes are included, but you can specify your own maze image. Maze images should have dark walls on a light background. Maze may be surrounded by white, or go right out to the edge of the image and have the outer wall be the outer boundary of the image. The maze image should not include text or pictures, like arrows, animals, etc. -- it should include the maze walls only.
Reading the code is a fun way to learn some image processing! The only thing I didn't care for was the super-huge figures that were nearly full-screen and therefore hard to resize and move out of the way. The solution is so fast that seeing the 3 figures in order really adds insight.