A method of calibrating a projector with non-uniform distortion characteristics comprising: receiving a first pair of calibration images of a first calibration pattern projected onto a projection surface, wherein each image in the first pair of calibration images is captured from a different perspective, and wherein the first calibration pattern comprises a structured light arrangement having a plurality of pattern elements; detecting the plurality of pattern elements using an image analysis algorithm; determining three-dimensional positions of a subset of the plurality of pattern elements, using a depth detection algorithm; generating a perspective projection matrix based on the three-dimensional positions of the subset of the plurality of pattern elements and the first calibration pattern; characterized by: the subset comprising all of the pattern elements that appear in both images of the first pair of calibration images; and the method further comprising: determining a non-linear mapping function by: comparing the first pair of calibration images and the perspective projection matrix to determine, for each pattern element, a deviation between an estimated position of the pattern element based on the perspective projection matrix and an actual position of the pattern element, determining, for each pattern element, a distortion amount based on the respective deviation, creating a look up table including the distortion amount, and interpolating values within the look up table to increase the number of values within the lookup table. receiving a first pair of calibration images of a first calibration pattern projected onto a projection surface, wherein each image in the first pair of calibration images is captured from a different perspective, and wherein the first calibration pattern comprises a structured light arrangement having a plurality of pattern elements; detecting the plurality of pattern elements using an image analysis algorithm; determining three-dimensional positions of a subset of the plurality of pattern elements, using a depth detection algorithm; generating a perspective projection matrix based on the three-dimensional positions of the subset of the plurality of pattern elements and the first calibration pattern; characterized by: the subset comprising all of the pattern elements that appear in both images of the first pair of calibration images; and the method further comprising: determining a non-linear mapping function by: comparing the first pair of calibration images and the perspective projection matrix to determine, for each pattern element, a deviation between an estimated position of the pattern element based on the perspective projection matrix and an actual position of the pattern element, determining, for each pattern element, a distortion amount based on the respective deviation, creating a look up table including the distortion amount, and interpolating values within the look up table to increase the number of values within the lookup table. comparing the first pair of calibration images and the perspective projection matrix to determine, for each pattern element, a deviation between an estimated position of the pattern element based on the perspective projection matrix and an actual position of the pattern element, determining, for each pattern element, a distortion amount based on the respective deviation, creating a look up table including the distortion amount, and interpolating values within the look up table to increase the number of values within the lookup table.