Skip to content
Snippets Groups Projects
Commit 3ef06d9d authored by gkj1g12's avatar gkj1g12
Browse files

Upload New File

parent d8665867
No related branches found
No related tags found
No related merge requests found
function [ini,Cam1]= volume_gen(sizex,sizey,sizez,numP,Transform,Calib_type)
% This function generates a volume sizex x sizey x sizez with number of
% particles specified by numP.
%
% INPUT VARIABLES:
% sizex = size of volume in the spanwise direction
% sizey = size of volume in the wall-normal direction
% sizez = size of volume in the streamwise direction
% numP = total number of particles in the volume
% Transform = structure which contains left and right camera transformation from projection matrix
% Calib_type = Type of calibration whether 3rd order polynomial or Camera pinhole model
%
% OUTPUT VARIABLES:
% ini = Initial coordinates of particles in object plane
% Cam1 = Corresponding coordinates of particles in image plane of camera
%
%--------------------------------------------------------------------------
%
% Version 1.0
% Girish K. Jankee (28 January 2018)
%--------------------------------------------------------------------------
%% Generate random coordinates of the particles
ini.X1 = sizex.*rand(numP,1)-sizex./2;
ini.Y1 = sizey.*rand(numP,1);
ini.Z1 = sizez.*rand(numP,1)-sizez./2;
if Calib_type == 1
% Apply the transformation matrix to the generated points
% Left camera
[Cam1.L.X2,Cam1.L.Y2] = apply_poly(ini,Transform.Leftcam);
% Right camera
[Cam1.R.X2,Cam1.R.Y2] = apply_poly(ini,Transform.Rightcam);
else
% Count rows and columns in the original image
[num_rows, num_cols,depth] = size(ini.X1);
% Apply the transformation matrix to the shifted points
% Left camera
Trans.Left = Transform.Leftcam * [(ini.X1(:))'; (ini.Y1(:))'; (ini.Z1(:))'; ones(1,numel(ini.X1))];
% Right camera
Trans.Right = Transform.Rightcam * [(ini.X1(:))'; (ini.Y1(:))'; (ini.Z1(:))'; ones(1,numel(ini.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
Cam1.L.X2 = reshape(Trans.Left(1, :),[num_rows, num_cols, depth])./Lambda.L;
Cam1.R.X2 = reshape(Trans.Right(1, :),[num_rows, num_cols, depth])./Lambda.R;
% Y coordinate
Cam1.L.Y2 = reshape(Trans.Left(2, :),[num_rows, num_cols, depth])./Lambda.L;
Cam1.R.Y2 = reshape(Trans.Right(2, :),[num_rows, num_cols, depth])./Lambda.R;
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment