# How to convert a binary 3d matrix to mesh.

43 views (last 30 days)
MG Poirot on 29 Apr 2016
Commented: Md Nurul Karim on 19 Nov 2019
I have a 3D binary matrix with 1 being filled volume, and 0 being empty. For example I've added a representation of this matrix filled with a sphere but the matrix could also have been filled with irregular content.
I would like to construct a mesh from 3D binary matrix volume, how would I go about it?
I have come across the isosurf function, but I was not sure if it was applicable or how to get my data in the right format.
Thanks.

Mike Garrity on 29 Apr 2016
Yes, I would think that isosurface is the first thing to try. Just give it the 3D array and an isolevel of 1/2. It'll use linear interpolation to put a surface down the middle of where the 1's and 0's meet.
[x,y,z] = ndgrid(-1:.05:1);
v = sqrt(x.^2+y.^2+z.^2) < .5;
isosurface(v,1/2)
As you can see, the result can be a little lumpy.
If you want your mesh to follow the grid without any interpolation, then you'll probably want a different approach.
Xander May on 5 Jun 2017
Karima, it would seem your 3D object does not have a 'Surface' anywhere besides what you are seeing. The ISOSURFACE function creates a mesh of the surface of an object, but because your object only has a surface where the interior walls of the canyon are, with other thigns extending out of the view window, that is the only part ISOSURFACE is able to render

### More Answers (1)

Noor Aamer on 4 May 2018
How can I get a 3D binary image from 2D binary image?
##### 1 CommentShowHide None
Md Nurul Karim on 19 Nov 2019
Just stack the 2D binary images on top of each other and make a 3D binary matrix.
then you can watch it in Volume viewer app.
You can also extract surface out of it.