Segmentation of 3D image based on intensity

10 次查看(过去 30 天)
Dear all,
I am trying to segment active brain areas. For this, I have a grid in the brain and in each gridpoint I have a certain power or intensity. A scatter plot of the gridpoints with color and size relative to this power can be seen below.
As you can see, there are clearly three or four clusters of higher activity. I would like to automatically segment those clusters. I already tried watershed, but with all connectivity options, almost everything was segmented in the same cluster.
Is there an easy solution to tackle this problem?
Many thanks in advance!

回答(3 个)

Image Analyst
Image Analyst 2015-4-28
Do you have a list of x,y,z coordinates? Or an image? If you have a list of coordinates, loop and turn them into an image. Then you can segment based on intensity simply:
binaryImage = grayImage >= lowThreshold & grayImage <= highThreshold;
See my Image Segmentation Tutorial for more details: http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862
  3 个评论
Image Analyst
Image Analyst 2015-4-28
So just figure out what the thresholds should be. It will still be "automatic" - whatever that means. Either YOU or "some algorithm" needs to figure out what the thresholds needs to be. So you either hard code in some constant, or develop a function to figure out what the value needs to be. They will still be labeled correctly even if they touch if you do intensity based thresholding.
[labeledImage, numRegions] = bwlabel(binaryImage);
Francisco José Torcal-Milla
Hi, great tutorial!!
Have you any idea about extending it to 3D images?
Thanks!

请先登录,再进行评论。


raym
raym 2018-2-25
you can use Imaris to load the data and make surfaces there. There is an option called splitting touching object.

Wenxu Sun
Wenxu Sun 2018-5-30

Community Treasure Hunt

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

Start Hunting!

Translated by