function permutedDepthMaps = makeAppendedRangedDepths(rownumber, image, scales, offset) % 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, visit: http://ai.stanford.edu/~asaxena/learningdepth/ global nGridRow relativeFeatureDirectory configurationFile; numscales = length(scales); load([relativeFeatureDirectory 'allTrainingDepthData' num2str(image) '.mat']); numimages = size(allDepthMaps, 3); numcolumns = size(allDepthMaps, 2); %permutedDepthMaps = zeros(1, numcolumns, ... % 5*(numscales-1)+1, numimages); permutedDepthMaps = zeros(1, numcolumns, 3*numscales, numimages); for i=1:numscales curscale = scales(i); if curscale == 4 curscale = 1; end if curscale > 0 % offset = (curscale - 1)*2 + 1; toprow = rownumber - offset; botrow = rownumber + offset; if toprow < 1 toprow = 1; elseif botrow > nGridRow botrow = nGridRow; end topborder = rownumber - (curscale - 1); botborder = rownumber + (curscale - 1); if topborder < 1 topborder = 1; elseif botborder > nGridRow botborder = nGridRow; end numrows = botborder - topborder + 1; tempoffset = (curscale - 1)*2 + 1; % avgft = ones(1, offset); avgft = ones(1, tempoffset); denom = ones(1, numcolumns); denom = conv2(denom, avgft, 'same'); % The average depth at the center for k=1:numimages permutedDepthMaps(1, :, (3*(i-1)+1), k) = ... conv2(sum(allDepthMaps(topborder:botborder, :, k),1), avgft, ... 'same') ./ (denom * numrows); end % topborder = toprow - (curscale - 1); % botborder = toprow + (curscale - 1); % if topborder < 1 % topborder = 1; % elseif botborder > nGridRow % botborder = nGridRow; % end % numrows = botborder - topborder + 1; % The average depth at the top % for k=1:numimages % permutedDepthMaps(1, :, (5*(i-1)+2), k) = ... % conv2(sum(allDepthMaps(topborder:botborder, :, k),1), avgft, ... % 'same') ./ (denom * numrows); % end topborder = botrow - (curscale - 1); botborder = botrow + (curscale - 1); if topborder < 1 topborder = 1; elseif botborder > nGridRow botborder = nGridRow; end numrows = botborder - topborder + 1; % The average depth at the bottom for k=1:numimages permutedDepthMaps(1, :, (3*(i-1)+2), k) = ... conv2(sum(allDepthMaps(topborder:botborder, :, k),1), avgft, ... 'same') ./ (denom * numrows); end topborder = rownumber - (curscale - 1); botborder = rownumber + (curscale - 1); if topborder < 1 topborder = 1; elseif botborder > nGridRow botborder = nGridRow; end numrows = botborder - topborder + 1; perm = zeros(1, numcolumns); % for j=1:numcolumns % if j <= offset % perm(1, j) = 1; % else % perm(1, j) = j - offset; % end % end % The average depth at the left % for k=1:numimages % permutedDepthMaps(1, :, (5*(i-1)+4), k) = ... % conv2(sum(allDepthMaps(topborder:botborder,perm,k),1),avgft, ... % 'same') ./ (denom * numrows); % end for j=1:numcolumns if (j + offset) > numcolumns perm(1, j) = numcolumns; else perm(1, j) = j + offset; end end % The average depth at the right for k=1:numimages permutedDepthMaps(1, :, (3*(i-1)+3), k) = ... conv2(sum(allDepthMaps(topborder:botborder,perm,k),1),avgft, ... 'same') ./ (denom * numrows); end end end