간접 시선 추적 시스템은 적외선 조명을 각막에 반사시켜 그 모습을 카메라로 촬영하여 얻은 이미지에서 시선을 계산한다. 적외선 조명이 각막에 반사되어 이미지에 나타난 점을 글린트라고 한다. 최근 간접 추적 시스템은 머리의 움직임에 민감하지 않고 캘리브레이션 과정을 거치지 않도록 하기 위해 여러 개의 적외선 조명, 즉 여러개의 글린트를 사용하는 경우가 많다. 하지만 실험 도중 글린트의 일부가 보이지 않을 수 있는데, 이러한 경우 해당 프레임에서는 시선 계산을 할 수 없게 된다. 본 논문에서는 여러 개의 적외선 조명을 사용하는 시선 추적 시스템에서 여러 가지 이유로 유실되거나 인식이 어려운 글린트의 모습을 살펴본 후, 인식이 가능한 나머지 글린트 위치를 이용하여 이러한 글린트의 위치를 복원하는 알고리즘을 제안한다. 이 알고리즘을 통해 시선 추적 시 유효한 이미지 프레임의 개수를 증가 시키고, 복원 단계에서 글린트의 위치 변형 모델을 이용하여 글린트의 왜곡 또한 보정하여 시선 추적 결과의 오차도 줄일 수 있다.
Remote gaze tracking system calculates the gaze from captured images that reflect infra-red LEDs in cornea. Glint is the point that reflect infra-red LEDs to cornea. Recently, remote gaze tracking system uses a number of IR-LEDs to make the system less prone to head movement and eliminate calibration procedure. However, in some cases, some of glints are unable to spot. In this case, it is impossible to calculate gaze. This study examines patterns of glints that are difficult to detect in remote gaze tracking system. Afterward, we propose an algorithm to reconstruct positions of missing glints that are difficult to detect using other detected glints. Based on this algorithm, we increased the number of valid image frames in gaze tracking experiments, and reduce errors of gaze tracking results by correcting glint's distortion in the reconstruction phase.
동공-각막 반사(Pupil-Corneal Reflection) 방식의 시선 추적 시스템은 적외선 조명을 각막에 반사시켜 이를 촬영한 다음, 해당 이미지를 분석하여 시선을 계산한다. 적외선 조명이 각막에 반사되어 밝게 빛나는 점을 글린트(glint)라고 하는데, 이는 동공의 중심과 더불어 시선을 계산하는 데 중요한 정보가 된다.
초기 적외선 조명을 이용한 시선 추적 시스템은 카메라에 위치한 한두 개의 적외선 조명을 사용하여 시선을 계산하였으나[1-7], 최근에는 시스템의 단점을 보완하기 위해서 여러 개의 적외선 조명을 이용한 방법들이 다수 개발되고 있다[8-13].
하지만 여러 개의 적외선 조명을 사용하면, 머리의 위치나 시선의 각도에 따라 글린트의 일부가 보이지 않거나 번질 수 있다. 이러한 현상이 일어난 해당 프레임에서는 시선의 위치를 계산하기가 매우 어려워진다. 본 논문에서는 이러한 문제를 해결하기 위해, 인식이 어려운 글린트의 위치를 복원하는 알고리즘을 개발하였다. 모니터에 설치된 적외선 조명의 실제 위치와 이미지에서 인식한 글린트와의 호모그래피(homography)를 계산하여 빠진 글린트를 찾아내고 위치를 복원한다.
글린트의 인식 여부는 시선 추적 결과 데이터의 질에 큰 영향을 미친다. 글린트의 개수를 늘리는 것은 시선을 계산하기에 용이할 수 있지만, 그만큼 글린트가 인식되지 않을 확률도 높다. 본 논문에서 제시한 알고리즘은 인식된 글린트와 실제 조명과의 호모그래피를 이용하여 인식되지 않은 글린트를 찾아내고, 그 위치를 복원한다. 이는 시스템에서 유효한 프레임 수를 늘릴 수 있으며, 그 과정에서 글린트의 위치 변형 모델을 세워 글린트의 왜곡 또한 보정하여 시선 추적 결과의 오차도 줄일 수 있다.
II장에서는 여러 개의 적외선 조명을 이용한 시선 추적 시스템 및 글린트 간의 호모그래피를 이용한 기존의 연구들을 살펴본다. III장에서는 글린트가 인식되지 않는 여러 가지 상황들을 이미지로 보여주고 이를 인식하는 알고리즘을 제안한다. IV장에서는 제안한 알고리즘을 검증하기 위해 완전히 인식된 글린트 이미지에서 임의로 글린트를 제거하여 시뮬레이션한 결과와, 실제로 적용하여 복원한 결과를 보여준다. 마지막 V장에서 제안한 알고리즘 및 적용 결과에 대해서 정리하고, 추후 연구에 대해서 살펴본다.
2.1. 여러 개의 적외선 반사를 이용한 시선 추적 시스템
적외선 조명을 이용한 시선 추적 시스템은 적외선 조명을 각막에 반사시켜 이를 촬영한 이미지를 분석하여 시선을 계산한다. 각막에 적외선 조명이 반사될 때 이미지에서는 밝게 점으로 확연히 나타나는데, 이를 글린트라고 한다. 글린트와 동공의 중심을 시선을 계산하는데 매우 중요한 정보가 된다. 동공의 중심은 시선에 따라 위치가 바뀌지만 글린트의 위치는 변화가 없기 때문에 글린트의 위치를 기준으로 동공의 중심의 변화를 시선으로 계산 할 수 있다[14].
하지만 시선은 같은 곳을 바라보고 있더라도 머리의 위치가 달라질 수 있다. 이 때, 글린트의 위치 또한 머리의 위치에 따라 달라지기 때문에 이를 보완하기 위하여 여러 개의 적외선 조명, 즉 여러 개의 글린트를 활용한 새로운 시선 추적 모델들이 개발되고 있다[8-13]. Cross-ratio 방식의 시스템[8]은 머리 움직임으로 인한 시선의 오차를 최소화하기 위해 4개의 적외선 조명을 화면 모서리에 각각 설치하고, 각막에 비친 4개의 글린트를 화면의 경계로 삼아 동공의 중심을 화면상의 시선 좌표로 변환하였다. 이후, Cross-ratio 방식을 응용한 많은 연구들이 이루어지고 있다 [9-11]. 호모그래피 방식의 시스템[12] 또한 4개의 적외선 조명을 이용하여 동공의 중심과 글린트의 호모그래피를 이용하여 이미지의 동공의 중심을 화면 상의 시선 좌표로 변환시켰다. 이러한 방식들은 비율
이 모델은 시선 좌표를 계산하기 위해 11개의 적외선 조명을 사용하였으며, 비율
최근 간접 시선 추적 시스템은 이처럼 여러 개의 조명을 사용함으로써 기존 방식의 단점을 개선하고 정확도를 높이고 있다. 본 논문은 이러한 시스템들 중 [13]의 논문에서 제시한 시스템(그림 1)을 이용하였을 때 발생하는 글린트 인식에 대한 문제를 제기하고, 이를 해결하기 위한 글린트 복원 알고리즘을 제안한다.
동공-각막 반사 방식의 시선추적 시스템은 각막에 적외선 조명을 반사시켜 이를 촬영한 이미지를 사용한다. 거의 모든 시스템이 적외선 조명을 모니터 테두리나 모서리 부분에 설치하는데, 그림 2와 같이 시선에 따라 글린트의 위치가 동공과 많이 멀어지거나 속눈썹, 눈꺼풀로 인해 글린트가 번지거나 보이지 않는 경우가 매우 많다. 글린트의 일부가 보이지 않는 이미지 프레임은 시선을 계산하지 못하기 때문에 특히 실시간 시스템에서 이미지 프레임 당 유효한 데이터의 개수가 줄어드는 큰 원인이 된다. 또한 시선 추적 모델이 머리의 움직임에 영향을 받지 않는다 하더라도 실험 중 글린트의 일부가 보이지 않는 현상이 사용자의 머리 움직임을 제한하는 원인이 될 수 있다. 동공-각막 반사 방식의 시선추적 시스템에서는 이와 같은 글린트 문제가 언제나 발생할 수 있다. 이를 위해, 글린트의 일부가 보이지 않을 때 패턴 매칭을 이용하여 나머지 보이는 글린트를 정렬하는 시선 추적 시스템이 개발된 바 있다[16].
본 연구에서는 여러 개의 글린트 인식에 대한 문제점을 해결하기 위해서 글린트 복원 알고리즘을 개발하였다. [13]에서는 캘리브레이션 없이 시선을 구하기 위해 그림 1과 같이 11개의 적외선 조명을 화면 주변에 설치하였다. 이러한 시스템에서는 주로 모니터 모서리에 위치한 글린트들이 잘 보이지 않는 등의 이유로 인식이 어렵다. 그림 2-(a),(b)와 같이 시선의 방향과 반대 방향에 위치한 글린트에서는 번짐 현상이 간혹 나타났다. 만약 사용자가 왼쪽을 바라보고 있다면 주로 오른쪽의 글린트가 동공에서 멀어져 번지는 것이다. 또한 그림2-(c),(d)와 같이 시선의 방향이 많이 틀어지지 않았더라도 모니터의 머리의 위치에 따라, 또는 속눈썹에 가려져 모서리 부분의 글린트가 인식되지 않는 경우가 자주 발생한다. 시선 계산을 위해서는 이미지에서의 글린트가 어디에 위치한 조명인지를 알 필요가 있는데, 글린트의 일부가 제대로 인식되지 않는다면 이를 대응시키기가 어렵다. 따라서 동공-각막 반사 방식의 시선추적 시스템에서 보이지 않는 글린트의 위치 복원은 반드시 필요하다.
앞서 문제제기를 통해 글린트는 실험 중 여러 가지 상황에서 유실되거나 번질 수 있으며, 이를 복원할 필요가 있음을 설명하였다. 글린트 복원에 있어서 해결해야 할 문제는 크게 두 가지로 나눌 수 있다. 첫째로, 개수가 모자란 글린트 데이터에서 여러 개의 조명 중 어느 조명에 해당하는 글린트가 빠졌는지 알 수 없다는 점이다. 둘째로, 어느 조명에 대한 글린트가 빠졌는지 알았다 하더라도 이미지 상의 글린트는 여러 변형을 거쳐 실제 조명들과의 간격 비율 및 배열 모양이 같지 않기 때문에 위치를 바로 추측할 수 없다는 점이다.
이미지 상의 화면 주변의 조명에 대한 글린트는 그림 3과 같이 실제 적외선 조명이 안구에 반사되어 카메라로 촬영될 때까지 여러 변형을 거친 결과, 이미지에서 보이는 모양과 같이 변형된 것이다. 적외선 조명이 각막에 반사될 때의 변형은 사영 변형(projective transformation)의 속성을 가지고 있으며, 이러한 변형은 호모그래피(homography)로 나타낼 수 있다[17]. 이것은 마치 약간 기울어진 거울에 반사된 것과 같은 모습이기 때문에 실제 조명의 배열의 모양이 그림 3의 1번의 글린트와 같은 모양으로 변형된다. 하지만 각막에 반사된 글린트를 촬영한 이미지에서는 그림 3의 3번 글린트의 모습과 같이 방사형 모양으로 왜곡되어 있다는 것을 알 수 있다. 이는 그림 3의 2번의 위치(각막의 표면)에서 방사 왜곡(radial distortion)되었기 때문이다. 결과적으로 이미지 상의 글린트는 실제 조명의 배열로부터 사영 변형 H1, 방사 왜곡 D을 거쳐 카메라 이미지 평면에 한 번 더 사영 변형 H2되었다고 할 수 있다. 이처럼 빠진 글린트의 위치를 복원하기 위해서는 인식된 글린트 데이터로부터 이러한 변형과 왜곡의 파라미터를 정의해야 한다. 이미지상의 글린트와 실제 조명의 배열 사이의 변형은 다음과 같이 정의된다.
화면 주변의 조명이 각막에 반사되면서 생기는 변형 H1와 D로 변형된 글린트의 배열이 방사 왜곡된 다음 카메라에서 일어난 사영 변형 H2의 파라미터를 이미지의 글린트 데이터로부터 모두 알아내기에는 어려움이 따른다. 카메라 캘리브레이션을 통해 H2를 구할 수는 있지만, 시스템의 모델이 너무 복잡해지고 카메라 캘리브레이션에 대한 오차의 가능성 또한 존재한다. 본 알고리즘에서는, 인식되지 않은 글린트를 복원하기 위해 실제 조명의 배열로부터 이미지의 글린트 배열 모양으로 변형시키는 최종 호모그래피만을 알고자 하는 것이므로, 식 (1)을 다음의 식(2)과 같이 근사(approximation)하였다.
이와 같은 근사는 화면 주변의 실제 조명의 위치로부터 이미지 글린트까지 정확하게 각각의 변형 파라미터를 정의하지는 못하지만, 보이지 않거나 흐려져서 인식이 안 된 글린트의 조명 번호를 찾거나 위치를 추측하는 데 충분하다. 근사화된 호모그래피의 정확성을 검증하기 위해 11개의 글린트가 완벽하게 인식된 데이터로 근사화된 모델을 이용하여 호모그래피를 구한 다음 조명의 배열 위치와 비교해보았으며, 그 결과 오차가 0.1pixel 내외로 매우 작은 것을 확인할 수 있었다.
3.2. 변형 모델을 이용한 글린트의 조명 번호 및 좌표 복원
빠진 글린트의 위치를 복원하려면 나머지 인식된 글린트 데이터로부터 방사 왜곡의 계수와 호모그래피를 알아내야 한다. 예를 들어 왼쪽으로부터 5번째 조명에 해당하는 글린트가 흐려져 보이지 않았다고 할 때, 육안으로는 구분이 되지만, 영상 처리 과정에 인식된 글린트로부터 5번째 조명에 대한 글린트가 빠졌다는 사실을 알아내기는 어렵다. 또한 5번 조명에 해당하는 글린트가 빠졌다는 사실을 알고 있다 하더라도 그 위치를 추측하기가 어렵다. 5번째 조명에 해당하는 글린트의 위치는 실제 조명의 위치처럼 4번째 조명과 6번째 조명의 중간 지점이 아닌, 5번째 조명에 해당하는 위치가 각막에서 사영되고 방사형으로 왜곡이 된 지점이기 때문이다. 정리해보면, 빠진 글린트에 해당하는 조명 번호와 위치를 알기 위해서는 사영 변형에 해당하는 호모그래피 매트릭스 H와 왜곡 변형에 해당하는 D를 알아야 하며 이는 인식된 나머지 글린트로부터 얻을 수 있다. 여기서 왜곡 변형 D는 다음과 같이 정의하였다.
따라서 글린트의 왜곡 변형은 계수
만약 조명은 11개인데 이미지로부터 인식된 글린트는 10개라고 가정할 때, 몇 번째 조명에 해당하는 글린트가 빠졌다는 사실을 알고 있다면 비선형 최적화(nonlinear optimization)를 통해 나머지 인식된 글린트로부터 H와
3.3. 실시간 시스템 적용을 위한 글린트 복원 알고리즘의 속도 개선
앞 절에서 복원할 글린트의 조명 번호와 위치는 기존 조명의 위치를 최대한 글린트의 위치와 일치하게 하는 H와
1. K1, K2를 고정한 다음, 글린트에서 K1, K2에 대한 방사 왜곡을 제거하고, 모자란 글린트의 개수만큼의 빠질 수 있는 조명 번호의 모든 패턴을 조합하여 오차가 가장 작은 호모그래피 H를 구한다. 그때의 패턴에서 제외된 조명의 번호가 복원할 글린트의 조명 번호이다. (조명 번호가 문제 2에 적용됨) 2. 모자란 글린트에 대한 조명번호를 안다고 할 때, 해당 조명패턴에 대한 H와 K1, K2에 비선형 최적화를 1번 실시한다. (오차가 최소가 되는 K1, K2가 문제 1의 상수로 적용됨)
문제 1에서는 빠진 글린트의 조명 번호를 알기 위해 모든 패턴의 조합에 대하여 호모그래피를 계산하였지만, 이는 단순한 매트릭스 연산이기 때문에 여러 번 수행해도 속도가 느리지 않다. 문제 2의 계산은 비선형 최적화 계산이기 때문에 호모그래피를 계산하는 것보다 속도가 느리지만, 모든 패턴에 대한 최적화가 필요한 3.2절의 계산과 달리 한 번만 수행하기 때문에 시스템의 속도에 큰 영향을 주지 않는다. 시스템에 적용할 때는
알고리즘 1을 통해 알아낸 방사 왜곡 계수
본 논문의 글린트 복원 알고리즘에 대하여 실제 시선 추적 과정에서 수집한 글린트 데이터를 이용하여 시뮬레이션하였다. 복원 알고리즘의 정확도를 파악하기 위해 11개의 글린트가 완벽하게 인식된 데이터에서 인위적으로 글린트를 제거하여 조명의 번호를 찾아내고 해당 위치를 복원한 다음 원본 데이터의 글린트 위치와 비교했다. 실제 시선을 계산할 때, 이미지의 글린트는 방사형으로 왜곡되어 있기 때문에 오차를 줄이기 위해 이 왜곡을 제거한 글린트 데이터를 사용하는 것이 바람직하다. 따라서 글린트의 복원은 방사 왜곡이 제거된 상태로 이루어진다. 복원된 글린트의 오차는 방사 왜곡이 제거된 원본 데이터와 비교하여 구하였다. 그림 4는 시뮬레이션에 사용된 글린트 데이터에서 왜곡을 제거한 모습이다.
실제 시선 추적 과정에서 주로 모서리에 위치한 글린트가 인식이 되지 않는 경우가 많았다. 모니터 화면의 위쪽 모서리에 위치한 조명에 해당하는 글린트는 시선이 아래쪽을 향하고 있을 때, 또는 정면을 바라보고 있더라도 머리로부터 화면까지의 시선의 각도나 속눈썹으로 인해 자주 인식이 되지 않았다. 글린트의 번호를 왼쪽부터 매긴다고 할 때, 위쪽 모서리에 해당하는 4번, 8번 글린트에 대한 복원 시뮬레이션 결과는 그림 5와 같다. 원본 글린트와의 오차는 각각 0.4033, 0.2088pixel로 측정되었다.
시선이 위쪽을 향하고 있을 때에는 주로 아래쪽 모서리의 1번, 11번 글린트가 인식이 되지 않는데, 그림 6은 이와 같은 경우에 대한 시뮬레이션 결과이다. 원본 데이터와의 오차는 각각 0.2685pixel, 0.1363pixel로 측정되었다. 시선의 방향이 한쪽으로 치우쳤을 때는 시선의 반대 방향의 글린트들이 번져 인식되지 않을 확률이 높다. 오른쪽 글린트 3개(9, 10, 11번)를 제거하였을 때의 복원 결과는 그림 7과 같고, 오차는 각각 0.3421pixel, 0.6150pixel, 0.7686pixel로 나타났다.
위치에 따라 차이는 있지만, 1-2개의 글린트를 복원하였을 때는 왜곡 변형이 제거된 원본 데이터와의 차이가 0.04pixel 정도로 아주 작았다. 하지만 연달아 위치해 있는 3개 이상의 글린트를 복원하였을 때는 복원할 글린트가 서로 떨어져 있거나 1개일 때보다 1pixel 정도로 오차가 높았다. 이러한 경우는 사용자가 보이지 않는 글린트의 반대 방향을 바라보았을 가능성이 높기 때문에 시선을 계산할 때 해당 라인 세그먼트를 사용하지 않을 확률 또한 높다.
그림 8에서 원본 글린트의 좌표와 조명번호 1, 2, 3번에 해당하는 글린트가 연달아 삭제된 글린트의 복원 좌표를 그래프로 나타냈다. 이와 달리, 3개가 연달아 있지 않고 서로 떨어져 있다면 오차는 확연히 작아지는 것으로 나타났다. 그림 9에서는 서로 떨어져 있는 2, 8, 10번 조명에 해당하는 글린트를 삭제하여 복원한 것을 원본 글린트 좌표와 비교하였다.
이러한 두 경우의 오차의 차이를 표 1에 나타냈다. 복원할 글린트의 개수가 많아질수록 복원 정확도는 떨어지지만, 글린트의 데이터 셋이 완벽하지 않은 상황에서도 정확한 인덱싱이 가능해지고 인식하기 어려운 글린트를 실시간으로 복원할 수 있다. 결과적으로, 본 시선추적 시스템에 글린트 복원 알고리즘을 적용함으로써 시선을 계산할 수 있는 글린트 데이터 셋이 많아지고 잘못된 글린트 인덱싱으로 인한 오차의 가능성을 줄였다고 할 수 있다.
[표 1.] 글린트 3개를 복원했을 때의 시뮬레이션 오차 비교.
글린트 3개를 복원했을 때의 시뮬레이션 오차 비교.
글린트의 조명 번호 및 좌표 복원 알고리즘에서 사용된 비선형 최적화 구현을 위해 cminpack 라이브러리[18]를 사용하였으며 이미 구축된 [13]의 시선추적 시스템에 적용하였다(그림10). 그 결과, 글린트의 일부가 번지거나 보이지 않아도 거의 모든 프레임에 대하여 실시간으로 시선을 계산할 수 있게 되었으며, 조명에 대응하도록 글린트를 정렬하는 인덱싱 작업의 정확도도 매우 높았다. 또한 매 프레임마다 왜곡 계수를 최적화하여 결정하지만 시스템의 속도에 영향을 미치지 않았다.
적외선 조명을 이용한 시선 추적 분야는 최근 여러개의 적외선 조명을 이용하여 그동안 제기되었던 머리의 움직임에 대한 반영이나 캘리브레이션으로 인한 불편함같은 문제점들을 해결해나가고 있다. 하지만 이러한 시스템들은 적외선 조명이 여러 개이기 때문에 각막에 반사된 글린트가 제대로 인식되지 않을 가능성이 높으며, 이러한 경우 한 개의 글린트만 빠지더라도 시선 계산이 불가능하다.
본 논문에서는 글린트가 여러 개일 때 이들 조명의 위치를 기준으로 호모그래피를 계산하여 보이지 않거나 인식되지 않은 글린트에 해당하는 조명을 알아내어 위치를 복원하였다. 오차를 줄이기 위해 글린트가 각막에 반사되어 카메라 이미지에 사영되는 과정을 고려한 변형 모델을 세워 위치를 복원하는데 사용하였다.
시뮬레이션을 통해 복원된 글린트의 위치 오차는 0.1pixel 내외로 매우 작은 것으로 나타났다. 복원할 글린트가 여러 개 일때는 서로 떨어져 있을 때 그 오차가 더 작은 것으로 나타났다. 실제로 시선추적 시스템에 적용하여 누락된 글린트를 복원함으로써 시선 추적 계산이 가능한 유효 프레임수를 대폭 늘릴 수 있었으며, 시스템의 속도에 영향을 미치지 않음을 알 수 있었다.
글린트 복원 알고리즘은 본래 화면 주변의 빠진 글린트를 위해 개발되었지만, 카메라 글린트가 번져 인식이 어려운 상황에서도 활용될 수 있을 것으로 예상한다. 그림 11과 같이 사용자가 화면의 상단을 바라볼 때 머리의 위치에 따라서 간혹 카메라 글린트가 동공의 아래쪽으로 멀어져 번지는 경우가 발생한다. 이런 상황에서는 카메라 글린트의 중심을 계산할 때 오차가 생기는데, 이는 조명 및 카메라의 위치 좌표가 아무리 정확해도 최종 시선에 대한 오차로 이어질 수밖에 없다. 따라서 글린트 복원 알고리즘을 사용하여 추정되는 카메라 글린트의 위치와 실제로 인식된 글린트의 위치가 너무 달라진다면, 인식된 글린트의 위치 대신 추정된 글린트의 위치를 사용함으로써 시선계산에 대한 오차를 줄일 수 있을 것이다.