1. A method of obtaining data from a 2D (two-dimensional) image in order to determine the 3D (three-dimensional) shape of objects appearing in said 2D image, said method comprising: providing a first bi-dimensional coded light pattern having a plurality of feature types, each feature type being distinguishable according to a unique bi-dimensional formation and each feature type comprising a plurality of elements having varying light intensity, wherein said plurality of elements comprises: at least one maximum element; at least one minimum element; and at least one saddle element; providing a second bi-dimensional coded light pattern which is the same as said first bi-dimensional coded light pattern with the one or more maximum and/or minimum elements inverted to minimum or maximum and in which the at least one saddle element remains unchanged, respectively; projecting said first bi-dimensional coded light pattern and said second bi-dimensional coded light pattern on said objects; capturing: i) a first 2D image of said objects, having said first projected bi-dimensional coded light pattern projected thereupon, said first 2D image comprising reflected said feature types; and ii) a second 2D image of said objects, having said second bi-dimensional coded light pattern projected thereupon, said second 2D image comprising reflected said feature types; obtaining a resultant image from the subtraction of said second 2D image from said first 2D image, the resultant image comprising maximum, minimum and saddle points resulting from the subtraction; and extracting from said resultant image, feature types' elements locations in said first and/or second image, based on the maximum, saddle and/or minimum elements locations in said resultant image.