diff --git a/Synthetic Image Generator/poly_fit.m b/Synthetic Image Generator/poly_fit.m
new file mode 100644
index 0000000000000000000000000000000000000000..7a45c848feb79f7424a84b3c486f573ffff52149
--- /dev/null
+++ b/Synthetic Image Generator/poly_fit.m	
@@ -0,0 +1,42 @@
+function [calib_X,calib_Y,model] = poly_fit(Coord)
+
+% This function opens a coordinates file for a camera, obtained from the 
+% function retrieve_marker_coord.m and computes a polynomial between
+% image plane coordinates [in pixels] and object plane coordinates [in mm]. 
+% The coefficients of the polynomial are then returned in 2 matrices corresponding
+% to X and Y for the camera. 
+% The polynomial is 3rd order in x and y direction and linear in z
+% direction
+% 
+% 3rd order polynomial is in the form:
+% x3 + y3 + x2 + y2 + x + y + x2y + xy2 + xy + z + constant
+% Coefficients are given in the same order
+%
+% INPUT VARIABLES:
+% Coord  = Image and object plane coordinates for the camera
+%
+% OUTPUT VARIABLES:
+% calib_X  = Polynomial properties for X coord
+% calib_Y  = Polynomial properties for Y coord
+%
+%--------------------------------------------------------------------------
+%
+% Version 1.0
+% Girish K. Jankee (28 January 2018)
+%--------------------------------------------------------------------------
+%% MAIN CODE
+model = @(F,mat) F(1).*mat(:,1).^3 + F(2).*(mat(:,2).^3) + F(3).*mat(:,1).^2 + ...
+    F(4).*mat(:,2).^2 + F(5).*mat(:,1) + F(6).*mat(:,2) + F(7).*(mat(:,1).^2).*mat(:,2) +...
+    F(8).*mat(:,1).*(mat(:,2).^2) + F(9).*mat(:,1).*mat(:,2) + F(10).*mat(:,3) + F(11);  % Model form of polynomial fit
+% keyboard
+ini = ones(1,11); % Initial conditions
+X = zeros(1,11);
+Y = zeros(1,11);
+[X,Rx,Jx,COVBx,MSEx] = nlinfit(Coord(:,3:5),Coord(:,1), model, ini); % returns a vector of estimated coefficients for the nonlinear regression
+[Y,Ry,Jy,COVBy,MSEy] = nlinfit(Coord(:,3:5),Coord(:,2), model, ini); % The coefficients are estimated using iterative least squares estimation
+% disp(model(X,[0,0,100,0,0]))
+% disp(std(Rx))
+% disp(std(Ry))
+calib_X = X; 
+calib_Y = Y;
+