- Electron 앱 내 로컬라이징(Localization), 로그인, 스트레스 측정, 결과 분석 화면의 UI/UX 직접 디자인 및 설계
- 전체 사용자 플로우(Flow) 개발 및 기능 통합 수행
- 다국어 환경에서도 일관되고 안정적인 사용자 경험(UX) 제공
스트레스 측정에 사용하는 rPPG 신호는 카메라를 통해 피부 색 변화를 기반으로 심박수를 추출하는 신호이기 때문에, 조명 변화, 움직임, 카메라 품질 등 외부 노이즈에 크게 영향을 받음.
원시 rPPG 신호(raw signal)만 사용할 경우 잡음이 많아 정확한 생체 신호 추출이 어렵고, 이로 인해 심박수 계산 및 스트레스 분석 등의 후속 처리 정확도 저하 문제가 발생함.
Fili.js 라이브러리를 활용하여 디지털 필터링 기법 적용
→ Fili.FirCoeffs()를 통해 필요한 FIR 필터 타입 및 파라미터 설정
생성한 FIR 필터 계수를 기반으로 Fili.FirFilter(firCoeffs) 인스턴스를 생성
→ 정제된 필터를 통해 rPPG 신호를 통과시켜 노이즈 제거
원시 신호에 비해 잡음이 크게 감소하고, 깨끗한 rPPG 신호를 안정적으로 확보
→ 후속 심박수 계산 및 스트레스 분석 정확도가 향상됨
기존에는 1회 측정된 rPPG 신호만을 기반으로 스트레스를 계산했음.
짧은 순간 동안 측정된 신호는 노이즈, 순간적 움직임, 조명 변화 등에 민감하여 결과가 불안정하거나 오차가 크게 발생하는 문제가 있었음.
스트레스처럼 민감한 지표는 더 긴 시간 동안의 평균적 상태를 반영해야 정확한 분석이 가능했음.
실시간 rPPG 신호를 누적 저장하고, 누적된 데이터 기반으로 스트레스 계산하도록 변경
→ 신호 수집 후 일정 시간 누적하여 평균적 패턴 분석
전체 누적 구간을 이용해 필터링, 심박수 계산, 스트레스 지수 계산 수행
→ 순간 신호가 아닌, 시간 평균 및 변동성을 반영하여 신뢰성 향상
누적 데이터가 일정 길이 이상 확보되기 전까지는 분석을 보류하거나 결과 표시를 하지 않도록 처리
→ 충분한 데이터 확보 이후에만 스트레스 지수 계산을 시작하여 정확도 확보
기존에는 getUserMedia 호출 시 디폴트 카메라만 사용하도록 설정되어 있었음.
데스크탑 환경에서 디폴트로 잡히는 노트북 내장 카메라나 모바일 연결 카메라가 비활성화되거나 접근 불가한 경우, 프로그램이 정상적으로 시작되지 않거나 동작이 실패하는 문제가 발생함.
사용 가능한 다른 카메라가 있어도 프로그램이 아예 실행되지 않는 경우가 발생하여 사용자 불편이 초래됨.
접근 가능한 모든 카메라 목록을 불러오고, 사용자가 직접 원하는 카메라를 선택할 수 있도록 카메라 선택 페이지(UI) 추가
→ 사용자가 외부 USB 카메라나 특정 장비 전용 카메라도 자유롭게 선택 가능
디폴트 설정에 의존하지 않고 명시적으로 카메라를 선택하는 구조로 변경
→ 디폴트 장비 문제로 인한 프로그램 실행 실패 방지
다양한 하드웨어 환경에서도 프로그램이 안정적으로 작동할 수 있도록 개선
→ 사용자 경험(UX) 및 접근성 대폭 향상