Capstone

캡스톤 프로젝트

이타심 2021. 7. 30. 00:10
728x90
이상운동증 정량화 알고리즘

# 시작하며

앞서 소개한 주제로, 프로젝트를 시작했다. 20-2학기부터 프로젝트를 시작했고, 21-1학기 까지 2개 학기, 총 1년이라는 시간 동안 진행하였다. 20-2학기에는, 어플리케이션을 인수인계받고, 해당 알고리즘과 어플리케이션 코드를 이해하고 배우는 시간을 가지며 본 프로젝트를 나의 프로젝트로 받아들이는 연습을 수행했다. 동시에 어플의 오류를 개선하고, 더 나은 필터와 정량화 방법을 구상하며 개발을 진행하게 되었다.
이번 포스팅에서는 20-2학기가 지나고, 21-1학기부터 진행했던 캡스톤 프로젝트에 대해 작성하려고 한다. 해당 학기엔, 20-2학기에 공부하고 생각했던 내용들을 토대로, 어플을 개발하고, 알고리즘을 구상하였다.

# 알고리즘 개발

어플리케이션 검사 결과 화면

위 그림은, 본 프로젝트에서 진행한 이상운동증 환자들을 대상으로 진단하는 어플의 검사 결과 화면이다. 해당 그림에서 확인할 수 있듯이 본 어플리케이션은 환자의 그리기 검사 데이터를 토대로, 1초당 떨림의 횟수, 떨림의 세기, 목표선에서 벗어난 거리, 검사 수행 시간, 검사 평균속도 총 5가지 결과를 정량화 알고리즘을 통해 제공한다. 이렇게 5가지 결과 중, 목표선에서 벗어난 거리(Error Distance)에 대한 연구를 중점적으로 캡스톤 프로젝트에서 진행하였다.

# 목표선에서 벗어난 거리(Error Distance)

목표선에서 벗어난 거리, 즉 말 그대로 환자가 기준선을 따라 그리기 검사를 진행하고, 해당 그리기 검사 진행시 기준선(목표선)과 환자의 그림의 거리가 어느 정도 떨어져 있는지를 측정하는 알고리즘을 개발하는 것이다. 그리기 검사는 나선 그리기와 직선 그리기 총 2가지 검사가 진행된다.

  • 직선 그리기검사

나선 그리기검사

위 그림은 2가지 그리기 검사 중 직선 그리기 검사 화면이다. 해당 직선 그리기 검사에서 목표선에서 벗어난 거리를 측정하는 것은 비교적 수월하다. 본 어플에서 환자가 그린 그림은, 2차원 (x, y) 좌표값으로서 csv파일로 저장된다. 따라서 위 그림에서 나타난 기준선은, y값은 계속해서 일정하게 유지되고 x 좌표값만 변경되며 환자 그림이 저장된다. 따라서 변화하는 y값을, 고정된 기준선의 y값과 비교하여 평균을 구해주면 직선 그리기검사의 목표선에서 벗어난 거리 결과를 도출할 수 있다.

  • 나선 그리기검사

해당 목표선에서 벗어난 거리를 측정함에 있어, 나선 그리기 검사는 위 직선 그리기 검사보다 복잡해진다. 직선의 경우에는, 좌표값 중 한 좌표가 고정되어 있어 해당 값과 비교하며 결과를 도출하면 되지만, 나선의 경우에는 기준선과 환자의 검사 결과의 (x, y) 좌표가 모두 시간에 따라 변화하고, 환자 그림과 기준선의 정확한 비교대상 즉 기준선을 찾는 것이 해결해야할 주요 과제였다.

하지만, 환자가 그린 (x, y) 좌표 값과 계산된 기준선의 좌표를 비교하는 과정에서 오차가 발생하였다. 환자가 그린 그림의 좌표 값은 시간과 더불어 배열의 길이 또한 이에 비례하여 결정되지만, (x, y)좌표 값 사이의 거리는 검사 속도에 비례하여 결정된다. 그러므로 두 가지 좌표 값을 저장한 배열들의 길이, 즉 Sample수가 같아도 두가지 좌표 값이 서로 다른 각도상에 존재하게 된다. 따라서 정확한 좌표상의 위치와 Pair를 이루지 못해 ‘목표선에서 벗어난 거리’를 측정하여 검사 결과를 제공하는데 어려움이 있다.

아르키메데스 와선법칙

해당 과제를 해결하기 위해, 아르키메데스 와선 법칙을 활용하였다. 해당 법칙은, 원점을 중심으로 일정한 속도로 멀어지며 각속도 또한 일정한 나선이다. 아르키메데스 나선 상의 좌표값 (x, y)를 등식으로 표현하면 다음과 같다.

아래의 식 유클리드 거리 공식을 이용하여, 나선의 시작점을 원점으로 두고 해당 원점으로부터 나선의 한 점(x, y)까지 거리(θ) 값을 계산할 수 있다.

(유클리드 거리 공식, r: 원점에서 (x,y)까지의 거리 )

해당 특성을 이용하여 ‘목표선에서 벗어난 거리’를 계산할 때 쓰이는 기준선의 좌표를 구하게 된다.

기준선의 좌표 계산 방법은 다음과 같다. 우선 시작점을 원점으로 설정하고, 검사자가 그린 그림의 x좌표(이하 x position라 한다), y좌표(이하 y position라 한다)가 가지는, 즉 좌표 (x position, y position)가 x축과 이루는 각도(θ)를 구한다. 해당 각도는 나선이 총 3바퀴 회전하여 [0, 6𝜋]까지의 범위를 가지고 있다. 원점으로부터 시작하여 나선의 마지막 지점까지 좌표의 각도를 구하기 위해서는 위 식에 표현된 역 탄젠트 값을 사용할 수 있다. 이러한 방법으로 원점으로부터 마지막 좌표 값까지의 각도를 구하여, (x position, y position)과 같은 각도를 가지는 Base Line좌표의 거리 값을 얻는다. 하지만 해당 각도와 거리(θ)는 cm단위가 아니기 때문에, 단위 변환 과정이 필요하다. 이는 실제 태블릿 PC상의 1cm와 대응되는 좌표점 간의 거리를 비례식을 이용해 변환하고, DPI(Dots per inch) 값을 곱하여 cm단위로 변환한다. 이후 최종적으로, 앞서 언급한 유클리드 거리 공식을 사용해 원점으로부터 (x position, y position)까지의 거리를 계산한 후, 동일한 각도 값을 가지는 두 값의 차이를 구하여 저장한다. 이는 각도가 증가함에 따라 Base Line으로부터 환자가 그린 그림까지의 거리 즉 ‘목표선에서 벗어난 거리'를 저장한 배열이 되고, 해당 배열에 dpcm(dots per centimeter) 값을 나눠주어 단위를 cm로 변환한 뒤, 배열의 평균값을 구해주면, ‘목표선에서 벗어난 거리’를 구할 수 있다.

알고리즘 흐름도(Algorithm Flow)

흐름도에 따른 실제 적용 방법

# 비교분석

석을 위하여 실제 태블릿 PC로 시뮬레이션 데이터를 제작하여 정답의 위치와 계산된 위치를 비교하였다. 정답 위치의 좌표 값은, 원점과 환자가 그린 좌표 값을 이은 직선 상에 위치하는 Base line 값으로, 직접 육안으로 확인하여 구했다. 그림을 잘 그린 경우 (good)와 그림을 의도적으로 떨림이 많게 그린 경우 (poor)로 나누어 데이터를 측정하였고, 해당 목표선과 벗어난 거리를 측정하는 다른 알고리즘에 적용하여 결과를 비교하였다.

Method별 Pair 오차 값 비교

위 그림 은, 나선 그리기 검사를 두 가지(good, poor) case로 나누어 Pair 일치 여부를 판단한 것이다. 먼저 각 Method마다 Pair의 일치 여부를 판단하기 위해, 환자가 그린 나선과 매칭되는 정확한 Pair값을 계산하여 이와 비교하였다. 정확한 pair값과, 각 Method의 Base line의 오차를 good, poor case로 나누어 계산함으로써 정확도를 판단하였다. 위 그림에서, Method 1,3은 두가지 case 모두 pair 값이 크게 차이가 나고, Method 2 역시 poor case에서 Pair가 일치하지 않는 경우가 있는 것을 확인할 수 있다. 이와 비교하여 Proposed Method는 두 가지 case 모두 오차 값이 거의 발생하지 않아 Pair가 일치하는 것을 알 수 있다.

 good, poor case Pair 오차 분포

그림 9는 피 실험자들이 나선을 따라 그린 good, poor case 40개의 샘플을 Method 3가지와 Proposed Method에 각각 적용시켜 도출한 기준선 좌표와, 실제 기준선이 가져야 하는 좌표의 차이를 나타낸 Pair 오차 분포이다. Pair가 일치할수록 실제 ‘목표선에서 벗어난 거리’를 계산하는 과정에서 쓰여야 하는 기준선과 일치하는 것이므로, 오차 값이 적은 Method가 정확도가 높은 알고리즘으로 유추할 수 있다. 결과적으로 잘 그린 그림(good)과 그렇지 않은 그림(poor)에 대하여 Method1은 3.67±2.52 / 5.48±2.33, Method2는 0.11±0.04 / 1.21±1.53, Method3는 0.38±0.30 / 1.46±1.19, 제안한 방법(Proposed)은 0.01±0.01 / 0.02±0.02의 오차 값 (단위는 cm)을 확인하였다. Student’s t-test를 통한 차이 분석에서 모든 경우가 p < 0.05를 만족하여 유의미한 차이가 있음을 확인하였다.

# 결론

본 연구는 이상운동증을 신속하고 효과적으로 진단하는 데 사용되는 디지털 나선 그리기 검사에서 필요한 목표 나선과 그려진 그림 간의 일치 점들을 찾는 알고리즘을 제안하였다. 개발된 알고리즘을 통하여 보다 정확하게 이상 운동증상을 가진 환자의 운동 오류를 계산할 수 있어 진단의 정확도를 높일 수 있을 것으로 기대된다.

728x90

'Capstone' 카테고리의 다른 글

Way of Modeling  (0) 2021.10.17
데이터 모델링  (0) 2021.10.12
포스트 캡스톤의 시작  (0) 2021.10.11
KCC 2021 학부생 논문 부분 우수상 수상  (1) 2021.07.30
프로젝트의 시작  (2) 2021.05.19