diff --git a/Synthetic Image Generator/volume_gen2.m b/Synthetic Image Generator/volume_gen2.m new file mode 100644 index 0000000000000000000000000000000000000000..8c67e5ec3422ece5867807197ea636a128fac2fa --- /dev/null +++ b/Synthetic Image Generator/volume_gen2.m @@ -0,0 +1,37 @@ +function [disp,Cam2]= volume_gen2(disp,Transform,Calib_type) + +if Calib_type == 1 + + % Apply the transformation matrix to the generated points + % Left camera + [Cam2.L.X2,Cam2.L.Y2] = apply_poly(disp,Transform.Leftcam); + + % Right camera + [Cam2.R.X2,Cam2.R.Y2] = apply_poly(disp,Transform.Rightcam); + +else + % Count rows and columns in the original image + [num_rows, num_cols,depth] = size(disp.X1); + + % Apply the transformation matrix to the shifted points + % Left camera + Trans.Left = Transform.Leftcam * [(disp.X1(:))'; (disp.Y1(:))'; (disp.Z1(:))'; ones(1,numel(disp.X1))]; + + % Right camera + Trans.Right = Transform.Rightcam * [(disp.X1(:))'; (disp.Y1(:))'; (disp.Z1(:))'; ones(1,numel(disp.X1))]; + + % Find the scaling factor + Lambda.L = reshape(Trans.Left(3, :),[num_rows, num_cols, depth]); + Lambda.R = reshape(Trans.Right(3, :),[num_rows, num_cols, depth]); + + % Compute corresponding coordinates in image plane + % X-coordinate + Cam2.L.X2 = reshape(Trans.Left(1, :),[num_rows, num_cols, depth])./Lambda.L; + Cam2.R.X2 = reshape(Trans.Right(1, :),[num_rows, num_cols, depth])./Lambda.R; + + % Y coordinate + Cam2.L.Y2 = reshape(Trans.Left(2, :),[num_rows, num_cols, depth])./Lambda.L; + Cam2.R.Y2 = reshape(Trans.Right(2, :),[num_rows, num_cols, depth])./Lambda.R; +end + +