컴퓨터 그래픽스(공학)
Received: May. 13. 2020 Revised: Jun. 04. 2020 Accepted: Jun. 08. 2020
Corresponding Author: Won Seoung Seo (Soongsil University) E-mail: [email protected]
ISSN: 1598-4540 / eISSN: 2287-8211
Ⓒ The Korea Game Society. All rights reserved. This is an open-access article distributed under the terms of the Creative Commons Attribution Non-Commercial License (http://creativecommons.otg/licenses/by-nc/3.0), which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.
실제 대국을 위한 임베디드 환경 바둑 기보 저장 시스템※
서원성, 정기철
숭실대학교 IT대학 글로벌미디어학부 {ehvndfb, jungkeechul}@gmail.com
Real-time Go Recording System in Embedded Environment for Real Match
WonSeoung Seo, Keechul Jung
Dept. of Global Media, IT College, Soongsil University
요 약
현재 수기로 진행하는 오프라인 바둑 대국의 기보 입력 자동화를 위해서, 대국 현장에서 직접 사 용할 전용 임베디드 보드를 이용한 시스템이 필요하다. 본 논문은 임베디드 보드의 영상처리 환경 에서 조명에 강건한 처리를 위하여 물체의 형태 정보와 색상 정보를 통합하여 사용하며, 물체 추출 을 위해서는 연결 성분 분석, 에지 정보, 색상 정보를 결합해서 사용하고, 영상 처리 각 단계에서 바둑판의 고유 정보를 이용하여 연산단계를 줄였다. 결과적으로 임베디드 환경에서 연산을 최소화하 여 실제 실시간 대국 환경에서도 신뢰성 높은 기보를 자동으로 저장할 수 있도록 구현하였다. ※※
ABSTRACT
An automated system using a embedded board is required to generate the notation input of the offline Go game. This paper integrates shape and color information of the objects on the Go game board for light-insensitive processing and reduces the computation step. This paper combined the detection of obstacles using connected components with the computation of canny edge detection and HSV-based detection. As a result, the processing time is reduced in the embedded environment so that reliable notation can be automatically stored even in real-time play environment.
Keywords : Go recording(기보 작성), Embeded board(임베디드 보드), Image processing
(영상 처리)
1. 서 론
기보는 바둑이나 장기에서 대국자가 바둑돌 혹 은 장기말을 두는 위치와 순서를 기록한 자료를 말한다. 일반적으로 프로 기사들의 대국 기보는 제 3자가 수기로 기록하여 작성된다. 그러나 승단 심 사와 같은 대규모 대회에서 대국자들의 기보를 수 기로 기록하기에는 비용이 많이 발생한다.
기보 작성의 자동화 방법으로는 특수 제작된 바 둑판을 사용하거나, 영상처리 기술을 활용한 방법 이 있다. 특수 제작된 바둑판을 사용하는 경우에는 비용과 범용성의 문제가 발생하며, 영상처리를 사 용한 기보 입력 시스템은 카메라와 안정적인 영상 처리 시스템이 필요하다[1]. 또한 영상 처리 시스 템을 사용하는 경우에는 PC보다 임베디드 환경을 이용하는 것이 비용의 최소화와 시스템 설치와 환 경 구성의 용이함이 있다[2].
본 논문은 임베디드 환경에서 연산을 최소화하 면서 안정적인 바둑돌 검출을 위해서 두 가지 알 고리즘을 병행하였다. Canny Edge Detection을 이용하여 비교적 빠른 속도로 1차 바둑돌 검출을 하며, 흰돌과 백돌을 구분하기 위해 HSV 색상 공 간에서 차연산을 이용한 2차 검출을 수행한다. 오 류가 없어야하는 바둑 기보 생성의 특성상 조명과 환경에 따라 오 검출이 발생할 수 있기 때문에, 연 산 속도가 빠른 Canny Edge Detection과 비교적 연산속도는 느리지만 바둑돌 구분이 용이한 HSV 값을 병행하여 오차를 최소화하며 바둑돌을 검출하 고, 손과 같은 주변 요소로 인한 오류를 차단하여 실시간으로 동작되는 자동 기보 입력 시스템을 제 안한다.
2. 관련 연구
자동 바둑 기보 생성 방법은 특수 제작한 바둑 판을 이용하는 방법과 카메라를 통해 들어온 영상 을 처리하는 방법이 있다.
나정선은 전기 장치를 활용하여 바둑돌이 놓인
위치를 감지해 자동으로 기보를 생성하는 시스템을 구현하였다. 이 방법은 특수하게 제작된 바둑판을 사용해야 하는 이유로 비용과 범용성의 문제가 있 다[1].
A. Srisuphab 등은 대국 영상에서 바둑판 위의
교차점 좌표의 색상 정보를 활용해 기보를 만드는
시스템을 제안했다. 이 연구는 Canny Edge
Detection 영상에서 Hough Transform을 활용해
직선을 검출한 후 바둑판 위의 교차점들을 찾고,
교차점에서 추출된 색상 정보를 활용해 바둑돌의
유무와 놓인 바둑돌의 색상을 구별해 기보를 생성
한다[3]. Andrea Carta 등은 대국영상에서
Circular Hough Transform(CHT)와 Linear
Hough Transform(LHT)을 이용하여 바둑돌과 격
자 무늬를 찾아내는 자동 기보 입력 시스템을 제
안하였다. 하지만 높은 해상도의 카메라와 4개 코
어 이상의 하드웨어가 필요해 비용 문제가 있다
[4,5]. 박동진과 전경구도 CHT을 활용하여 바둑돌
을 인식해 기보를 만드는 시스템을 제안하였으며,
CHT의 많은 연산량을 줄이기 위해 첫 프레임이
아닌 직전 프레임과의 차영상을 구하였다. 그러나
이 논문은 완전 자동 기보 입력 시스템이 아닌 반
자동 입력 시스템이라는 한계를 지닌다[6]. 이대규
와 이윤구는 카메라의 각도로 인한 바둑돌의 왜곡
의 정도를 예측하여 자동 바둑 기보 저장을 위한
바둑돌 인식 방법을 제안하였다[7]. 김민성 등은
[7]의 방법을 바탕으로 바둑돌의 위치를 예측하여
그 위치의 픽셀 변화량을 비교해 자동 바둑 기보
저장 시스템을 제안하였다[8,9]. 위 대부분의 연구
들은 녹화 시작 단계부터 기보 저장의 마지막 단
계까지 전 과정을 자동화하지 못하여 실제 대국
환경에서 기보 저장에 사용할 수 있는 실용적인
시스템을 만들지 못하는 한계를 가진다. 또한 본
논문에서 제안하는 시스템은 Canny Edge
Detection과 HSV값을 이용한 연산으로 임베디드
환경에서 구현해 실제 대국 환경에서 보급하여 사
용할 수 있도록 비용을 최소화 하여 시스템의 설
치와 환경 구성에 용이함을 지닌다.
3. 본 론
3.1 환경 구성
본 논문에서 제안하는 시스템은 라즈베리파이 3 Model B+ 임베디드 환경과 바둑판, 계시기, 바둑 돌의 대국 세팅, 그리고 카메라로 구성된다. 실험 대국 환경은 ‘한국 기원’에서 진행하는 시합 상황과 최대한 동일하게 구현하였으며, 바둑판이 위치하는 테이블에서 실제 대국에서 사용하는 천을 사용하였 다.
바둑돌은 일정한 크기의 원형이며 검은색과 흰 색으로 구성된 특징을 가지고 있다. 바둑판은 검은 색 19×19의 일정한 간격의 격자이며 총 361개의 착수점이 존재한다. 카메라는 바둑판에서 수직 상 단으로 55cm 떨어져있으며, 수평에서 80° 기울어 져 배치하여 대국자의 불편을 최소화한 상태로 바 둑판 전부를 영상에 담아내도록 구성하였다[Fig.
1]. 기보 입력 시스템을 효율적으로 구축하기 위해 바둑판과 카메라 사이의 거리와 높이는 고정되어야 한다. 고정된 카메라를 통해 들어온 영상은 Perspective Transform을 이용해 위치에 무관하 게 바둑돌의 픽셀 크기를 일정하게 유지할 수 있 으며 구역을 나누기에 용이하다. 카메라의 위치 변 화에 따른 HSV 값의 변동이 바둑돌을 검출기의 성능을 저하시킬 우려가 있어 본 제약조건을 지켜 야 높은 성능을 보장할 수 있다.
본 논문에서 제안하는 시스템의 소프트웨어는 라즈베리파이 3 Model B+ 임베디드 환경에서 Python 언어로 구현하였으며, OpenCV 패키지를 이용하여 영상처리를 수행하였다.
(a) Overall appearance of environment
(b) Input image [Fig. 1] System environment
3.2 기보 자동 저장 시스템
본 논문에서 제안하는 시스템은 바둑판과 바둑 돌을 왜곡없는 일정한 크기로 정규화하기 위해 Perspective Transform을 진행한 후 초기 빈 바 둑판의 이미지를 저장한다. 이 초기 빈 바둑판 이 미지는 추후에 바둑돌 검출을 위한 차 영상으로 사용된다.
추가로 장애물을 고려한 실시간 기보 저장을 위 해서 Hand Detection을 도입하여 불필요한 연산을 방지하고 바둑 기보 입력의 오차를 최소화 한다.
Hand Detection은 입력 영상에 손과 같은 장애물
이 없을 경우에만 바둑돌 검출 알고리즘이 동작하
게 하기 위함이다.
본 논문에서 제안하는 시스템은 임베디드 환경 에서 실시간으로 진행하는 대국의 바둑돌의 색상과 위치를 인식하여 자동으로 기보를 저장한다.
먼저 노란색 계열의 격자 무늬가 그려진 바둑판 의 특징과 검정과 하양 두 가지의 색을 띄는 바둑 돌의 특징에서 착안하여, Canny 연산을 통해 바둑 돌이 착수되었을 때 격자무늬의 유무를 검출한다.
Canny 연산의 결과를 바탕으로 바둑돌이 놓였다 고 판단되었을 때, 비교적 많은 연산이 필요한 HSV 색공간의 색상 차이를 이용해 바둑돌을 정밀 하게 검출한다.
바둑돌 검출 알고리즘은 비교적 연산량이 많은 HSV 값 기반 검출과 비교적 연상량이 적고 빠른 Canny Edge Detectiond을 이용하여 바둑 기보 저장의 오차를 최소화 하며 1차 검출로 Canny Edge Detection, 2차 검출로 HSV Based Detection을 이용한다[Fig. 2].
[Fig. 2] System process 3.2.1 Perspective Transform
바둑돌을 인식하기 위한 첫 단계로 카메라의 각 도에 따른 바둑판과 바둑돌의 왜곡 현상을 해결하 기 위해 Perspective Transform을 진행한다. 대국 중에는 바둑판이 미세하게 대국자에 의해서 움직일 수 있으며, 또한 바둑판의 모서리에서 바둑판 내 격자 모서리까지의 거리가 바둑판 마다 일정하지
않기 때문에, 본 논문에서는 Perspective Transform을 진행하기 전에 바둑판 내 격자의 모 서리를 검출한다[Fig. 3].
[Fig. 3] Pseudo code of perspective transform
위치가 고정된 카메라의 입력 영상 중앙에 바둑 판이 위치하고, 바둑판의 색이 비교적 균일함에 착 안하여 HSV영역의 값 중 색상을 나타내는 Hue 값으로 바둑판을 검출한 마스크를 생성한다. 이 마 스크를 이용해 Shi-Tomasi Corner Detection을 사용하여 [Fig. 4](a)와 같이 바둑판의 네 모서리를 찾는다.
바둑판의 격자 이미지 생성 단계에서 이미지의 노이즈를 제거하기 위한 Mophology 연산은 dilate 연산 후 close 연산을 하였으며, 필터는 5×5 사이 즈를 사용하였다. 그 후 Canny 연산을 이용해 [Fig. 4](b)와 같이 바둑판의 격자무늬 이미지를 생성한다. 다음으로 [Fig. 4](a)에서 찾은 네 모서 리에서 시작하여 [Fig. 4](b)의 격자까지 너비 우 선 탐색(BFS)을 이용해 바둑판 내부에 있는 바둑 판 격자의 모서리들을 [Fig. 4](c)와 같이 찾아주었 다. 최종적으로 바둑판 내에 위치한 격자의 네 모 서리를 이용해 Perspective Transform을 진행한 결과를 (722×722)px의 이미지로 [Fig. 4](d)와 같 이 저장한다. 본 논문에서는 이후에 HSV 값을 이 용한 차연산을 위해 빈 바둑판 이미지인 [Fig.
4](d)을 따로 초기 이미지로 저장한다.
(a) Four corners of board
(b) Results of Canny operation
(c) Four corners of grid
(d) After perspective transform [Fig. 4] Process of perspective transform 3.2.2 Hand Detection
실시간 기보 입력 시스템을 위해 검출 알고리즘 은 오차를 최소화하고 불필요한 연산을 막으며 바 둑돌 뿐 아니라 손, 머리 등과 같은 장애물의 감지 도 필요하다. 본 시스템은 connected component 알고리즘으로 검출된 객체들의 component 크기를 비교하여 바둑돌의 평균 component 값을 구하고 그 값을 기준으로 손과 같이 바둑돌 보다 더 큰 객체가 감지될 경우 바둑돌 검출 알고리즘을 정지 시켜 장애물로 인한 시스템의 오류를 최소화 한다.
초기 이미지인 [Fig. 5](a)와 [Fig. 5](b)의 차 영
상이 [Fig. 5](c)이며 connected component 알고
리즘을 적용한 결과는 [Fig. 5](d)와 같다. 바둑돌
보다 더 큰 객체가 없을 경우 초기 이미지를 현재
이미지로 갱신하여 바둑돌의 붙음으로 인한 바둑돌
의 component 값 증가를 막는다.
(a) Initial image
(b) Input image
(c) Image subtraction (a) from (b)
(d) After connected component operation [Fig. 5] Process of hand detection
3.2.3 Canny Edge Detection
바둑돌 검출을 위한 Canny Edge Detection은 여러 단계를 이용해 이미지의 Edge를 찾는 다단계 알고리즘이다. [Fig. 6](a)를 Canny 연산 처리한 결과는 [Fig. 6](b)과 같다. (722×722)px의 [Fig.
6](a)에서 361개의 착수점을 기준으로 나눈 각 칸
의 크기는 (38×38)px 이며, 본 논문에서는 각 착
수점의 중앙기준 (10×10)px 크기의 패치를 이용한
다. 패치의 크기는 바둑돌의 크기보다 작기 때문에
[Fig. 6](c)와 같이 돌이 없는 경우 패치 내부에
Edgeness가 나타나고, [Fig. 6](d)와 같이 돌이 있
는 경우 패치 내부에 Edgeness가 없는 것을 알
수 있다. 결과적으로 [Fig. 6](b)에서 Canny 연산
을 통해 각 패치 내부의 Edgeness 유무를 검사하
여 패치에 눈에 띄는 색으로 표시한 1차 검출을
진행한 결과는 [Fig. 6](e)과 같다. 이 결과의 오류
를 최소화하기 위해 검출된 착수점을 대상으로 다
음 HSV Based Detection을 진행한다.
(a) Input image
(b) Canny operation of (a)
(c) Patch appearance “Without” stones
(d) Patch appearance “With” stones
(e) Result of primary stone detection [Fig. 6] Process of Canny edge detection
3.2.4 HSV Based Detection
비교적 연산량이 적은 Canny Edge Detection
을 통해 1차 검출된 착수점들 중에서 바둑돌이 아
닌 착수점을 찾아내 HSV값을 이용한 바둑돌의 2
차 검출을 진행한다. 본 논문에서 2차 검출은 1차
검출을 통해 검출된 착수점을 대상으로 진행하며
(722×722)px 크기의 361개의 착수점을 기준으로
나눈 (38×38)px 크기의 패치 각각을 색상, 채도,
명도 세 값으로 분리한 각 패치 내부값의 평균을
이용하는 수식은 다음과 같다.
(eq. 1)
위 수식에서
과
은 이미지의 가로, 세로 크 기이며
는 각각 이미지의 (i,j) 좌표 픽셀의 색상, 채도, 명 도 값이다.
같은 방법으로 Perspective Transform 단계에 서 저장한 초기 이미지의 361개 패치의 색상, 채 도, 명도 세 값의 평균을 구한 값에서 현재 이미지 의 값을 뺀 값의 임계값을 검사하여 최종적으로 바둑돌을 검출한다. 임계값은 색상, 채도, 명도 모 두를 비교하여 한가지 값이라도 임계값을 넘으면 바둑돌로 검출하게 된다. 검은돌은 초기이미지에 서 현재값을 뺀 결과가 양수로 나타나며 흰돌은 이와 반대로 이 값이 음수로 나타난다. 바둑 대국 은 검은돌부터 시작하여 흰돌 검은돌 교차적으로 놓기 때문에 본 논문에서는 차례에 따라 다른 임 계값을 설정한다. 이렇게 임계값을 넘은 착수점이 최종적으로 바둑돌로 검출되어 기보에 저장한다.
[Fig. 7](b)는 [Fig. 7](a)에서 최종적으로 검은돌과 흰돌의 검출을 칸의 크기에 맞춰 나타낸 결과이다.
(a) Input image
(b) Final detected image of stones [Fig. 7] Process of HSV-based detection
4. 구현 및 실험
본 논문에서 제안한 시스템에서 손 등의 장애물
을 감지하기 위한 connected component의 임계값
은 바둑돌의 크기에 맞추기 위해 전체 바둑판 크
기인 (722×722)px를 361개의 착수점을 기준으로
나눈 (38×38)px에 맞춰 설정하였다. 1차 검출인
Canny Edge Detection에서는 내부 패치의
Edgeness의 유무를 이용해 검출하였다. 2차 검출
인 HSV Based Detection에서는 HSV 각각의 임
계값을 실제 대국 환경의 조명과 유사한 실험환경
에서 손과 머리와 같은 주변 요소들이 만들어내는
그림자에도 영향 없이 임의로 조정하였다.
본 논문에서 제안한 시스템은 저전력 쿼드코어 인 1.4GHz ARM Cortex-A53 MP4의 CPU와 1GB의 메모리를 가지는 라즈베리파이 3 Model B+임베디드 환경에서 Python을 이용해 구현하였 다[10]. 본 자동 기보 입력 시스템으로 일반적인 조명 환경에서 검은돌과 흰돌을 한 수당 규칙적인 시간으로 교차해가며 놓으며 실험하였다. 실제 실 시간으로 진행되는 대국 환경에서 기보의 오차가 없어야 함을 가정하여 오차가 없는 조건을 찾을때 까지 반복하였다. 본 시스템이 오차 없이 작동하기 위해서는 바둑돌을 착수하고 손과 머리와 같은 장 애물이 화면에서 완전히 밖으로 나가야 하며, 착수 하는 시간은 3 ~ 5초로 일정해야 하는 제약을 알 수 있었다. 이와 같은 제약조건에서 본 시스템은 임베디드 환경내에서 65ms ~ 70ms의 실행속도로 작동함을 보인다.
5. 결 론
본 논문에서는 임베디드 환경에서 실시간으로 동작되는 자동 기보 입력 시스템을 제안하고 구현 하였다. 이전의 연구들과 비교해 보았을때 본 논문 에서 제안하는 시스템은 실제 수많은 대국이 이루 어지는 환경에서 이용하기 위한 목적으로 저전력 쿼드코어인 1.4GHz ARM Cortex-A53 MP4의 CPU와 1GB의 메모리를 가지는 라즈베리파이 3 Model B+임베디드 환경을 이용하여 비용을 최소 화 하였다. 이 시스템은 Canny Edge Detection과 HSV Based Detection을 이용해 연산을 최소화하 여 실제 대국 환경에서도 임베디드 환경을 통한 신뢰성 높은 기보를 자동으로 입력할 수 있음을 보여준다. 이 연구를 위해서 한국기원에서 주관하 는 바둑 대회 녹화 영상을 바탕으로 실제 대국 환 경과 동일하게 구축한 실험실 환경에서 다양한 조 명이나 돌발변수에 적응할 수 있는 시스템을 구축 하려 노력하였다. 하지만 기보 입력에 오차없이 작 동하기 위해서는 일정한 속도로 착수해야 하며, 착
수 후에는 바둑판 위에 손과 같은 장애물이 없어 야하는 제약을 가진다. 향후에는 이 시스템의 제약 을 완화하고 영상녹화기능을 추가하여, 만들어진 기보와 영상파일을 같이 저장해 서버로 전송하는 자동 기보입력 대국 환경을 구성할 수 있음을 전 망한다.
ACKNOWLEDGMENTS
본 연구는 과학기술정보통신부 및 정보통신기획 평가원의 SW중심대학사업의 연구결과로 수행되었 음(2018-0-00209)
REFERENCES