How can I save a heterogeneous group of segmentation seeds drawn on an image via imfreehand?

2 views (last 30 days)
I want to specify various segmentation seeds across different MRI slices and save them.
I'm using imfreehand to specify these seeds.
After looking at the documentation, I've thought about using roicolor, so I would get various masks based on the colors that I get on imfreehand, as seeds on different spatial locations need to be considered equal if they share a color.
I'm not sure on how to go about this cause I don't know the numerical values of the colors specified on imfreehand (which are medium blue, light blue, light red, green, yellow, magenta, cyan, light gray, black).
Anyone knows how do I find out the numerical values of these colors?
Is the idea of using roicolor sensible for my needs?

Answers (1)

Image Analyst
Image Analyst on 27 Jan 2013
roicolor() is fine for getting a binary mask of a grayscale image between a lower and an upper gray level. The color used to draw with in imfreehand() has nothing to do with anything, other than what color you see your path drawn with. Don't worry about it. Just take the values of some region you draw and from those, determine some upper and lower gray levels and use those in roicolor(). Let me know if you need a demo for how to find intensity stats for the region you drew.
  8 Comments
Image Analyst
Image Analyst on 28 Jan 2013
Yes, but when you draw, with whatever color, you store the drawn coordinates in the cell array for that type of region. For example you're drawing brain (in the "brain" color, whatever that may be), and your user drew three paths. So you put the first path drawn into cell array caBrain{1}, and you put the coordinates of the second path that they draw into caBrain{2}, and so on. Now the user will draw liver. So you take the first path and store that in caLiver{1}, and store the second path coordinates in caLiver{2}, and so on - and we don't care what color you use to draw liver with. You can do that because you must know what type of tissue the user is drawing over, otherwise there's no telling what they drew over. Even your references know if their user is drawing over the subject/foreground or the background, so you can also. For example, you have two buttons "Draw Brain" and "Draw Liver" and they click one, and in the callback of "Draw Brain" you assign cells of caBrain with user-drawn paths, and when they click "Draw Liver" in the callback of "Draw Liver" you assign cells of caLiver with user-drawn paths.
Antonio
Antonio on 28 Jan 2013
yes, I know I can do that, as I said to you above "I can ask the user to draw sequentially the seeds, and use the coordinates directly, but I feel this is cumbersome when using various slices and more than 2 segmentation classes."
This is cumbersome and wasteful of the capacities of the algorithm, because I'll have to list a number of segmentation classes beforehand.
GrowCut has the amazing capability of performing good segmentations with N number of classes (not just foreground/background) without increasing the computation time when increasing the number of classes (unlike things like Random Walker and GraphCuts).
Having a preset number of classes is wasteful of this capability (which I want to evaluate).
Anyway, I found this and I'll try it to see if it fits what I want to do http://www.mathworks.com/matlabcentral/fileexchange/34890-fhroi-interactive-freehand-roi
If it doesn't, I'll go with some preset number of classes.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!