%preprocess images
image1_uint16 = uint16(65535 * mat2gray(image1));
image2_uint16 = uint16(65535 * mat2gray(image2));
image1_pre = preproc.PIVlab_preproc (image1_uint16,...
preprocess_setting{1,2},...
preprocess_setting{2,2},...
preprocess_setting{3,2},...
preprocess_setting{4,2},...
preprocess_setting{5,2},...
preprocess_setting{6,2},...
preprocess_setting{7,2},...
preprocess_setting{8,2},...
preprocess_setting{9,2},...
preprocess_setting{10,2});
image2_pre = preproc.PIVlab_preproc (image2_uint16,...
preprocess_setting{1,2},...
preprocess_setting{2,2},...
preprocess_setting{3,2},...
preprocess_setting{4,2},...
preprocess_setting{5,2},...
preprocess_setting{6,2},...
preprocess_setting{7,2},...
preprocess_setting{8,2},...
preprocess_setting{9,2},...
preprocess_setting{10,2});
% Perform PIV analysis using the preprocessed images
[x, y, u, v, typevec,corr_map,~] = piv.piv_FFTmulti(image1_pre,image2_pre,... % typevec tells us for the calculation stage the status of the vector. 0 valid, 1 excluded by std test, 2 by median test, 3 interpolated bc of missing data
piv_setting{1,2},...
piv_setting{2,2},...
piv_setting{3,2},...
piv_setting{4,2},...
piv_setting{5,2},...
piv_setting{6,2},...
piv_setting{7,2},...
piv_setting{8,2},...
piv_setting{9,2},...
piv_setting{10,2},...
piv_setting{11,2},...
piv_setting{12,2},...
piv_setting{13,2},0,...
piv_setting{14,2},...
piv_setting{15,2}); %actual PIV analysis
% Postprocessing
[u_filt,v_filt] = postproc.PIVlab_postproc(u,v, ...
posprocess_setting{1,2},...
posprocess_setting{2,2},...
posprocess_setting{3,2},...
posprocess_setting{4,2},...
posprocess_setting{5,2},...
posprocess_setting{6,2},...
posprocess_setting{7,2});
% typevec is not refreshed in the postprocessing stage, so we do it manually.
% Vectors filtered by postprocessing are overwritten with NaN.
typevec_filt = typevec; % initiate
typevec_filt(isnan(u_filt))=2; % overwrite all newly filtered values (now Nan) with 2, although they could also be excluded due to reason 1
typevec_filt(isnan(v_filt))=2;
% typevec_filt(typevec==0)=0; % amin wanted this for some mask... but this will be confusing, because all the vectors which have been excluded in postprocessing will now be marked as normal
% interpolate missing data
if posprocess_setting{8,2}
mask_interp = isnan(u_filt) | isnan(v_filt); % places that were NaN before inpainting
u_filt=misc.inpaint_nans(u_filt,4);
v_filt=misc.inpaint_nans(v_filt,4);
typevec_filt(mask_interp) = 3; % mark as interpolated
end