% * This code was used in the following articles: % * [1] Learning 3-D Scene Structure from a Single Still Image, % * Ashutosh Saxena, Min Sun, Andrew Y. Ng, % * In ICCV workshop on 3D Representation for Recognition (3dRR-07), 2007. % * (best paper) % * [2] 3-D Reconstruction from Sparse Views using Monocular Vision, % * Ashutosh Saxena, Min Sun, Andrew Y. Ng, % * In ICCV workshop on Virtual Representations and Modeling % * of Large-scale environments (VRML), 2007. % * [3] 3-D Depth Reconstruction from a Single Still Image, % * Ashutosh Saxena, Sung H. Chung, Andrew Y. Ng. % * International Journal of Computer Vision (IJCV), Aug 2007. % * [6] Learning Depth from Single Monocular Images, % * Ashutosh Saxena, Sung H. Chung, Andrew Y. Ng. % * In Neural Information Processing Systems (NIPS) 18, 2005. % * % * These articles are available at: % * http://make3d.stanford.edu/publications % * % * We request that you cite the papers [1], [3] and [6] in any of % * your reports that uses this code. % * Further, if you use the code in image3dstiching/ (multiple image version), % * then please cite [2]. % * % * If you use the code in third_party/, then PLEASE CITE and follow the % * LICENSE OF THE CORRESPONDING THIRD PARTY CODE. % * % * Finally, this code is for non-commercial use only. For further % * information and to obtain a copy of the license, see % * % * http://make3d.stanford.edu/publications/code % * % * Also, the software distributed under the License is distributed on an % * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either % * express or implied. See the License for the specific language governing % * permissions and limitations under the License. % * % */ function []=Depth_error_CMU(DepthDirectory, SkyExclude, detail,baseline) global GeneralDataFolder ScratchDataFolder LocalFolder ClusterExecutionDirectory... ImgFolder VertYNuPatch VertYNuDepth HoriXNuPatch HoriXNuDepth a_default b_default Ox_default Oy_default... Horizon_default filename batchSize NuRow_default SegVertYSize SegHoriXSize WeiBatchSize PopUpVertY PopUpHoriX taskName; % prepare report ReportName = [ScratchDataFolder '/result/DepthErrorTable.txt' ]; check = dir(ReportName) DateStamp = date; if isempty(check) disp('is empty') fid = fopen(ReportName, 'w+'); fprintf(fid, '%s %s %s %s %s %s %s\n', DateStamp,'MeanAbsError','RMSError','MeanAbsLogError','RMSLogError','MeanAbsFraError','RMSFraError'); fclose(fid); end DepthDirectory %return; % ======================= load Rajiv's .mat file load([ScratchDataFolder '/data/distError' ImgFolder '.mat']); MeanOffSet = mean(offset); %CMUdepthNormalized=exp(offset)*CMUdepth; % ============================================ NuPics = size(filename,2); load([ScratchDataFolder '/data/MaskGSky.mat']); l =1; for i= 1:NuPics i % in case can't find the laser depth depthfile = strrep(filename{i},'img','depth_sph_corr'); check = dir([ScratchDataFolder '/Gridlaserdata/' depthfile '.mat']); if isempty(check) continue; end load([ScratchDataFolder '/Gridlaserdata/' depthfile '.mat']); laserdepth = Position3DGrid(:,:,4); clear Position3DGrid; % load learned or predicted depth depthMap = CMUdepth{i}*exp(MeanOffSet); filename{i} % calculate average abs error RMS error on linear and log scale, and fractional error if SkyExclude == 1 disp('Sky Exlude') % remove big error so that it won't effect linear and fractional term % maskBigError = ((depthMap >1000) | (~useMask{i})) | (depthMap <=1); % 80+30 maskBigError = ((depthMap >1000) ) | (depthMap <=1); % 80+30 % maskBigError = (depthMap >Inf); % 80+30 mask = ~(maskSky{i}|maskBigError); sum(mask(:)) % any(isinf(log10(depthMap(:)))) % any(isinf(log10(laserdepth(:)))) AbsLogError=abs( log10(depthMap(:))-log10(laserdepth(:)) ); AbsLogError = AbsLogError(mask); % get rid of the sky AbsError=abs( (depthMap(:))-(laserdepth(:)) ); AbsError = AbsError(mask); AbsFraError = abs( (depthMap(:)-laserdepth(:))./laserdepth(:)); AbsFraError = AbsFraError(mask); else AbsLogError=abs( log10(depthMap(:))-log10(laserdepth(:)) ); AbsError=abs( (depthMap(:))-(laserdepth(:)) ); AbsFraError = abs( (depthMap(:)-laserdepth(:))./laserdepth(:)); end WholeAbsLogError{l} = AbsLogError; WholeAbsError{l} = AbsError; WholeAbsFraError{l} = AbsFraError; l = l +1; end MeanAbsError = mean(cell2mat(WholeAbsError')); RMSError = sqrt(mean(cell2mat(WholeAbsError').^2)); MeanAbsLogError = mean(cell2mat(WholeAbsLogError')); RMSLogError = sqrt(mean(cell2mat(WholeAbsLogError').^2)); MeanAbsFraError = mean(cell2mat(WholeAbsFraError')); RMSFraError = sqrt(mean(cell2mat(WholeAbsFraError').^2)); if detail disp('report detail'); save([ScratchDataFolder '/result/DepthErrorReport' DateStamp '.mat'],... 'WholeAbsError','WholeAbsLogError','WholeAbsFraError','MeanAbsError','RMSError','MeanAbsLogError','RMSLogError','MeanAbsFraError','RMSFraError'); end fid = fopen(ReportName, 'a+'); fprintf(fid, '%s %g %g %g %g %g %g\n %s %d\n', DateStamp,MeanAbsError,RMSError,MeanAbsLogError,RMSLogError,MeanAbsFraError,RMSFraError, 'CMU', baseline); fclose(fid);