I am creating a image mean shift segmentation algorithm for a class. So far what I've done is basically
- Iterate through each point/pixel on the image and with a given bandwidth(radius) calculate the mean in that bandwidth. When I have the mean I do this again but starting at the point that has the value closest to the mean in that last bandwidth area. I do this until there is a a convergence(basically where isn't much of of an update change from the last iteration). I save this new pixel value and basically create a new image through this by doing this to every pixel in our original image.
- Then I do a clustering of these points. Meaning with all the new points I have, I sort them, then then put them in divided ranges. Having those ranges I go back to my pixel values I created from part one and put assign them to a range that they fit in.
I have a couple of confusions.
- I don't understand how if we added in stage 1 a Gaussian kernel help. We still create a mean and then update mean location each iteration?
I think I am confused how the Gaussian Kernel is used and calculated. Say within our bandwidth area, we calculate the mean and standard deviation. Then we assign probability to each point with that given Gaussian distribution, and update our new point with the highest probability?