Skip to content

Commit 8d20324

Browse files
authored
Merge pull request #129 from lucidcode/feature/artifact-filter
Add artifact filter
2 parents 32e8c67 + 1dd11db commit 8d20324

3 files changed

Lines changed: 18 additions & 10 deletions

File tree

release/firmware.bin

112 Bytes
Binary file not shown.

software/config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def __init__(self):
2626
self.default['TriggerThreshold'] = 16
2727
self.default['TossThreshold'] = 256
2828
self.default['TossCooldown'] = 1
29+
self.default['ArtifactFilter'] = 0.0
2930
self.default['TriggerDelay'] = 0
3031
self.default['TriggerInterval'] = 1000 * 60 * 1
3132
self.default['NREM1Delay'] = 1000 * 60 * 1
@@ -91,7 +92,7 @@ def set(self, setting, value):
9192
self.config[setting] = value
9293
return
9394

94-
float_settings = ["FaceThreshold", "FaceScaleFactor"]
95+
float_settings = ["FaceThreshold", "FaceScaleFactor", "ArtifactFilter"]
9596
if setting in float_settings:
9697
self.config[setting] = float(value)
9798
return

software/rem.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,26 @@ def detect(self, variance, global_variance):
1313
if global_variance >= self.config.get('TossThreshold'):
1414
self.eye_movements = 0
1515
self.last_eye_movement = now + 1000 * self.config.get('TossCooldown')
16+
return self.eye_movements
1617

17-
if now - self.last_eye_movement > 1000 * 60:
18-
if self.eye_movements > 0:
19-
self.eye_movements = self.eye_movements - 1
20-
self.last_eye_movement = now - 1000 * 58
18+
if now - self.last_eye_movement > 1000 * 60 and self.eye_movements > 0:
19+
self.eye_movements = self.eye_movements - 1
20+
self.last_eye_movement = now - 1000 * 58
2121

2222
if (self.config.get('TrackFace') or self.config.get('TensorFlow')) and not self.face.has_face:
2323
return self.eye_movements
2424

25-
if variance >= self.config.get('TriggerThreshold'):
26-
if now - self.last_eye_movement > 1000:
27-
self.last_eye_movement = now
28-
if self.eye_movements < 8:
29-
self.eye_movements = self.eye_movements + 1
25+
if variance < self.config.get('TriggerThreshold'):
26+
return self.eye_movements
27+
28+
artifact_filter = self.config.get('ArtifactFilter')
29+
artifact_variance = variance + variance * (1.0 - artifact_filter)
30+
if artifact_filter != 0 and global_variance > artifact_variance:
31+
return self.eye_movements
32+
33+
if now - self.last_eye_movement > 1000:
34+
self.last_eye_movement = now
35+
if self.eye_movements < 8:
36+
self.eye_movements = self.eye_movements + 1
3037

3138
return self.eye_movements

0 commit comments

Comments
 (0)