]> git.sesse.net Git - voxel-flow/blob - eval_voxelflow.m
Fix yet more no-movement rejection (we would reject A-A-B pulldown, but not A-B-B).
[voxel-flow] / eval_voxelflow.m
1 clear;clc;
2
3 num_img = length(subdir);
4 flag_valid = zeros(1, num_img, 'single');
5 mat_psnr = zeros(1, num_img, 'single');
6 mat_ssim = zeros(1, num_img, 'single');
7
8 for id_img = 1:num_img
9
10         dir_img_cur = [dir_data, subdir(id_img).name, '/'];
11
12         % read images
13         img_pred = imread([dir_img_cur, 'pred_01.png']);
14         img_target = imread([dir_img_cur, 'target_01.png']);
15         img_prev = imread([dir_img_cur, 'frame_00.png']);
16         img_next = imread([dir_img_cur, 'frame_01.png']);
17
18         img_pred_ycbcr = rgb2ycbcr(uint8(img_pred));
19         img_target_ycbcr = rgb2ycbcr(uint8(img_target));
20
21         img_pred_gray = img_pred_ycbcr(:, :, 1);
22         img_target_gray = img_target_ycbcr(:, :, 1);
23
24         img_pred = single(img_pred);
25         img_target = single(img_target);
26         img_prev = single(img_prev);
27
28         img_pred_gray = single(img_pred_gray);x
29         img_target_gray = single(img_target_gray);
30
31         % check validity
32         if sum(mask_flow(:)) > 0
33                 
34                 flag_valid(id_img) = 1;
35
36                 img_pred_mask = repmat(mask_flow, [1, 1, 3]) .* img_pred;
37                 img_target_mask = repmat(mask_flow, [1, 1, 3]) .* img_target;
38
39                 mse = sum((img_pred_mask(:) - img_target_mask(:)).^2) ./ (3 .* sum(mask_flow(:)));
40                 psnr_cur = 20.0 .* log10(255.0) - 10.0 .* log10(mse);
41                 
42                 [ssim_cur, ~] = ssim(img_pred_gray, img_target_gray);
43
44                 mat_psnr(id_img) = psnr_cur;
45                 mat_ssim(id_img) = ssim_cur;
46
47         end
48
49         disp(['Processing Img ', num2str(id_img), '...']);
50
51 end
52
53 flag_valid(find(mat_psnr == inf)) = 0;
54 mat_psnr(find(mat_psnr == inf)) = 0;
55
56 mean_psnr = sum(flag_valid .* mat_psnr) ./ sum(flag_valid)
57 mean_ssim = sum(flag_valid .* mat_ssim) ./ sum(flag_valid)