NYU数据集预处理
在做图像深度估计的时候用到了nyu数据集,该数据集包含彩色图,深度图,图像标签,相机位姿,可以用于图像分割,SLAM等,在使用之前,需要对该数据集做预处理,官方给的工具不太好用,这里自己用MATLAB写了个脚本,希望对大家能有所帮助,nyu数据集的下载地址是http://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html,想更多地了解该数据集,可以参考其论文.
clear; clc; nyuData = load('nyu_depth_v2_labeled'); writeDirDepth = strrep(nyuData.rawDepthFilenames, '/', '\'); [imageNum, ~] = size(writeDirDepth); for i = 1:imageNum writeDirFile = writeDirDepth(i); writeDirFile = writeDirFile{1}; filenameIndex = strfind(writeDirFile, '\'); filename = writeDirFile(1:filenameIndex-1); writeDirFile = ['depths\', filename]; cmd = ['mkdir ' writeDirFile]; system(cmd); end writeDirImage = strrep(nyuData.rawRgbFilenames, '/', '\'); [imageNum, ~] = size(writeDirImage); for i = 1:imageNum writeDirFile = writeDirImage(i); writeDirFile = writeDirFile{1}; filenameIndex = strfind(writeDirFile, '\'); filename = writeDirFile(1:filenameIndex-1); writeDirFile = ['images\', filename]; cmd = ['mkdir ' writeDirFile]; system(cmd); end writeDirDepth = strrep(nyuData.rawDepthFilenames, '/', '\'); [imageNum, ~] = size(writeDirDepth); for i = 1:imageNum writeDirFile = writeDirDepth(i); writeDirFile = writeDirFile{1}; filenameIndex = strfind(writeDirFile, '\'); filename = writeDirFile(1:filenameIndex-1); writeDirFile = ['rawDepths\', filename]; cmd = ['mkdir ' writeDirFile]; system(cmd); end temp = nyuData.depths(:, :, 1); imshow(temp,[]); temp = nyuData.images(:, :, :, 1); imshow(temp); writeDirImage = strrep(nyuData.rawRgbFilenames, '/', '\'); [imageNum, ~] = size(writeDirImage); for i = 1:imageNum rgbImage = nyuData.images(:, :, :, i); writeDirFile = writeDirImage(i); writeDirFile = writeDirFile{1}; writeDirFile = strcat('images\', writeDirFile); imwrite(rgbImage, writeDirFile, 'ppm'); end imgRgb = imread(writeDirFile); imshow(imgRgb); writeDirDepth = strrep(nyuData.rawDepthFilenames, '/', '\'); [imageNum, ~] = size(writeDirDepth); for i = 1:imageNum depthImage = nyuData.depths(:, :, i); depthImage = uint16(round((depthImage./10)*65535)); writeDirFile = writeDirDepth(i); writeDirFile = writeDirFile{1}; writeDirFile = strcat('depths\', writeDirFile); imwrite(depthImage, writeDirFile, 'pgm'); end imgDepth = imread(writeDirFile); imshow(imgDepth); writeDirDepth = strrep(nyuData.rawDepthFilenames, '/', '\'); [imageNum, ~] = size(writeDirDepth); for i = 1:imageNum depthImage = nyuData.rawDepths(:, :, i); depthImage = uint16(round((depthImage./10)*65535)); writeDirFile = writeDirDepth(i); writeDirFile = writeDirFile{1}; writeDirFile = strcat('rawDepths\', writeDirFile); imwrite(depthImage, writeDirFile, 'pgm'); end imgDepth = imread(writeDirFile); imshow(imgDepth); txtFile = fopen('association.txt', 'w'); dirImage = nyuData.rawRgbFilenames; dirDepth = nyuData.rawDepthFilenames; [imageNum, ~] = size(dirDepth); for i = 1:imageNum nameImage = dirImage(i); nameImage = nameImage{1}; nameDepth = dirDepth(i); nameDepth = nameDepth{1}; fprintf(txtFile, '%s\t%s\r\n', nameImage, nameDepth); end fclose(txtFile);