영상처리관련프로젝트

Download Report

Transcript 영상처리관련프로젝트

프로젝트 결과물 소개
(영상처리 관련 프로젝트)
문지민
목차
 1. 영상인식을 이용한 게임 자동사냥
 ㈜아이소프트 (2007.12 ~ 2010.01)
 MMORPG “데카론” 게임 자동사냥 예로 설명
 2. 스마트폰용 골프 스코어카드 OCR 시스템
 경북대학교 산업대학원 석사 졸업 논문(2014.03 ~ 2014.06)
1/22
1. 영상인식을 이용한 게임 자동사냥
 정의 : 게임 자동사냥은 유저가 몬스터를 사냥하고, 아이템을 줍고, HP
가 떨어지면 HP를 회복시키는 반복적인 과정을 영상인식과 키보드, 마우
스 제어를 프로그래밍적으로 하여 자동으로 하여 레벨업을 도와주는 프
로그램
 자동사냥에 쓰인 영상처리 주요 기술
 1. 차영상 – 하나의 영상을 화소 단위로 다른 영상에서 뺀 결과 영상
(자동사냥에서의 활용 : 몬스터 인식)
 2. 템플릿 매칭 - 원본 이미지에서 템플릿으로 주어진 이미지에 해당 되는 영
역을 찾는 기술
(자동사냥에서의 활용 : HP, MP, 스킬창, 아이템창 등의 대부분의 인식)
2/22
1. 영상인식을 이용한 게임 자동사냥 – MMORPG “데카론”
템
플
릿
매
칭
차
영
상
3/22
1. 영상인식을 이용한 게임 자동사냥 - 데카론자동사냥프로그램
게임 유저가 이 프로그램을 이용하여 설정하여 게임 내에서 실행
을 하게 되면 영상인식을 통하여 키보드, 마우스를 적절히 제어를
하여 자동사냥이 진행된다
4/22
2. 스마트폰용 골프 스코어카드 OCR 시스템 - 정의
 정의 : 본 시스템은 스마트폰 카메라를 이용하여 골프 스코어카드의 인식
을 할수 있도록 해주는 부분시스템(SubSystem)이다.
[ 스마트폰 ]
영상 이미지 파일 전송
[ Golf ScoreCard OCR Server ]
1)
스코어카드 촬영
1) 스마트폰에서 이미지 파일 받음
2)
이미지 파일로 저장
2) 받은 이미지 파일 OCR 인식 작
업
인식 결과 데이터 전송
• 스마트폰에서의 영상 촬영 전송만하고 고사양 PC 에서 실질적인 영상처
리를 하여 Output값을 스마트폰으로 전달
5/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– 사용예시1
 2013. 11월 런칭 서비스
중
•
6/22
2014. 03월 런칭 서비스
중
2. 스마트폰용 골프 스코어카드 OCR 시스템 - 사용예시2
•
[스마트폰]
영상분석 결과
값을 받은 상황
Golf ScoreCard OCR System
영상 이미지 파
일 전송
인식 결과 데이
터 전송
[ Golf ScoreCard OCR Server ]
1) 스마트폰에서 이미지 파일 받음
2) 받은 이미지 파일 OCR 인식 작
업
하나지 앱 구조
DB
Server
장점 : 입출력 데이터를 통신으로 송수신하기 때문에 멀티
플랫폼에서 사용가능
Chating
Server
Web 중계서버
FTP
Server
7/22
2. 스마트폰용 골프 스코어카드 OCR 시스템 – 기능 리스트
[골프 스코어카드 OCR 시스템 기능 리스트]
네트워크
1.서버는 IOCP 모델로 구성
2.파일 전송 프로토콜
3.숫자를 인식한 값을 전달하는
프로토콜
영상처리
1.제일 큰 사각형 찾기
2.제일 큰 사각형의 모서리 4개 찾기
3.Wapring
4.스코어카드 인지 판별(템플릿 매칭)
5.손 글씨 숫자 영역 추출(사각형 검출)
6.손 글씨 숫자 인식
7.클라이언트로 인식된 결과 전송
8/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– SuDoKu Solver
 SuDoKu Solver(관련연구)
 스코어카드 OCR에 관한 직접적
인 논문이나 연구는 없는 상황.
 표(Grid:격자)를 추출하고 표의
꼭지점를 이용하여 Warping를
시키는것은 스코어카드와 흡사하
여 관련 문헌을 참고하여 차용한
상태
• 참고문헌) http://www.aishack.in/2010/08/sudoku-grabberwith-opencv/
9/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– SuDoKu Solver 인식과정
1
촬영 및 이미지 획득
4
허프변환
2
3
이진화, 침식연산
5
FloodFill함수로 이웃하는 픽셀 최대값
6
SuDoKu의 꼭지점 찾음
10/22
Warpping를 한 후 숫자 OCR 수행
2. 스마트폰용 골프 스코어카드 OCR 시스템– 구현 (4. 손글씨 숫자 영역 추출)
추출 조건 : 모든 사각형을 검색하면서 Player1를 인식하는 템플릿 매칭을 수행하고 그 이후에 연속되는 9개
의 사각형은 1~9홀이라고 가정한다
1~9홀
11/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– 구현 (4. 손글씨 숫자 영역 추출)
[기존의 OpenCV findSquares 함수]
(1) 밝기 값 46부터 23씩 증감하여 10번 loop 사각
형 검출
(2) 전체 10번을 화면을 스캔하여 사각형을 검출하
기때문에 같은 격자에 중복 검출 되어진다.
(3) 배열에 저장된 4개의 꼭지점도 특정한 규칙으로
저장되어지지 않는다.
(4) 적절한 가공이 필요.
목표 : 사각형 저장좌표를 규칙적으로 재정렬
12/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– 구현 (4. 손글씨 숫자 영역 추출)
2) OpenCV findSquares 함수 수정 – 1(꼭지점 재정렬)
[가공 전 배열의 사각형 꼭지점의 값 예]
사각형 배열1- 꼭지점0(14,21), 꼭지점1(285,17), 꼭지점2(286,123), 꼭지점3(15,125)
사각형 배열2- 꼭지점0(15,18), 꼭지점1(14,125), 꼭지점2(286,124), 꼭지점3(286,17)
문제점 – 사각형의 꼭지점의 값이 불규칙적으로 배열에 저장
정렬
꼭지점0(14,21)
꼭지점0(15,18)
……
꼭지점2(285,17)
꼭지점2(286,17)
……
꼭지점1(15,125)
꼭지점1(14,125)
……
꼭지점3(286,123)
꼭지점3(286,124)
……
꼭지점 재정렬
[정렬된 배열의 값]
사각형 배열1 - 꼭지점0(14,21), 꼭지점1(15,125), 꼭지점2(285,17), 꼭지점3(286,123)
사각형 배열2 - 꼭지점0(15,18), 꼭지점1(14,125), 꼭지점2(286,17), 꼭지점3(286,124)
......
13/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– 구현 (4. 손글씨 숫자 영역 추출)
2) OpenCV findSquares 함수 수정 – 2(중복되는 사각형 필터링)
for(int i=0;i<squares.size();i++)
{
iHave = 0;
iAbsX1 = (abs(squares[i][0].x-approx[0].x)+
abs(squares[i][1].x-approx[1].x)+
abs(squares[i][2].x-approx[2].x)+
abs(squares[i][3].x-approx[3].x))/4;
(기존검색되어진 사각형 배열의 꼭지점 – 현
재검색되어진 사각형의 꼭지점) = 절대값
iAbsY1 = (abs(squares[i][0].y-approx[0].y)+
abs(squares[i][1].y-approx[1].y)+
abs(squares[i][2].y-approx[2].y)+
abs(squares[i][3].y-approx[3].y))/4;
if( ((iAbsX1+iAbsY1)/2) <4)
{
iHave = 1;
break;
}
두개의 절대값을 ½ 하여 4미만의 값이면 기
존에 사각형과 동일 => 기존 배열(squares)
에 저장 안함
}
if(iHave == 0)
{
squares.push_back(approx);
}
x, y의 두 직선으로 또 다시 하나의
직선으로 만들어서 절대값이 4이하
이면 기존의 사각형과 같다는 가정
(중복되는 사각형 필터링)
squares : 기존검색 되어진 사각형 배열
approx : 현재 검색되어진 사각형 배열
14/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– 구현 (4. 손글씨 숫자 영역 추출)
2) OpenCV findSquares 함수 수정 – 3(오름차순으로 다시 저장)
cv::Size s = image.size();
int CountHeight=0;
for(CountHeight=0;CountHeight<s.height;CountHeight++)
{
for(int j=0;j<s.width;j++)
{
for(int k=0;k<squares.size();k++)
{
// x 좌표를 중심으로 사각형 꼭지점0번째의 y값의 범위 +50 범위의 값의 배열을 재정렬한다
if( ((squares[k][0].y>=CountHeight) && (squares[k][0].y<=(CountHeight+50) )) && (j==squares[k][0].x))
{
moguwai.push_back(squares[k]);
squares.erase(squares.begin()+k);
continue;
}
}
}
CountHeight +=50;
Y좌표 50씩의 증감값으로 x좌표를 순차 검색하여
}
오름차순으로 배열을 재정렬한다
31번째 배
열의 꼭지점
0(20,10)
27번째 배
열의 꼭지점
0(50,15)
1번째 배열
의 꼭지점
0(20,10)
Sorting
15/22
2번째 배열
의 꼭지점
0(50,15)
2. 스마트폰용 골프 스코어카드 OCR 시스템– 구현 (4. 손글씨 숫자 영역 추출)
2) OpenCV findSquares 함수 수정 - 4
Player1 탬플릿 매칭 이후 2~10 배열 => 1~9홀
Player2 탬플릿 매칭 이후 13~21 배열 => 1~9홀
16/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– 실험
 전체 10장의 스코어카드 실험
 안드로이드 갤럭시S4에서 OpenCV 라이브러리를 이용하여
1054x864 해상도의 png파일(1.04mb)을 서버로 전송 하여 테스트
 실험 환경은 2가지로 분류 하였다
 (1) 골프 스코어카드 OCR 시스템 정상 처리 성공율
 스마트폰에서 사진을 촬영후 서버의 OCR인식 처리 한후 클라이언트인 스마트폰
으로 절차상의 오류 없이 정상적으로 전달된 경우의 성공율
 2가지 시점에서 각각 시점 10번 수행
TopDownView
DownView
 (2) 표안에 손글씨 숫자 인식율
 KNN과 MNIST Database의 직접적인 연관성이 있으므로 독립적으로 실험
 10명 0~9 숫자를 표안에 숫자로 강제로 추출하여 인식을 진행한 인식율
17/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– 실험
[TopDownView]
성공율 70%
실패한 경우
특정 부분이 상대적으로 밝을 때
특정 부분이 상대적으로 어두울 때
18/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– 실험
[DownView]
성공율 60%
실패한 경우
밝기가 일정하지 않은 경우
19/22
2. 스마트폰용 골프 스코어카드 OCR 시스템– 실험결과
•
(1) 골프 스코어카드 OCR 시스템 정상 처리 성공율 결과
 TopDownView(70%)와 DownView(60%)의 실험 결과 TopDownView에서는 비교
적 높은 성공율을 보였으나 DownView에서는 스코어카드를 찾는 부분에서 꼭지점을
잘못 찾는 오류로 인해서 그 이후로 진행 하지 못하였다.
•
(2) 표 안에 손 글씨 숫자 인식율 결과
 10명의 손 글씨 숫자 인식 0~9까지 테스트에서 평균 66%의 인식율을 보였다.
 오류가 나는 부분은 스코어카드의 칸 안에 숫자를 경계선과 겹칠 경우에 오류가 발생하
였고 특정 숫자에 국한되어서 오인식이 발생하지 않고 0~9 전체적으로 특정하게 오류
가 발생한다.
20/22
6. 결론
 본 논문에서는 스마트 폰 카메라로 스코어카드 사진을 찍으면 서버에서
OCR 작업을 수행하여 스마트 폰으로 인식한 숫자를 전송하는
SubSystem를 제안하였다.
 골프 스코어카드 OCR 시스템 정상 처리 성공율은 평균 65%, 손글씨
숫자 인식율은 평균 66%로 만족스러운 결과를 얻지 못하였다.
 정상 처리 성공율은 스코어카드의 4개의 꼭지점을 오인식하고 사각형 찾
는부분에 노이즈와 손실이 발생하여 정확한 사각형 찾는것을 방해하여
그부분은 보충할수 있는 연구가 필요 할거 같다.
 손글씨 숫자 인식율은 KNN과 MNIST Database를 사용하였는데 인
식을 하는 알고리즘과 트레이닝 데이터를 다양화해서 인식율을 높이는
방향으로 연구가 필요 할것 같다.
21/22
감사합니다.
22/22