A computer-implemented method for feature extraction from electronic images, comprising: obtaining an electronic image of an object; performing an edge detection algorithm on the electronic image to obtain a first set of edges corresponding to the object; performing an edge pooling algorithm on the first set of edges to obtain a second set of edges, the second set of edges being less in number than the first set of edges; sampling the second set of edges to obtain a set of edge patches based on the second set of edges; sampling electronic image to obtain a set of color patches from the electronic image; sampling electronic image to obtain a set of texture patches from the electronic image; selecting a set of patches from the set of edge patches, the set of color patches and the set of texture patches by selecting an (I th + 1) patch to be within the set of patches based on a Euclidean distance from an patch of the set of patches for each of the set of edge patches, the set of color patches and the set of texture patches; performing a part selection algorithm on the selected set of patches to obtain a first set of parts; performing a part pooling algorithm on the first set of parts to obtain a second set of parts, the second set of parts being less in number than the first set of parts, wherein the part pooling algorithm includes: (i) dividing each of the first set of parts into a number of subparts; and (ii) performing a MAX operation on each of the subparts; and associating the second set of parts to the object; wherein selecting the (I th + 1) patch based on the Euclidean distance from the patch comprises selecting the (I th + 1) patch if the Euclidean distance between the patch and the (I th + 1) patch is greater than or equal to a Euclidean distance between the patch and all other patches. obtaining an electronic image of an object; performing an edge detection algorithm on the electronic image to obtain a first set of edges corresponding to the object; performing an edge pooling algorithm on the first set of edges to obtain a second set of edges, the second set of edges being less in number than the first set of edges; sampling the second set of edges to obtain a set of edge patches based on the second set of edges; sampling electronic image to obtain a set of color patches from the electronic image; sampling electronic image to obtain a set of texture patches from the electronic image; selecting a set of patches from the set of edge patches, the set of color patches and the set of texture patches by selecting an (I th + 1) patch to be within the set of patches based on a Euclidean distance from an patch of the set of patches for each of the set of edge patches, the set of color patches and the set of texture patches; performing a part selection algorithm on the selected set of patches to obtain a first set of parts; performing a part pooling algorithm on the first set of parts to obtain a second set of parts, the second set of parts being less in number than the first set of parts, wherein the part pooling algorithm includes: (i) dividing each of the first set of parts into a number of subparts; and (ii) performing a MAX operation on each of the subparts; and associating the second set of parts to the object; wherein selecting the (I th + 1) patch based on the Euclidean distance from the patch comprises selecting the (I th + 1) patch if the Euclidean distance between the patch and the (I th + 1) patch is greater than or equal to a Euclidean distance between the patch and all other patches.