Many current geometric modeling systems use the rational parametric form to represent surfaces. Although the parametric representation is useful for tracing, rendering and surface fitting, many operations like surface intersection desire one of the surfaces to be represented implicitly. Moreover, the implicit representation can be used for testing whether a point lies on the surface boundary and to represent an object as a semi-algebraic set. Previously resultants and Gröbner bases have been used to implicitize parametric surfaces. In particular, different formulations of resultants have been used to implicitize tensor product surfaces and triangular patches and in many cases the resulting expression contains and extraneous factor. The separation of these extraneous factors can be a time consuming task involving multivariate factorization. Furthermore, these algorithms fail altogether if the given parametrization has base points. In this paper we present an algorithm to implicitize parametric surfaces. One of the advantages of the algorithm is that we do not need multivariate factorization. If a parametrization has no base points, the implicit representation can be represented as a determinant of a matrix, otherwise we use perturbation techniques. In the latter case we make use of GCD operation to compute the implicit representation. We also describe an efficient implementation of the algorithm based on interpolation techniques.