A method for constructing a 3D structure, the method comprising: receiving, by a processor, a stream of images captured from a plurality of viewpoints, wherein the stream of images has timestamps associated, and wherein the stream of images is captured by a user device upon determining a motion of the user device; creating, by the processor, a plurality of image sub-groups from the stream of images based upon the timestamps; extracting, by the processor, features from each image sub-group of the plurality of image sub-groups; generating, by the processor, point correspondences, in parallel, between images present in the image sub-group based upon the features; computing, by the processor, epipolar geometry of the image sub-group, wherein the epipolar geometry is computed for each image sub-group in parallel, and wherein the epipolar geometry of the image sub-groups comprises a fundamental matrix and an essential matrix, wherein the essential matrix is a calibrated version of the fundamental matrix and equals the fundamental matrix multiplied with an intrinsic matrix, wherein the intrinsic matrix comprises camera parameters of the user device; filtering, by the processor, false point correspondences from the point correspondences using the epipolar geometry to generate filtered point correspondences; generating, by the processor, 3D points corresponding to each of the image sub-groups, in parallel, by employing a triangulation technique on the filtered point correspondences related to each of the image sub-groups, wherein the 3D points represent one or more 3D structures; and registering, by the processor, the one or more 3D structures for each image subgroup to generate a registered 3D structure, wherein the registered 3D structure is generated based upon a scale correction and a rigid transformation between the one or more 3D structures, and wherein the rigid transformation involves calculation of a rotation, a translation, and a centroid for the one or more 3D structures. receiving, by a processor, a stream of images captured from a plurality of viewpoints, wherein the stream of images has timestamps associated, and wherein the stream of images is captured by a user device upon determining a motion of the user device; creating, by the processor, a plurality of image sub-groups from the stream of images based upon the timestamps; extracting, by the processor, features from each image sub-group of the plurality of image sub-groups; generating, by the processor, point correspondences, in parallel, between images present in the image sub-group based upon the features; computing, by the processor, epipolar geometry of the image sub-group, wherein the epipolar geometry is computed for each image sub-group in parallel, and wherein the epipolar geometry of the image sub-groups comprises a fundamental matrix and an essential matrix, wherein the essential matrix is a calibrated version of the fundamental matrix and equals the fundamental matrix multiplied with an intrinsic matrix, wherein the intrinsic matrix comprises camera parameters of the user device; filtering, by the processor, false point correspondences from the point correspondences using the epipolar geometry to generate filtered point correspondences; generating, by the processor, 3D points corresponding to each of the image sub-groups, in parallel, by employing a triangulation technique on the filtered point correspondences related to each of the image sub-groups, wherein the 3D points represent one or more 3D structures; and registering, by the processor, the one or more 3D structures for each image subgroup to generate a registered 3D structure, wherein the registered 3D structure is generated based upon a scale correction and a rigid transformation between the one or more 3D structures, and wherein the rigid transformation involves calculation of a rotation, a translation, and a centroid for the one or more 3D structures.