터치 없는 터치스크린

(Touchless Touchscreen)

홍길동, 이길동

정보통신대학 컴퓨터정보공학부 학생

정보통신대학 컴퓨터정보공학부 교수

(Gil-Dong Hong, Gil-Dong Lee)

요    약

본 보고서는 기존 터치스크린의 문제점을 해결하기 위해 만들어진 작품에 관해 기술한다. 본 보고서의 작품은 윈도우 환경에서 키보드, 마우스, 터치 등 물리적 접촉 없이 손동작을 통해 화면을 제어, 동작하는 Python으로 구현된 프로그램이다. OpenCV를 활용하여 영상을 입력받고 Media Pipe를 통해 손과 손동작을 인식한다. 인식된 손동작을 토대로 각각 커서 기능, 스크롤 기능, 볼륨 조절 기능, 키보드 기능을 수행한다.

Abstract

This report describes our graduation project created to solve the problems of existing touchscreens.

I. 서론

10개의 포인팅 디바이스 즉 손가락을 가지고 직접 터치를 하는 터치스크린은 터치가 주는 원초적인 커뮤니케이션 직관성에 힘입어 기술이 개발되고 진화되어왔다. 그러나 터치스크린에 문제점이 없는 것은 아니다. 진화되어왔지만 사용자 모두에게 만족스러운 경험을 안겨주지 못한다.

터치(Touch)스크린의 이름에서 나오듯 사용자가 스크린에 물리적 작용을 하여 작동하는 방식이기에 장비를 사용하기 위해선 스크린과 사용자의 손이 직접 닿을 수밖에 없다. 그로 인해 여러 사람이 만지는 키오스크 같은 터치스크린의 경우 각종 병원균과 바이러스에 감염될 위험성이 크다. 또한, 직접 손이 닿거나 터치펜 같은 장치를 이용해야 하므로 공간적 제약을 받을 수밖에 없다.

그리하여 본 보고서의 작품은 터치스크린의 문제점인 불결한 위생과 공간적 물리적 제약으로부터 오는 불편함을 해결하는 것이 목적이다. 이를 해결하기 위해 기존의 키보드, 마우스, 터치스크린 대신 카메라를 이용하여 손을 인식하고 손동작을 통해 윈도우 환경의 화면을 제어할 수 있도록 구현하였다.

본 보고서는 다음과 같이 구성된다. 2장 배경지식에서는 OpenCV와 MediaPipe의 관련된 연구에 관해 기술한다. 3장 본론에서는 시스템의 설계 및 구현 방법에 관해 기술하며, 4장에서는 결론을 맺는다.

II. 배경 지식 (필요한 경우 작성, 하지만 배경지식 기술이 불필요한 경우 생략가능)

OpenCV는 카메라를 통해 입력된 이미지 영상의 영상 인식과 컴퓨터 비전을 위한 최적화 된 알고리즘을 제공하는 오픈소스이다. [1]은 OpenCV를 이용하여 적외선으로 촬영된 손을 인식하고, 인식된 손 이미지를 이진화 처리하여 손의 동작을 구분한 후 마우스를 제어하는 시스템을 제안하였다. [2]는 OpenCV를 이용하여 손 영역을 추출, 손끝 정보를 마우스 포인터로 활용하여 사용자에게 보다 친숙한 마우스 인터페이스를 제시한다.

MediaPipe는 파이프라인 처리를 바탕으로 다양한 형식의 데이터를 처리할 수 있도록 만들어진 크로스 플랫폼 프레임워크다. MediaPipe에서는 자세 인식에 사용할 수 있는 손, 얼굴, 신체 등의 학습된 모델을 제공하고 있으며 이중 손 모델은 정지 영상에서 21개 특징점을 사용하여 3차원 공간에서 손의 위치와 자세를 알아낼 수 있다. [3]은 MediaPipe를 활용하여 가상의 칠판 위에서 움직이는 손의 궤적을 기반으로 기호를 인식하는 손 표현 인식 방법을 제안하였다. [1], [2], [3] 모두 화면을 제어하기 위해 손동작을 활용했다는 것이 눈여겨볼 특징이다.

III. 본론

1) 시스템 개요

본 보고서의 작품은 Python을 사용하여 만들어졌다. 본 작품의 기본 작동 과정은 [그림 1]과 같다. [그림 1]에서 보듯이 OpenCV를 통해 입력받은 손 이미지를 프로그램에 설정된 손과 일치하는지 Mediapipe를 이용하여 확인한 후 해당하는 기능을 작동시키고 내부 프로그램은 다시 카메라로부터 이미지를 요청한다.

==> 그림 작성 예시

[그림 1] 시스템의 기본 동작 과정

2) 시스템 설계 및 구현

2-1) 사용된 라이브러리

본 작품은 크게 6개의 Python 라이브러리를 사용하였다. OpenCV 라이브러리는 웹 카메라로 받은 영상을 처리하기 위해 사용하였다. numpy 라이브러리는 이미지를 벡터 행렬로 변환하고 행렬 연산에 사용하였다. MediaPipe 라이브러리는 손의 위치와 손의 세부적인 정보를 얻어내기 위해 사용하였다. pycaw 라이브러리는 윈도우 환경에서 볼륨 조절을 위해 사용하였고 pyautogui 라이브러리는 키보드와 마우스를 제어하기 위해 사용하였다. keras 라이브러리는 딥러닝 모델 생성 및 사용을 위해 사용하였다.

2-2) 기능 설명

2-2-1) 커서 기능

주먹을 쥔 상태에서 엄지와 검지, 중지를 동시에 올리게 되면 기본적인 마우스 기능을 수행하는 커서 기능이 실행되게 된다. 커서 기능이 실행되게 되면 손의 Landmark 8번의 좌표를 가져오게 된다. 8번의 X, Y 좌표의 값을 autopy 라이브러리의 마우스 메서드의 인자 값으로 전달하면 검지가 이동하는 방향과 일치한 상태로 마우스 커서를 조종할 수 있게 된다. 또한, 커서 기능에는 마우스 클릭 기능까지 제공하고 있는데 검지와 중지를 핀 상태에서 엄지만을 구부리게 되면 좌클릭 기능이 수행되고, 중지만을 구부리게 되면 우클릭 기능을 수행하게 된다.

2-2-2) 스크롤 기능

주먹을 쥔 상태에서 검지만 올리면 UP 스크롤 기능이, 검지와 중지를 같이 올리면 Down 스크롤 기능이 실행된다. 스크롤의 동작은 pyautogui 라이브러리의 scroll 메서드를 사용하여 구현하였다. 펼쳐진 손가락 없이 다시 주먹을 쥐게 되면 스크롤 기능은 종료가 된다. Python 모듈의 기능은 [표 1]과 같다.

==> 표 작성 예시

[표 1] Python 모듈의 기능

모듈 이름	기능
tabula	pdf를 excel로 파일 형식 변환
openpyxl	excel 내용을 python에서 읽음

IV. 결론

본 작품은 사용자에게 물리적 터치에서 벗어나 자유로운 경험을 제공하기 위해서 카메라를 이용해 손을 인식, 손동작을 구분하여 커서 기능, 스크롤 기능, 볼륨 조절 기능, 키보드 기능, 줌 기능을 제공한다. 제공된 기능을 토대로 사용자는 직접적인 터치는 없으나 터치하는 것과 같은 화면 제어의 경험을 느낄 수 있다. 또, 소프트웨어와 카메라만 있다면 비싼 터치스크린보다 더 저렴하게 화면을 제어할 수 있으니 학교와 같이 많은 교실에 터치스크린을 보급하기 힘든 장소에도 저렴한 가격으로 보급될 수 있다는 장점이 있다. 또한, 최근에 코로나로 키오스크 도입이 늘어났고, 이로 인해 많은 사람이 키오스크 화면을 만지게 되어 각종 병원균과 바이러스에 감염될 위험성이 도사리게 되었으나, 직접 터치할 필요 없이 카메라에 인식된 손동작으로 화면을 제어하는 본 작품이 키오스크로부터의 병원균과 바이러스 감염 예방에 큰 도움을 줄 것이다.

[참고문헌]

김주황, 박정훈, 전종서, 강민구, 이승현, “OpenCV를 이용한 마우스의 손동작 인식”, 2009년도 인터넷정보학회 추계학술발표대회, vol. 10, no. 02, pp. 0303-0306, 2009. 10.

강성원, 김철중, 손원, “손동작 인식을 통한 사용자에게 편리한 핸드 마우스 인터페이스 구현”, 한국방송미디어공학회 학술발표대회 논문집, pp. 129-132, 2009. 11.

허경용, 김명자, 송복득, 신범주, “가상 칠판을 위한 손 표현 인식”, 한국정보통신학회논문지 제25권 제12호 1, pp. 770–1,776, 2021. 12.

Google, “MediaPipe Solution Hands”, Google, https://google.github.io/