1. Method of processing an image comprising the steps of (a) obtaining an n-dimensional initial image data set, wherein each element u(m&equals;0) of the data set is the initial image intensity of a point of the image, and wherein n&equals;2 or n&equals;3; (b) calculating for each point the partial derivatives of u(m) in n directions to obtain n derivative data sets of the partial derivatives u xi ; (c) calculating for each point a symmetric n×n structural matrix S, wherein the elements s pq equal u xp ·u xq ; (d) calculating for each point an n×n diffusion matrix D, wherein the elements d ij are a function of the elements s pq ; (e) calculating for each point u(m&plus;1) from u(m) using the following equation u(m&plus;1)&equals;u(m)&plus;c.div(&egr;.Dgrad(u(m))), wherein c is a predetermined constant, 0&lE;c&lE;1, and wherein &egr; is a scalar, 0&lE;&egr;&lE;1, wherein &egr; is close to zero when near an edge and close to 1 when far away from an edge; and (f) repeating steps (b) through (e) M times to obtain the processed image.