A method comprising: projecting, with a projector (112, 212, 702) of an imaging device, a first reference image (116-1, 216-1) and a complementary second reference image (116-2, 216-2, 602) on a scene, wherein the first reference image is a grid of dots and the complementary second reference image is a grid of dropped dots, wherein a set of dots are randomly dropped from the grid of dots to form the grid of dropped dots of the complementary second reference image; capturing, with a camera (114, 214, 710) of the imaging device, first image data including the first reference image projected on the scene, and second image data including the complementary second reference image projected on the scene; with a processing system coupled with the imaging device, using the first image data and second image data to identify dots of the first reference image projected on the scene using dots of the complementary second reference image projected on the scene; performing three dimensional scene reconstruction using the first image data captured by the imaging device based on the identified dots of the first reference image; and generating a 3D image from the 3D scene reconstruction for the image data; wherein identifying dots of the first reference image (116-1, 216-1) using dots of the complementary second reference image (116-2, 216-2, 602) comprises: for each dot in the grid of dots of the first reference image, constructing a corresponding feature vector from nearest neighbor dots from the grid of dropped dots of the complementary second reference image; for each dot from the grid of dots of the first reference image in the first image data, generating a corresponding feature vector from the grid of dropped dots of the complementary second reference image in the second image data; and generating an identification for each dot from the generated feature vectors, the identification of each dot based on a match between the generated feature vector with a corresponding constructed feature vector. projecting, with a projector (112, 212, 702) of an imaging device, a first reference image (116-1, 216-1) and a complementary second reference image (116-2, 216-2, 602) on a scene, wherein the first reference image is a grid of dots and the complementary second reference image is a grid of dropped dots, wherein a set of dots are randomly dropped from the grid of dots to form the grid of dropped dots of the complementary second reference image; capturing, with a camera (114, 214, 710) of the imaging device, first image data including the first reference image projected on the scene, and second image data including the complementary second reference image projected on the scene; with a processing system coupled with the imaging device, using the first image data and second image data to identify dots of the first reference image projected on the scene using dots of the complementary second reference image projected on the scene; performing three dimensional scene reconstruction using the first image data captured by the imaging device based on the identified dots of the first reference image; and generating a 3D image from the 3D scene reconstruction for the image data; wherein identifying dots of the first reference image (116-1, 216-1) using dots of the complementary second reference image (116-2, 216-2, 602) comprises: for each dot in the grid of dots of the first reference image, constructing a corresponding feature vector from nearest neighbor dots from the grid of dropped dots of the complementary second reference image; for each dot from the grid of dots of the first reference image in the first image data, generating a corresponding feature vector from the grid of dropped dots of the complementary second reference image in the second image data; and generating an identification for each dot from the generated feature vectors, the identification of each dot based on a match between the generated feature vector with a corresponding constructed feature vector. for each dot in the grid of dots of the first reference image, constructing a corresponding feature vector from nearest neighbor dots from the grid of dropped dots of the complementary second reference image; for each dot from the grid of dots of the first reference image in the first image data, generating a corresponding feature vector from the grid of dropped dots of the complementary second reference image in the second image data; and generating an identification for each dot from the generated feature vectors, the identification of each dot based on a match between the generated feature vector with a corresponding constructed feature vector.