Find nanoparticles
I need some help. I have this sample:
which is a piece of plastic with some nanoparticles insi开发者_如何学JAVAde (you can see the small black dots). Can someone help me figure out a quick and dirty algorithm where I can find the particles and color them in another color.
Quick and dirty... OK :)
- [optional] blur it even more
- find local minimums which:
- are <= any neighbour in some radius (the radius should be close to expected radius of a particle)
- 2.2. are <= (average-threshold), this threshold is for filtering out false detections due to noise
You say quick 'n dirty, but given this is matlab you probably won't notice a difference between the best solution and a "quick and dirty one". Here is what is probably straight-up the best way to accomplish the task: Scale-space blob detection. Using the laplacian method is the simplest.
Start by Gaussian-blurring you image with a sigma close to that of your expected nano particle standard deviation: IE a quarter of its screen width.
Then your blobs will be the points where the Laplacian is most-negative; ensuring that it has greater magnitude than its surrounding points followed by a simple thresholding will do. To see how to implement this in matlab go to:
http://dl.acm.org/citation.cfm?id=363419.363423
It will only be about 10 lines of code.
Also, remember to work on a logarithmic (decibel) scale as you are dealing with transmission rather than reflection.
This isn't in Matlab, but the WolframBlog covered something like this for Mathematica and it may suit your needs.
精彩评论