From 35215aab26f2eff14fe77ca7ede64d83054421ed Mon Sep 17 00:00:00 2001 From: Guillaume HEUSCH <guillaume.heusch@idiap.ch> Date: Tue, 10 Jul 2018 13:39:14 +0200 Subject: [PATCH 1/2] [cvpr14] return 3 mean colors in compute_average_color mask, instead of green only --- bob/rppg/cvpr14/extract_utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bob/rppg/cvpr14/extract_utils.py b/bob/rppg/cvpr14/extract_utils.py index 0015fa3..be4f27b 100644 --- a/bob/rppg/cvpr14/extract_utils.py +++ b/bob/rppg/cvpr14/extract_utils.py @@ -281,8 +281,8 @@ def compute_average_colors_mask(image, mask, plot=False): Returns ------- - color: :obj:`float` - The average green color inside the mask ROI. + color: numpy.ndarray + The average RGB colors inside the mask ROI. """ if plot: @@ -293,8 +293,8 @@ def compute_average_colors_mask(image, mask, plot=False): pyplot.title('Mask overlaid on the original frame') pyplot.show() - green = image[1, mask] - return numpy.mean(green) + [red, green, blue] = image[:, mask] + return numpy.array([numpy.mean(red), numpy.mean(green), numpy.mean(blue)]) def compute_average_colors_wholeface(image, plot=False): """computes the average green color within the provided face image -- GitLab From 9b4da32966e1add733adcb3bdddfc7cc6ca1ba46 Mon Sep 17 00:00:00 2001 From: Guillaume HEUSCH <guillaume.heusch@idiap.ch> Date: Tue, 10 Jul 2018 13:44:51 +0200 Subject: [PATCH 2/2] [scripts] updated the retrieved colors from mask, to be consistent with changes from previous commit (green only) --- bob/rppg/cvpr14/script/extract_face_and_bg_signals.py | 5 +++-- bob/rppg/cvpr14/script/test.py | 2 +- bob/rppg/cvpr14/script/video2skin.py | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bob/rppg/cvpr14/script/extract_face_and_bg_signals.py b/bob/rppg/cvpr14/script/extract_face_and_bg_signals.py index 51f5d18..b80106e 100644 --- a/bob/rppg/cvpr14/script/extract_face_and_bg_signals.py +++ b/bob/rppg/cvpr14/script/extract_face_and_bg_signals.py @@ -231,14 +231,15 @@ def main(user_input=None): # get the bottom face region average colors face_mask = get_mask(frame, mask_points) - face_color[i] = compute_average_colors_mask(frame, face_mask, plot) + # original algorithm: green only + face_color[i] = compute_average_colors_mask(frame, face_mask, plot)[1] else: face_color[i] = compute_average_colors_wholeface(face, plot) # get the background region average colors bg_mask = numpy.zeros((frame.shape[1], frame.shape[2]), dtype=bool) bg_mask[:100, :100] = True - bg_color[i] = compute_average_colors_mask(frame, bg_mask, plot) + bg_color[i] = compute_average_colors_mask(frame, bg_mask, plot)[1] # saves the data into an HDF5 file with a '.hdf5' extension out_facedir = os.path.dirname(output_face) diff --git a/bob/rppg/cvpr14/script/test.py b/bob/rppg/cvpr14/script/test.py index f2b5947..64b4382 100644 --- a/bob/rppg/cvpr14/script/test.py +++ b/bob/rppg/cvpr14/script/test.py @@ -160,7 +160,7 @@ def test_compute_average_color(): image[1, :, :] = 128 from bob.rppg.cvpr14.extract_utils import compute_average_colors_mask - mean_green = compute_average_colors_mask(image, mask) + mean_green = compute_average_colors_mask(image, mask)[1] assert mean_green == 128 def test_rectify_illumination(): diff --git a/bob/rppg/cvpr14/script/video2skin.py b/bob/rppg/cvpr14/script/video2skin.py index 3a951e0..26cdcbd 100644 --- a/bob/rppg/cvpr14/script/video2skin.py +++ b/bob/rppg/cvpr14/script/video2skin.py @@ -173,7 +173,8 @@ def main(user_input=None): pyplot.show() if numpy.count_nonzero(skin_mask) != 0: - skin_colors[i] = compute_average_colors_mask(face, skin_mask) + # green only + skin_colors[i] = compute_average_colors_mask(face, skin_mask)[1] else: logger.warn("No skin pixels detected in frame {0}, using previous value".format(i)) if i == 0: -- GitLab