Projects/AI 아이트래킹 모델 프로젝트

눈 내부 정규화, 2차 다항 캘리브레이션, 월드 평면 정합

ha2yong 2025. 9. 5. 09:12

1. 눈 내부 정규화 (Eye Feature Normalization → 상대좌표)

목적

  • 눈 크기, 해상도, 사람마다 다른 눈 크기를 보정하고, 홍채 위치를 [-1,1] 범위로 표준화.
  • 어떤 카메라/사람이라도 비교 가능한 특징 벡터 (vx, vy)를 얻는다.

 

2. 2차 다항 캘리브레이션 (Polynomial Regression)

목적

  • (vx, vy) 상대좌표 → 스크린 좌표 (sx, sy) 로 보정.
  • 카메라 왜곡, 머리 자세 차이를 다항식으로 근사.

 

 

3. 월드 평면 정합 (OpenCV ArUco Homography)

목적

  • 스크린 좌표(픽셀)나 카메라 뷰 좌표를 실제 월드 평면 좌표(예: 실제 모니터, 보드, 책상)에 정합.
  • 카메라와 월드 사이 기하학적 대응 관계 보정.

과정

  1. ArUco 마커 배치: 월드 평면(모니터 모서리, 종이판 등)에 4개 이상.
  2. 검출: cv2.aruco.detectMarkers → 각 마커의 코너 픽셀 좌표 추출.
  3. 대응점 매칭: 검출된 코너 픽셀 좌표 ↔ 실제 평면 좌표(사이즈를 알고 있음).
  4. 호모그래피 추정:
H, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC)

 

  • src_pts: 카메라 이미지 상 좌표
  • dst_pts: 월드 평면 좌표 (예: cm 단위, 또는 정규화 좌표)
p_world = cv2.perspectiveTransform(p_camera, H)

 

화면/카메라 좌표에서 월드 평면 좌표로 매핑.

 

전체 파이프라인 요약

  1. 눈 내부 정규화: (vx,vy) 얻기
  2. 2차 다항 회귀 보정: (vx,vy) → (sx,sy) 정규화 스크린 좌표
  3. 픽셀 변환: (px,py) = (sx·W, sy·H)
  4. 호모그래피 보정(선택): (px,py) → 월드 평면 좌표 (X,Y)