I\'d like to separate an image of text into it\'s component characters, also as images. For example, using the sample below I\'d end up with 14 images.
I\'m only go
You could start with a simple connected components analysis (CCA) algorithm, which can be implemented quite efficiently with a scanline algorithm (you just keep track of merged regions and relabel at the end). This would give you separately numbered "blobs" for each continuous region, which would work for most (but not all) letters. Then you can simply take the bounding box of each connected blob, and that will give you the outline for each. You can even maintain the bounding box as you apply CCA for efficiency.
So in your example, the first word from the left after CCA would result in something like:
1111111 2 3
1 2
1 2 4444 5 666
1 22 4 5 6
1 2 4 5 666
1 2 4 5 6
1 2 4 5 666
with equivalence classes of 4=2.
Then the bounding boxes of each blob gives you the area around the letter. You will run into problems with letters such as i and j, but they can be special-cased. You could look for a region less than a certain size, which is above another region of a certain width (as a rough heuristic).
The cvBlobsLib library in OpenCV should do most of this for you.