Prev: Using outputfcn for ode15i with length(tspan) > 2
Next: Fitting Beta/Triangular Distribution Using Generalized Pareto Distribution
From: ImageAnalyst on 26 Mar 2010 15:44 On Mar 26, 4:49 am, "Israel Johnson" <mconvers...(a)gmail.com> wrote: > I have a 3D binary matrix. The ones form a complete cluster within a sea of zeros. I need to find the surface area of the cluster. My initial plan was to use regionprops(M(:,:,i),'Perimeter') for all of the slices i=1:n and then multiply by the distance between the slices (rough but good enough). However it seems that when I put the perimeter function in a loop that it only tracks the final slice. > > There should be a better way. Summing triangles w/ vertices? But I really have no idea how to tackle that either. Any help. Thanks -------------------------------------------------------------------------------------------------- Even though there's a 3D labeling routine, bwlabeln(), there does not appear to be a 3D regionprops equivalent for perimeter - in other words, there's no surface area. In 3D the "Area" measurement of regionprops should be a voxel count. So what I'd do is to make a shell of your objects by eroding your 3D image a layer with imerode and subtracting it from the original. This will give you the shell, or outer layer, of your objects. Then just call bwlabeln() followed by regionprops(), and look at the Area measurement. This will actually be the voxel count of your shell which is just the surface area. Or go to Steve Eddins blob and ask him. http://blogs.mathworks.com/steve/ Good luck, ImageAnalyst |