1. A method for identifying similarities in different images, the method comprising using one or more processors configured to: converting image features of the different images to clusters, wherein one of the different images is a source image and other image is a manipulation of the source image; sorting the clusters based on one or more attributes of the clusters; generating, for each of the different images, a plurality of three-point sets from a selected portion of the sorted clusters, each three-point set defining a triangle; and identifying matching triangles from the different images, wherein corresponding clusters of the matching triangles establish whether there are similarities between the different images, and wherein the other image that is a manipulation of the source image was subject to any combination of the following manipulations: rescaling, warping, distortion, skewing, cropping, rotation, mirroring, recoloring, addition of text or watermark, noise addition, a format change, steganography, and metadata changes.