This work addresses the problem of finding surfaces in 3-D images. This problem involves segmentation and parameterization. The solution method we propose is designed to answer the following questions: (1) Is a point (x,y,z) in 3-space a surface point? (2) If so, what is the surface normal at that point, and (3) What are the neighboring voxels in the u and v directions on the surface? We use a labeling scheme to define a surface element, at a point, in (u, v) directions. By restricting the neighborhood volume at a point, we have a small set of labels in u and v directions. A cost functional is set up, in terms of surface normal and labels at a point, following the calculus of variations methodology. Estimation of surface normal at a point depends on normals at neighboring points and label connectivity criteria defined. This also facilitates handling of surfaces that are not smoothly varying. The final solution is found by finding the set of normal and labels at every point that minimize the cost functional. Finally, we apply our method to find surfaces in 3-D synthetic and medical image data.