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);

 

posted on 2017-09-24 16:02  萝卜丶爱  阅读(1204)  评论(0编辑  收藏  举报

导航