File Creation

This commit is contained in:
Thomas PÉRIN 2023-02-17 21:49:47 +01:00
parent 9dbd0f068b
commit f120fc0b33
3 changed files with 99 additions and 0 deletions

BIN
face_video.mp4 Normal file

Binary file not shown.

19
frame_extraction.py Normal file
View File

@ -0,0 +1,19 @@
############
# frame extraction
#
# Task:
# -frame extration from mp4 video
#
# Inputs:
# -mp4 file
# -fps
# -
# -
#
# Output:
# -png of video
#
# Author: Thomas Périn
# Date: 17/02/2023
#
############

80
heartRateEstimation.m Normal file
View File

@ -0,0 +1,80 @@
%hr = heartRateEstimation(imgDirectory, fps, windowDuration, windowShift)
%%%%%%%%%%%%%%%%%
% hr = heartRateEstimation(imgDirectory, fps, windowDuration, windowShift)
%
% Task:
%
% Inputs:
% -imgDirectory
% -fps
% -windowDuration
% -windowShift
%
% Output:
% -hr:
%
% Author: Guillaume Gibert
% Date: 06/02/2023
%
% Note: images were extracted with ffmpeg -i "video.mkv" ../img/gg_%04d.png
%%%%%%%%%%%%%%%%%
%temp var
imgDirectory = 'img';
fps = 60;
windowDuration = 30;
windowShift = 1;
roi = [225 750 825 1100];
% global
redChannel = [];
greenChannel = [];
blueChannel = [];
%list the images
listImg = dir([imgDirectory '/*.png']);
for l_img=1:windowDuration*fps
% load the current image
image_original = imread([imgDirectory '/' listImg(l_img).name]);
%image(image_original);
% crop the current image around the face
image_face = image_original(roi(1):roi(2), roi(3):roi(4), :);
%image(image_face);
% spatial average for r, g, b channels
r_mean = mean(mean(image_face(:,:,1)));
g_mean = mean(mean(image_face(:,:,2)));
b_mean = mean(mean(image_face(:,:,3)));
% store the current "average" pixel in global arrays
redChannel = [redChannel r_mean];
greenChannel = [greenChannel g_mean];
blueChannel = [blueChannel b_mean];
end
% estimate temporal average and standard deviation
greenChannel_avg = mean(greenChannel);
greenChannel_std = std(greenChannel);
% normalize your data
% greenChannel_normalized(i) = (greenChannel(i) - greenChannel_avg)/greenChannel_std
% fft(greenChannel_normalized)
% power spectrum (https://www.mathworks.com/help/matlab/ref/fft.html)
% find the peak in the range ([0.75 4] Hz)
% max -> value, index
% convert the index from Hz to bpm
% determine heart rate