|||
Method 1: directly find the point that is smaller than its neighbours
Cons: seems to be hard cut-off and not very flexible
1. use matlab function BW = imregionalmax(I,conn), where conn defines the connected neighbours around a local minimum point, conn can be 4 or 8 in 2D situation http://au.mathworks.com/help/images/ref/imregionalmax.html#inputarg_conn
Comment: I think it is a little bit lack of flexibility, for example, what if the size of local minimum changes in a wide range and thus even 8 connected neighbours are not enough. Or what if the noisy pixel is in the neighbours that the center point is bigger than the nosie?
2 Raphael's method: based on a paper, energy function optimization method
2. Raphael's idea: first find the local minimum point (similar to using imregionalmax), then delet the noisy points
Method 2 Boundary-based method/ image segmentation method
Idea: find the boundary of a local cluster, which contains a local minimum.
1. bw = activecontour(A,mask,method)
Comment: snake contour and active contour are similar
Can we try using watershed algorithm, which is also a dilation algorith,?
2. errosion and expasion
Method 3 signal processing methods: for example, detect valleys in 1-D/2D signals
Idea: The common way is to first smooth the whole picture, so as to get rid of noise, and then find local minimum.
Cons: But after smoothing, the location of local minimum in the smoothed map will probably be differnt from the locations in the original map
1. http://www.mathworks.com/matlabcentral/fileexchange/37388-fast-2d-peak-finder
Cons: This algorithm only consider 1-pixel noise, which is not true
2. http://blogs.mathworks.com/pick/2008/05/09/finding-local-extrema/ find valleys in a 1D signal
P.S. refer to http://au.mathworks.com/matlabcentral/newsreader/view_thread/102944 for more answers
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-3 11:41
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社