I haven't developed a particularly interesting angle analysis algorithm, however I've done a lot of implementation work that may be of interest to you.
Whilst Mathematica's image processing and morphological tools are fantastic, I felt one could only go so far with image based analysis. Ideally one would calculate an ordered perimeter so that the position of used data relative to each corner is well understood.
To this end I split the perimeter into closed cycles to order the data:

Then I manually detected corners by traversing these cycles with a rolling average and logging high angular change.
This lets one directly look at the pixel data either side of a corner point. Ideally one might fit a curve to each meeting edge, allowing a low radius angle to be calculated from high radius data. I just use linear fits, fifteen pixels either side of the corners, and this is fairly ok.

The whole procedure is fairly clean and commented in the attached notebook.
I have to agree with David on this one, this is an interesting problem!
Attachments: