function newFilename = reorganizeVectors(filenameAbs, filenameRel); % Version 0.1, Feb 2006. % This code is copyrighted by Ashutosh Saxena, Stanford University % It is available for non-commercial use only. For commericial use, please % contact the authors. % Any publication or report resulting from Use of this code, should cite: % Learning Depth from Single Monocular Images, Ashutosh Saxena, Sung H. Chung, Andrew Y. Ng, NIPS 2005. % 3-D Depth Reconstruction from a Single Still Image, Ashutosh Saxena, Sung H. Chung, Andrew Y. Ng, To appear in IJCV 2007. % For more info and dataset, visit: http://ai.stanford.edu/~asaxena/learningdepth/ % For a better version of the algorithm, also visit: % http://ai.stanford.edu/~asaxena/reconstruction3d/ % For learning purposes, the features / depths are needed in the vector format; while % for viewing they need to be in matrix (to see it as a image). % This code converts between them. % Used somewhere in the learnig code load(filenameAbs); global nThetaStep nGridRow nGridCol configurationFile; nImages = size(dumbDepthVector,1) / nThetaStep / nGridCol; dumbDepthVector = reshape(dumbDepthVector, [nThetaStep nGridCol nImages nGridRow]); dumbDepthVector = reshape(permute(dumbDepthVector(:,:,:,1:nThetaStep:nGridRow), [1 4 2 3]), ... [2*ceil(nGridRow/2) nGridCol nImages]); dumbDepthVector = dumbDepthVector(1:nGridRow,:,:); predictedDepthVector = reshape(predictedDepthVector, [nThetaStep nGridCol nImages nGridRow]); predictedDepthVector = reshape(permute(predictedDepthVector(:,:,:,1:nThetaStep:nGridRow), [1 4 2 3]), ... [2*ceil(nGridRow/2) nGridCol nImages]); predictedDepthVector = predictedDepthVector(1:nGridRow,:,:); predictedAbsoluteVarianceVector = reshape(predictedAbsoluteVarianceVector, [nThetaStep nGridCol nImages nGridRow]); predictedAbsoluteVarianceVector = reshape(permute(predictedAbsoluteVarianceVector(:,:,:,1:nThetaStep:nGridRow), [1 4 2 3]), ... [2*ceil(nGridRow/2) nGridCol nImages]); predictedAbsoluteVarianceVector = predictedAbsoluteVarianceVector(1:nGridRow,:,:); dumbDepthVector = reshape( permute(dumbDepthVector, [2 3 1]), nGridCol*nImages,nGridRow); predictedDepthVector = reshape( permute(predictedDepthVector, [2 3 1]), nGridCol*nImages,nGridRow); predictedAbsoluteVarianceVector = reshape( permute(predictedAbsoluteVarianceVector, [2 3 1]), nGridCol*nImages,nGridRow); if length(filenameRel) > 0 load(filenameRel); predictedDepthVectorX = reshape(predictedDepthVectorX, [nThetaStep nGridCol nImages nGridRow]); predictedDepthVectorX = reshape(permute(predictedDepthVectorX(:,:,:,1:nThetaStep:nGridRow), [1 4 2 3]), ... [2*ceil(nGridRow/2) nGridCol nImages]); predictedDepthVectorX = predictedDepthVectorX(1:nGridRow,:,:); predictedDepthVectorY = reshape(predictedDepthVectorY, [nThetaStep nGridCol nImages nGridRow]); predictedDepthVectorY = reshape(permute(predictedDepthVectorY(:,:,:,1:nThetaStep:nGridRow), [1 4 2 3]), ... [2*ceil(nGridRow/2) nGridCol nImages]); predictedDepthVectorY = predictedDepthVectorY(1:nGridRow,:,:); size(predictedDepthVectorX_2); predictedDepthVectorX_2 = reshape(predictedDepthVectorX_2, [nThetaStep nGridCol nImages nGridRow]); predictedDepthVectorX_2 = reshape(permute(predictedDepthVectorX_2(:,:,:,1:nThetaStep:nGridRow), [1 4 2 3]), ... [2*ceil(nGridRow/2) nGridCol nImages]); predictedDepthVectorX_2 = predictedDepthVectorX_2(1:nGridRow,:,:); predictedDepthVectorY_2 = reshape(predictedDepthVectorY_2, [nThetaStep nGridCol nImages nGridRow]); predictedDepthVectorY_2 = reshape(permute(predictedDepthVectorY_2(:,:,:,1:nThetaStep:nGridRow), [1 4 2 3]), ... [2*ceil(nGridRow/2) nGridCol nImages]); predictedDepthVectorY_2 = predictedDepthVectorY_2(1:nGridRow,:,:); %predictedDepthVectorX_5 = reshape(predictedDepthVectorX_5, [nThetaStep nGridCol nImages nGridRow]); %predictedDepthVectorX_5 = reshape(permute(predictedDepthVectorX_5(:,:,:,1:nThetaStep:nGridRow), [1 4 2 3]), ... % [2*ceil(nGridRow/2) nGridCol nImages]); %predictedDepthVectorX_5 = predictedDepthVectorX_5(1:nGridRow,:,:); %predictedDepthVectorY_5 = reshape(predictedDepthVectorY_5, [nThetaStep nGridCol nImages nGridRow]); %predictedDepthVectorY_5 = reshape(permute(predictedDepthVectorY_5(:,:,:,1:nThetaStep:nGridRow), [1 4 2 3]), ... % [2*ceil(nGridRow/2) nGridCol nImages]); %predictedDepthVectorY_5 = predictedDepthVectorY_5(1:nGridRow,:,:); %residualAbsError; %residualRelErrorX; %residualRelErrorX_2; %residualRelErrorX_5; %residualRelErrorY; %residualRelErrorY_2; %residualRelErrorY_5; predictedDepthVectorX = reshape( permute(predictedDepthVectorX, [2 3 1]), nGridCol*nImages,nGridRow); predictedDepthVectorY = reshape( permute(predictedDepthVectorY, [2 3 1]), nGridCol*nImages,nGridRow); predictedDepthVectorX_2 = reshape( permute(predictedDepthVectorX_2, [2 3 1]), nGridCol*nImages,nGridRow); predictedDepthVectorY_2 = reshape( permute(predictedDepthVectorY_2, [2 3 1]), nGridCol*nImages,nGridRow); else predictedDepthVectorX = 0; predictedDepthVectorY = 0; predictedDepthVectorX_2 = 0; predictedDepthVectorY_2 = 0; residualRelErrorX = 0; residualRelErrorY = 0; residualRelErrorX_2 = 0; residualRelErrorY_2 = 0; end %predictedDepthVectorX_5 = reshape( permute(predictedDepthVectorX_5, [2 3 1]), nGridCol*nImages,nGridRow); %predictedDepthVectorY_5 = reshape( permute(predictedDepthVectorY_5, [2 3 1]), nGridCol*nImages,nGridRow); newFilename = ['reorganized_' filenameAbs]; save(newFilename, 'predictedDepthVector', 'predictedDepthVectorX', 'predictedDepthVectorY', ... 'predictedDepthVectorX_2', 'predictedDepthVectorY_2', 'actualDepthMap', 'dumbDepthVector', ... 'residualRelErrorX', 'residualRelErrorY', 'residualRelErrorX_2', 'residualRelErrorY_2', ... 'residualAbsError', 'predictedAbsoluteVarianceVector'); disp('Reorganization done.......');