How to fill a hole for 3D image when the hole is not fully covered?

25 次查看(过去 30 天)
Hi,
I have generated some 3d structure of few particles based on 3D binary images. These particles have multiples holes insides and I want to fill all the holes so the particles will be totally solid. Now I can get porosity by using 1-((volume before filling the hole)/(volume after filling the hole)). however, some of holes are not fully covered due do cracks on the particle surface. For the small uncovered holes, I can use imclose first and then imfill to fill the hole without changing particle shape too much. But for the large holes, I have to make radius for imclose very large to cover the hole for imfill to fill. In this case, the particle volume changes a lot and affect the accuracy for porosity calculation. Another problem is I have to manually set up the radius for imclose for each particle since they have different hole size.
So, I am thinking about to use bwconvhull which seems working good for 2D image to fill the big hole and no parameters to set up. But this function is only working for 2D, I am wondering is there similar function for 3D image?
Another thought is there any fucntions can detect if the hole is fully covered or if there is no cracks on the solid surface? If so, maybe I can set up a iteration to automatically increase the radius of imclose until it can make large holes be covered.
Thanks!

采纳的回答

Keerthana Chiruvolu
Hi,
You can use the bwmorph3() function to fill holes in the 3D image. Further, to measure the properpties of a 3D image use regionprops3() function.
Alternately, you can also create a 3D image using the alphaShape() function.
Refer the link, for more information on a similar case.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 3-D Volumetric Image Processing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by