mirror of
https://github.com/EyeTrackVR/EyeTrackVR.git
synced 2025-11-04 14:39:42 +08:00
feat: AHSFRAC
This commit is contained in:
parent
f539b02388
commit
bdc91313fe
1049
EyeTrackApp/AHSF.py
Normal file
1049
EyeTrackApp/AHSF.py
Normal file
File diff suppressed because it is too large
Load Diff
@ -17,12 +17,12 @@ class EyeTrackCameraConfig(BaseModel):
|
|||||||
roi_window_h: int = 240
|
roi_window_h: int = 240
|
||||||
focal_length: int = 30
|
focal_length: int = 30
|
||||||
capture_source: Union[int, str, None] = None
|
capture_source: Union[int, str, None] = None
|
||||||
calib_XMAX: Union[int, None] = None
|
calib_XMAX: Union[float, None] = None
|
||||||
calib_XMIN: Union[int, None] = None
|
calib_XMIN: Union[float, None] = None
|
||||||
calib_YMAX: Union[int, None] = None
|
calib_YMAX: Union[float, None] = None
|
||||||
calib_YMIN: Union[int, None] = None
|
calib_YMIN: Union[float, None] = None
|
||||||
calib_XOFF: Union[int, None] = None
|
calib_XOFF: Union[float, None] = None
|
||||||
calib_YOFF: Union[int, None] = None
|
calib_YOFF: Union[float, None] = None
|
||||||
|
|
||||||
|
|
||||||
class EyeTrackSettingsConfig(BaseModel):
|
class EyeTrackSettingsConfig(BaseModel):
|
||||||
@ -34,7 +34,8 @@ class EyeTrackSettingsConfig(BaseModel):
|
|||||||
gui_BLOB: bool = False
|
gui_BLOB: bool = False
|
||||||
gui_BLINK: bool = False
|
gui_BLINK: bool = False
|
||||||
gui_HSRAC: bool = False
|
gui_HSRAC: bool = False
|
||||||
gui_AHSF: bool = True
|
gui_AHSFRAC: bool = True
|
||||||
|
gui_AHSF: bool = False
|
||||||
gui_DADDY: bool = False
|
gui_DADDY: bool = False
|
||||||
gui_LEAP: bool = False
|
gui_LEAP: bool = False
|
||||||
gui_HSF_radius: int = 15
|
gui_HSF_radius: int = 15
|
||||||
@ -52,13 +53,14 @@ class EyeTrackSettingsConfig(BaseModel):
|
|||||||
gui_recenter_eyes: bool = False
|
gui_recenter_eyes: bool = False
|
||||||
tracker_single_eye: int = 0
|
tracker_single_eye: int = 0
|
||||||
gui_threshold: int = 65
|
gui_threshold: int = 65
|
||||||
gui_AHSFP: int = 1
|
gui_AHSFRACP: int = 1
|
||||||
gui_HSRACP: int = 2
|
gui_AHSFP: int = 2
|
||||||
gui_HSFP: int = 3
|
gui_HSRACP: int = 3
|
||||||
gui_DADDYP: int = 4
|
gui_HSFP: int = 4
|
||||||
gui_RANSAC3DP: int = 5
|
gui_DADDYP: int = 5
|
||||||
gui_BLOBP: int = 6
|
gui_RANSAC3DP: int = 6
|
||||||
gui_LEAPP: int = 7
|
gui_BLOBP: int = 7
|
||||||
|
gui_LEAPP: int = 8
|
||||||
gui_IBO: bool = True
|
gui_IBO: bool = True
|
||||||
gui_skip_autoradius: bool = False
|
gui_skip_autoradius: bool = False
|
||||||
gui_thresh_add: int = 11
|
gui_thresh_add: int = 11
|
||||||
|
|||||||
@ -379,6 +379,46 @@ class EyeProcessor:
|
|||||||
)
|
)
|
||||||
self.current_algorithm = EyeInfoOrigin.DADDY
|
self.current_algorithm = EyeInfoOrigin.DADDY
|
||||||
|
|
||||||
|
def AHSFRACM(self):
|
||||||
|
if self.eye_id in [EyeId.LEFT] and self.settings.gui_circular_crop_left:
|
||||||
|
self.current_image_gray, self.cct = circle_crop(
|
||||||
|
self.current_image_gray, self.xc, self.yc, self.cc_radius, self.cct
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
if self.eye_id in [EyeId.RIGHT] and self.settings.gui_circular_crop_right:
|
||||||
|
self.current_image_gray, self.cct = circle_crop(
|
||||||
|
self.current_image_gray, self.xc, self.yc, self.cc_radius, self.cct
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.hasrac_en = True
|
||||||
|
self.current_image, self.rawx, self.rawy, self.radius = External_Run_AHSF(
|
||||||
|
self.current_image_gray
|
||||||
|
)
|
||||||
|
self.thresh = self.current_image_gray
|
||||||
|
(
|
||||||
|
self.rawx,
|
||||||
|
self.rawy,
|
||||||
|
self.thresh,
|
||||||
|
ranblink,
|
||||||
|
self.pupil_width,
|
||||||
|
self.pupil_height,
|
||||||
|
) = RANSAC3D(self, True)
|
||||||
|
if self.settings.gui_RANSACBLINK: # might be redundant
|
||||||
|
self.eyeopen = ranblink
|
||||||
|
# print("RANBLINK", ranblink)
|
||||||
|
|
||||||
|
# print(self.radius)
|
||||||
|
# if self.prev_x is None:
|
||||||
|
# self.prev_x = self.rawx
|
||||||
|
# self.prev_y = self.rawy
|
||||||
|
self.out_x, self.out_y, self.avg_velocity = cal.cal_osc(
|
||||||
|
self, self.rawx, self.rawy
|
||||||
|
)
|
||||||
|
self.current_algorithm = EyeInfoOrigin.HSRAC
|
||||||
|
|
||||||
def HSRACM(self):
|
def HSRACM(self):
|
||||||
if self.eye_id in [EyeId.LEFT] and self.settings.gui_circular_crop_left:
|
if self.eye_id in [EyeId.LEFT] and self.settings.gui_circular_crop_left:
|
||||||
self.current_image_gray, self.cct = circle_crop(
|
self.current_image_gray, self.cct = circle_crop(
|
||||||
@ -486,7 +526,7 @@ class EyeProcessor:
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
self.current_image, self.rawx, self.rawy = External_Run_AHSF(
|
self.current_image, self.rawx, self.rawy, self.radius = External_Run_AHSF(
|
||||||
self.current_image_gray
|
self.current_image_gray
|
||||||
)
|
)
|
||||||
self.thresh = self.current_image_gray
|
self.thresh = self.current_image_gray
|
||||||
@ -545,6 +585,11 @@ class EyeProcessor:
|
|||||||
if self.failed == 5 and self.sixthalgo != None:
|
if self.failed == 5 and self.sixthalgo != None:
|
||||||
self.sixthalgo()
|
self.sixthalgo()
|
||||||
|
|
||||||
|
if self.failed == 6 and self.seventhalgo != None:
|
||||||
|
self.seventhalgo()
|
||||||
|
|
||||||
|
if self.failed == 7 and self.eigth != None:
|
||||||
|
self.eigthalgo()
|
||||||
else:
|
else:
|
||||||
self.failed = 0 # we have reached last possible algo and it is disabled, move to first algo
|
self.failed = 0 # we have reached last possible algo and it is disabled, move to first algo
|
||||||
|
|
||||||
@ -559,15 +604,18 @@ class EyeProcessor:
|
|||||||
self.fithalgo = None
|
self.fithalgo = None
|
||||||
self.sixthalgo = None
|
self.sixthalgo = None
|
||||||
self.seventhalgo = None
|
self.seventhalgo = None
|
||||||
algolist = [None, None, None, None, None, None, None]
|
self.eigthalgo = None
|
||||||
|
algolist = [None, None, None, None, None, None, None, None, None]
|
||||||
# clear HSF values when page is opened to correctly reflect setting changes
|
# clear HSF values when page is opened to correctly reflect setting changes
|
||||||
self.er_hsf = None
|
self.er_hsf = None
|
||||||
|
|
||||||
# algolist[self.settings.gui_HSFP] = self.HSFM
|
# algolist[self.settings.gui_HSFP] = self.HSFM
|
||||||
|
|
||||||
# set algo priorities
|
# set algo priorities
|
||||||
|
if self.settings.gui_AHSFRAC:
|
||||||
|
algolist[self.settings.gui_AHSFRACP] = self.AHSFRACM
|
||||||
|
|
||||||
if self.settings.gui_AHSF:
|
if self.settings.gui_AHSF:
|
||||||
print("yippee")
|
|
||||||
algolist[self.settings.gui_HSFP] = self.AHSFM
|
algolist[self.settings.gui_HSFP] = self.AHSFM
|
||||||
|
|
||||||
if self.settings.gui_HSF:
|
if self.settings.gui_HSF:
|
||||||
@ -644,6 +692,8 @@ class EyeProcessor:
|
|||||||
self.fourthalgo,
|
self.fourthalgo,
|
||||||
self.fithalgo,
|
self.fithalgo,
|
||||||
self.sixthalgo,
|
self.sixthalgo,
|
||||||
|
self.seventhalgo,
|
||||||
|
self.eighthalgo,
|
||||||
) = algolist
|
) = algolist
|
||||||
|
|
||||||
f = True
|
f = True
|
||||||
|
|||||||
@ -12,10 +12,12 @@ class TrackingAlgorithmValidationModel(BaseValidationModel):
|
|||||||
gui_AHSF: bool
|
gui_AHSF: bool
|
||||||
gui_LEAP: bool
|
gui_LEAP: bool
|
||||||
gui_RANSAC3D: bool
|
gui_RANSAC3D: bool
|
||||||
|
gui_AHSFRAC: bool
|
||||||
gui_legacy_ransac: bool
|
gui_legacy_ransac: bool
|
||||||
|
|
||||||
gui_BLOBP: int
|
gui_BLOBP: int
|
||||||
gui_DADDYP: int
|
gui_DADDYP: int
|
||||||
|
gui_AHSFRACP: int
|
||||||
gui_HSFP: int
|
gui_HSFP: int
|
||||||
gui_AHSFP: int
|
gui_AHSFP: int
|
||||||
gui_HSRACP: int
|
gui_HSRACP: int
|
||||||
@ -32,6 +34,7 @@ class TrackingAlgorithmValidationModel(BaseValidationModel):
|
|||||||
self.gui_HSRACP,
|
self.gui_HSRACP,
|
||||||
self.gui_LEAPP,
|
self.gui_LEAPP,
|
||||||
self.gui_RANSAC3DP,
|
self.gui_RANSAC3DP,
|
||||||
|
self.gui_AHSFRACP,
|
||||||
]
|
]
|
||||||
algos_set = set(algos_list)
|
algos_set = set(algos_list)
|
||||||
if len(algos_set) != len(algos_list):
|
if len(algos_set) != len(algos_list):
|
||||||
@ -50,6 +53,7 @@ class TrackingAlgorithmModule(BaseSettingsModule):
|
|||||||
self.gui_HSRAC = f"-HSRAC{widget_id}-"
|
self.gui_HSRAC = f"-HSRAC{widget_id}-"
|
||||||
self.gui_LEAP = f"-LEAP{widget_id}-"
|
self.gui_LEAP = f"-LEAP{widget_id}-"
|
||||||
self.gui_AHSF = f"-AHSF{widget_id}-"
|
self.gui_AHSF = f"-AHSF{widget_id}-"
|
||||||
|
self.gui_AHSFRAC = f"-gui_AHSFRAC{widget_id}-"
|
||||||
self.gui_RANSAC3D = f"-RANSAC3D{widget_id}-"
|
self.gui_RANSAC3D = f"-RANSAC3D{widget_id}-"
|
||||||
self.gui_legacy_ransac = f"-LEGACYRANSACTHRESH{widget_id}-"
|
self.gui_legacy_ransac = f"-LEGACYRANSACTHRESH{widget_id}-"
|
||||||
|
|
||||||
@ -60,6 +64,7 @@ class TrackingAlgorithmModule(BaseSettingsModule):
|
|||||||
self.gui_LEAPP = f"-LEAPP{widget_id}-"
|
self.gui_LEAPP = f"-LEAPP{widget_id}-"
|
||||||
self.gui_AHSFP = f"-AHSFP{widget_id}-"
|
self.gui_AHSFP = f"-AHSFP{widget_id}-"
|
||||||
self.gui_RANSAC3DP = f"-RANSAC3DP{widget_id}-"
|
self.gui_RANSAC3DP = f"-RANSAC3DP{widget_id}-"
|
||||||
|
self.gui_AHSFRACP = f"-gui_AHSFRACP{widget_id}-"
|
||||||
|
|
||||||
# TODO custom validation, make a set of values, count if there's less than overall, if yeah we have a problem
|
# TODO custom validation, make a set of values, count if there's less than overall, if yeah we have a problem
|
||||||
def get_layout(self):
|
def get_layout(self):
|
||||||
@ -71,6 +76,24 @@ class TrackingAlgorithmModule(BaseSettingsModule):
|
|||||||
)
|
)
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
sg.Checkbox(
|
||||||
|
"",
|
||||||
|
default=self.config.gui_AHSFRAC,
|
||||||
|
key=self.gui_AHSFRAC,
|
||||||
|
background_color="#424042",
|
||||||
|
tooltip="Flagship hybrid algo",
|
||||||
|
),
|
||||||
|
sg.Combo(
|
||||||
|
self.algo_count,
|
||||||
|
default_value=self.config.gui_AHSFRACP,
|
||||||
|
key=self.gui_AHSFRACP,
|
||||||
|
background_color="#424042",
|
||||||
|
text_color="white",
|
||||||
|
button_arrow_color="black",
|
||||||
|
button_background_color="#6f4ca1",
|
||||||
|
tooltip="Select the priority of eyetracking algorithms.",
|
||||||
|
),
|
||||||
|
sg.Text("ASHSFRAC", background_color="#424042"),
|
||||||
sg.Checkbox(
|
sg.Checkbox(
|
||||||
"",
|
"",
|
||||||
default=self.config.gui_AHSF,
|
default=self.config.gui_AHSF,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user