Is there a command like surface detection similar to edge detection

3 次查看(过去 30 天)
I have to get the surface detection of the pores in the rock n get the volume of the individual rocks...I was able to get that in 2d.applied the edge detection n then the region props to get the area,perimeter,centroid n diff properties..now want some volume properties in 3D...Is there a command like surface detection similar to edge detection in matlab..

回答(1 个)

Sean de Wolski
Sean de Wolski 2011-4-13
  1. Edge detection on each slice along the 3rd dimension;
  2. Permute it so the third dimension is the first dimension: I2 =permute(I,[3 2 1]);
  3. Recompute the edge of each slice, store in a second volume.
  4. Fill all edges using imfill(bw,'holes') in both volumes
  5. Inverse permute the second volume so it's in the same axes as the first: M2 = ipermute(M2,[3 2 1]);
  6. Logical AND on the whole deal to keep only objects contained in both views of the image volume. This will cut out the non-convex portions of either view: M = M1&M2;
  7. Since you only want the surface; invert your binary image and compute the distance transform: D = bwdist(~M)
  8. Keep voxels on the surface: surface_voxels = D<1.5;

Community Treasure Hunt

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

Start Hunting!

Translated by