64 lines
2 KiB
Mathematica
64 lines
2 KiB
Mathematica
|
function [ labels, valid_ids, vid_ids, filenames ] = extract_BP4D_labels_intensity( BP4D_dir, recs, aus )
|
||
|
%EXTRACT_SEMAINE_LABELS Summary of this function goes here
|
||
|
% Detailed explanation goes here
|
||
|
|
||
|
files_all = dir(sprintf('%s/AU%02d/%s', BP4D_dir, aus(1), '/*.csv'));
|
||
|
num_files = numel(files_all);
|
||
|
|
||
|
labels = cell(num_files, 1);
|
||
|
valid_ids = cell(num_files, 1);
|
||
|
vid_ids = zeros(num_files, 2);
|
||
|
filenames = cell(num_files, 1);
|
||
|
|
||
|
file_id = 1;
|
||
|
|
||
|
for r=1:numel(recs)
|
||
|
|
||
|
files_root = sprintf('%s/AU%02d/', BP4D_dir, aus(1));
|
||
|
files_all = dir([files_root, recs{r}, '*.csv']);
|
||
|
|
||
|
for f=1:numel(files_all)
|
||
|
for au=aus
|
||
|
|
||
|
% Need to find relevant files for the relevant user and for the
|
||
|
% relevant AU
|
||
|
files_root = sprintf('%s/AU%02d/', BP4D_dir, au);
|
||
|
files_all = dir([files_root, recs{r}, '*.csv']);
|
||
|
|
||
|
file = [files_root, '/', files_all(f).name];
|
||
|
|
||
|
[~, filename,~] = fileparts(file);
|
||
|
filenames{file_id} = filename(1:7);
|
||
|
|
||
|
intensities = csvread(file); % import annotations for one session
|
||
|
|
||
|
frame_nums = intensities(:,1); % get all frame numbers
|
||
|
|
||
|
codes = intensities(:,2);
|
||
|
|
||
|
% Finding the invalid regions
|
||
|
valid = codes ~= 9;
|
||
|
|
||
|
vid_ids(file_id,:) = [frame_nums(1), frame_nums(end)];
|
||
|
|
||
|
if(au == aus(1))
|
||
|
valid_ids{file_id} = valid;
|
||
|
labels{file_id} = codes;
|
||
|
else
|
||
|
valid_ids{file_id} = valid_ids{file_id} & valid;
|
||
|
labels{file_id} = cat(2, labels{file_id}, codes);
|
||
|
end
|
||
|
|
||
|
end
|
||
|
file_id = file_id + 1;
|
||
|
end
|
||
|
end
|
||
|
|
||
|
labels = labels(1:file_id-1);
|
||
|
valid_ids = valid_ids(1:file_id-1);
|
||
|
vid_ids = vid_ids(1:file_id-1, :);
|
||
|
filenames = filenames(1:file_id-1);
|
||
|
|
||
|
end
|
||
|
|