On 29/06/13 11:16 PM, StÃ¯Â¿Â½fan van der Walt wrote:
On Thu, Jun 20, 2013 at 5:37 PM, Brickle Macho email@example.com wrote:
I over segment an image using a superpixel algorithm. I region grow using the superpixels to end up with a segmented image, a label-image. I overlay the label boundaries using mark_boundaries().
I'd be interested to hear more about your approach. We're also working on some segmentation for gsoc, and I'd be very interested in a region growing PR.
It not terribly exciting, perhaps calling it region growing is stretching the truth a little, not sure if it is worthy of a PR.
I just traversing the superpixels using a connectivity graph (see http://peekaboo-vision.blogspot.com.au/2011/08/region-connectivity-graphs-in...) and combing neighbouring superpixels based on a decision function. Here is a little more detail on what I am doing.
First I over segment the image using either slic, quickshift or felzenswalb. I am also looking at SEEDS (http://www.vision.ee.ethz.ch/~boxavier/seeds/) using the C++ implementation provided. I then visit each superpixel and determine if it needs to be combined with one or more of it neighbours. For each segment I compute a set of features and then compare each superpixel pixel with it neighbour and combine based on similarity between one or more of the features. I relabel similar superpixels to the same label, effectively "growing" superpixels. This is what I am refer to as "superpixel region growing".
For me the interesting part is how do I combine the superpixels and what is a good number of superpixels to seed the process. Using various features/properties include texture, moments, orieintations, various feature histograms (normalised) etc. I plan to learn how to combine the superpixels. I also have a corresponding depth values for the image which allows me to use depth features such as average depth, surface normals, local depth patterns.
I like the superpixel algorithms because of the boundary preserving property of most superpixel algorithms. Intuitively it also feel like I have the complexity of the image form MxN pixels to K superpixels, where K < MxN. In most cases traversing the "simple" graph is quicker than traversing each pixel in the image. Although in the extreme case where K approaches MxN this is not the case.