MSR Daily Activity 3D数据集matlab源代码

时间:2014-08-17 11:24:29

标签: matlab action

我正在搜索从数据集中读取骨架文本文件的任何matlab代码(MSR Daily Activity 3D)。我无法弄清楚如何理解文件的编写方式以及它们代表什么?另外,不知道如何解析它们来提取特征。

2 个答案:

答案 0 :(得分:1)

网站http://research.microsoft.com/en-us/um/people/zliu/ActionRecoRsrc/会告诉您他们的确切组织方式。他们还提供了一些C ++示例加载器。

"骨架文件的格式如下。第一个整数是帧数。第二个整数是始终为20的关节数。对于每个帧,第一个整数是行数。当在此帧中检测到一个骨架时,此整数为40。没有检测到骨架时为零。检测到两个骨架时是80(在这种情况下很少见,我们只是在实验中使用第一个骨架)。对于大多数帧,行数为40.每个关节对应两行。第一行是它的真实世界坐标(x,y,z),第二行是它的屏幕坐标加上深度(u,v,深度),其中u和v被归一化到[0,1]内。对于每一行,结尾处的整数应该是置信度值,但它没有用。"

希望这有帮助。

答案 1 :(得分:1)

这是读取深度序列的matlab代码。 在'for ei = 1:2'的每个循环中,它从bin文件中读取所有深度数据到深度(3D矩阵)。

clear;close all;clc;
binPath = 'MSR Daily Activity 3D dataset\Depth';
for ai = 1:16
    for si = 1:10
        for ei = 1:2
            %%%%%%%%%%%%%
            %%%%%%%%%%%%%
            [acsr,susr,exsr]=getsr(ai,si,ei);
            %%%%%% getsr(ai,si,ei) convert ai,si,ei to double bits
            %%%%%% for example, if ai=3, acsr is 03
            %%%%%%%%%%%

            binfile = [binPath,'\a',acsr,'_s',susr,'_e',exsr,'_depth.bin'];        
            if ~exist(binfile,'file');
                disp('error');
                continue;
            end;
            disp(binfile);

            fileread = fopen(binfile);      
            if fileread<0
               disp('no such file.');
               return;
            end

            header = fread(fileread,3,'uint=>uint');
            nnof = header(1); ncols = header(2); nrows = header(3);

            depths = zeros(ncols, nrows, nnof);
            for f = 1:nnof
                frame = zeros( ncols, nrows);
                for row = 1:nrows
                    tempRow = fread(fileread, ncols, 'uint=>uint');
                    tempRowID = fread(fileread, ncols, 'uint8');%%%%%
                    frame(:,row) = tempRow;
                end
                depth(:,:,f) = frame;
                clear tempRow tempRowID;
            end

            fclose(fileread);
        end
    end
end