--- tags: 程式碼 --- # Seeing Red (程式碼結果) > 追蹤 BPM_83.MOV (00015) 為例 > [論文筆記](https://hackmd.io/@ncnucsie/SymKoJ2a9) ### signal_extractor.py ==從 params.yaml 裡修改要套用進去的 func,程式預設是使用 luma_component_mean 和 red_chennel_mean<br><br>作者把每一幀的數值存進csv檔裡<br>== ![](https://i.imgur.com/lc360og.jpg)<br> ### signal_preprocessor.py ==原程式預設兩條路線<br>== > 之後可以再試其他組合 ``` "hpf": "butter_highpass_filter", "lpf": "butter_lowpass_filter", "maf": "moving_average_flat", "diff_pad": "minus_with_pad", "fft": "fft", "roll_avg": "rolling_average", "sub": "subtract", "bandpass": "butter_bandpass_filter", "imf": "increase_main_freq", "cut_start": "cut_start", "bpf_bpm": "bandpass_bpm" ``` 1. chain2: roll_avg -> sub -> low-pass filter -> cut_start<br> > parameter: > roll_avg -> window_size_seconds: 1.01 > low-pass filter -> filter_order: 2 / low: 4 > cut_start -> seconds: 3 2. dynamic_bpm: cut_start -> high-pass filter -> band-pass filter_bpm<br> > parameter: > cut_start -> seconds: 3 > high-pass filter -> cutoff: 0.5 / order: 1 > band-pass filter_bpm -> multiplier: 3 / mincut: 0.01 / order: 1 ![](https://i.imgur.com/8Ln0uts.jpg) ### signal_fiducial_points_detection.py ==套論文公式== ![](https://i.imgur.com/GRHGnjY.jpg)<br> ### signal_fiducial_points_detection.py 1. systolic peak -> 對曲線做一次微分,頂點的斜率為0 + 取最大值 2. dicrotic notch -> 一次微分值為負數 + 二次微分值接近0 3. diastolic peak -> 一次微分值接近0 + 二次微分值接近0 ![](https://i.imgur.com/eJwwqW2.jpg)<br> ### 分析每個波適不適合當作分析資料 ![](https://i.imgur.com/4cLJM3d.png)<br>