Share a usage to get every labeled 3d object's surface area

As the regionprops did not give the 3d object’s surface area, I use the code below to to count it. Here I share it to everyone:

lab, n = ndimg.label(arr3d)
lab[find_boundaries(lab, mode='outer')] = 0
vts, fs, ns, cs = marching_cubes_lewiner(lab, level=0)

lst = [[] for i in range(n+1)]
for i in fs: lst[int(cs[i[0]])].append(i)
areas = [0 if len(i)==0 else mesh_surface_area(vts, i) for i in lst]

And any better method or advice is welcom!