function createTrainingSet(featureType, vecFileImages) % This function makes the feature vector and saves it in the .mat directory % 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/ global imageDirectory depthMapDirectory featureDirectory global scale2Factor global nGridCol nGridRow global nDim nLaw scales = [1 2 5 -1 -2]; %resizing_factor = scale*2-1 if nargin < 1 featureType = 'laws'; end %======initializing=========== configurationFile; dirList = dir([imageDirectory 'img-*.jpg']); imageFilename = dirList(1).name; inputImage = imread([imageDirectory imageFilename]); inputImage = permute(inputImage, [2 1 3]); inputImage = inputImage(:,end:-1:1,:); load( [depthMapDirectory 'depth' imageFilename(4:(end-4)) '.mat']); configurationFile(inputImage, depthMap); if nargin < 2 vecFileImages = 1:length(dirList); length(dirList); end allFeatureVector = zeros(nGridRow,nGridCol,nDim*(length(scales)-1), length(vecFileImages)); imageFeatureVector = zeros(1,1,nDim, length(vecFileImages) ); %appenedFeatureVector = zeros(nGridRow, nGridCol, nDim); dataNumber = 0; for n=vecFileImages %1:length(dirList) imageFilename = dirList(n).name; inputImage = imread([imageDirectory imageFilename]); inputImage = permute(inputImage(end:-1:1,:,:), [2 1 3]); %inputImage = inputImage(:,end:-1:1,:); %imshow(inputImage); %featureVector = makeFeatureVector(inputImage, featureType); %=========using multiscale feature vector =========== featureVector = makeHybridFeatureVector(inputImage, featureType, 2, 30, 50, scales); dataNumber = dataNumber + 1; disp(dataNumber); %=======appending the feature vector with its 4-neighbors======= %for r = 1:nGridRow % r_minus = max(1,r-1); % r_plus = min(nGridRow,r+1); % % for c = 2:(nGridCol-1) % appendedFeatureVector(r,c,:) = cat(3, featureVector(r,c,:), featureVector(r_minus,c,:), featureVector(r_plus,c,:), ... % featureVector(r,c-1,:), featureVector(r,c+1,:) ); % end % appendedFeatureVector(r,1,:) = cat(3, featureVector(r,1,:), featureVector(r_minus,1,:), featureVector(r_plus,1,:), ... % featureVector(r,1,:), featureVector(r,1+1,:) ); % appendedFeatureVector(r,nGridCol,:) = cat(3, featureVector(r,nGridCol,:), featureVector(r_minus,nGridCol,:), featureVector(r_plus,nGridCol,:), ... % featureVector(r,nGridCol-1,:), featureVector(r,nGridCol,:) ); %end %=============================================================== %size(appendedFeatureVector); %allFeatureVector(:,:,:,dataNumber) = appendedFeatureVector; allFeatureVector(:,:,:,dataNumber) = featureVector(:,:,1:(nDim*(length(scales)-1)) ); imageFeatureVector(1,1,:,dataNumber) = featureVector(1,1,(1:nDim) + nDim*(length(scales)-1)); clear featureVector; %clear appendedFeatureVector; load( [depthMapDirectory 'depth' imageFilename(4:(end-4)) '.mat']); if size(depthMap,1) ~= nGridRow depthMap = imresize(depthMap, [nGridRow, nGridCol], 'nearest'); end allDepthMaps(:,:,dataNumber) = log(depthMap); %imshow(inputImage); axis square; %figure, imagesc(depthMap); axis square; %size(allFeatureVector) %size(imageFeatureVector) end allFeatureVector = allFeatureVector(:,:,:,1:dataNumber); allDepthmaps = allDepthMaps(:,:,1:dataNumber); save( [featureDirectory 'allTrainingDepthData' num2str(vecFileImages(1)) '.mat'], 'allDepthMaps'); save( [featureDirectory 'allTrainingFeatureData_image' num2str(vecFileImages(1)) '.mat'], 'imageFeatureVector'); for r=1:nGridRow rowFeatureVector = allFeatureVector(r,:,:,:); save( [featureDirectory 'allTrainingFeatureData_row' num2str(r) '_' num2str(vecFileImages(1)) '.mat'], 'rowFeatureVector'); end return;