1.1 왜 컴퓨터 비전인가?
1950~1960년대 사람의 시각에 필적하는 컴퓨터 비전 시스템을 만들려는 목표
- 컴퓨터 성능의 미약으로 무모한 목표라는 것을 깨달음. 특수한 환경에서 특수한 임무를 수행하는 시스템을 구현하는 실용적 목표로 전환.
컴퓨터 비전 응용 사례
- 오락 : 사람의 동작을 인식하는 기능은 게임이나 가전을 편하게 제어할 수 있도록 인터페이스로 사용된다. 이런 종류의 인터페이스를 그래픽 사용자 인터페이스 GUI(Graphical User Interface)와 구별하기 위해 자연스런 사용자 인터페이스 NUI(Natural User Interface) 또는 자연스런 인터페이스 NI(Natural Interface)라고 부릅니다. <아바타>와 <타이타닉>에서와 같이 실사 영상과 컴퓨터 그래픽스로 제작된 영상을 합성하여 실물감이 뛰어난 영화의 한 장면을 제작.
- 교통 : 자동차의 자율 주차 기능. 자율 주행 자동차의 자율 주행. 운전자의 졸음 상태를 인식하고 경고를 울리는 서비스. 번호판을 인식하여 과속 단속 또는 주차 관리를 하는 제품.
- 보안 : 공항 검색대에서 짐을 검사하는 비전 시스템. 감시용 카메라는 도로, 골목, 학교, 관공서 등 도처에 설치. 얼굴, 지문, 홍채 인식을 이용한 보안 제품.
- 산업 : 공장 자동화. 칩, 기계 부품, LED 와 같은 생산 제품의 검사, 조립, 페인트 칠, 납땜 과 같은 작업. 몸통이 고정된 매니퓰레이터 로봇. 바퀴가 달린 아동용 로봇.
- 계산 사진학 computational photography : 여러 장의 사진을 찍어 그것들을 이어 붙여 파노라마 영상을 제작하는 기능. 적정 노출에 실패한 사진의 복원. 사진에서 물체를 오려내어 다른 사진의 배경에 붙이는 작업. 흑백 영화를 컬러를 변환하는 작업.
- 의료 : 여러 장의 2차원 단층 영상으로부터 3차원 영상 생성. 수술 부위를 찾아 안내하는 수술용 로봇. 혈액 샘플을 보고 단위 면적당 적혈구의 수를 세거나, 특정 세포의 움직임을 추적하여 활동성을 추정하는 작업.
- 과학 : 화성의 표면 사진을 찍고, 토양 샘플을 채취하는 등의 임무를 진행시, 웅덩이에 빠지거나 돌부리에 걸려 넘어지지 않을 때 활용됨. 나노 과학에서 전자 현미경으로 찍은 영상을 분석하여 나노 제품의 품질을 분석.
- 농업 : 사과나 딸기 같은 농산품을 기계 장치에 넣어 분류할 때, 좀 더 정확하고 빠르며, 비접촉으로 훼손 없이 분류 작업 마무리. 농산물 자라는 환경 감시.
- 군사 : 다리 네 개 군사용 로봇 빅독. 150kg 짐 지고 시속 6.4km 달릴 수 있는 스텔레오 비전 기능.
- 모바일 : 관광 안내용 이나 교육용 증강현실 augmented reality 스마트폰 앱 증가. 파노라마 영상을 만들어주는 포토신스 Photosynth, 나뭇잎을 찍으면 어떤 식물인지 알려주는 리프스냅 LeafSnap, 책 표지, 와인 라벨, 유명 건물 등을 인식하는 Goggles 앱.
1.2 컴퓨터 비전 문제는 어떻게 해결하나?
사람의 시각. 빠르고 강건 robust.
강건 : 어떠한 상황에 처하더라도 비슷한 성능을 발휘한다.
컴퓨터로 사람 수준의 성능을 발휘하는 것은 현재 기술로 "불가능"하다. 왜?
1.2.1 과학적 접근과 공학적 접근
컴퓨터 비전의 목표
¹ (과학적인 접근 방법) 사람의 시각에 맞먹는 인공 시각을 만든다
² (공학적인 접근 방법) 한정된 범위에서 특정한 임무를 달성하는 인공 시각을 만든다.
¹ 이 어려운 이유
- 어떤 영상이 입력되더라도 내용을 분석하고 해석하고 이해한 후 그 결과를 출력
- 과학적인 접근 방법 * : 인간의 시각이 어떻게 작동하는지 원리를 밝혀낸 다음, 컴퓨터로 모방해야함. 이는 뇌 과학의 주된 관심사 중 하나이다. (* 12장을 읽어보기)
- 사람 시각과 관련된 연구가 궁금하다면 'Frisby2010', 'Kruger2013' 찾아보기
컴퓨터 비전이 어려운 본질적 이유
¹역 문제 inverse problem
입력 영상은 3차원 세계를 투영하여 얻음. → 컴퓨터 비전은 2차원 영상으로부터 역으로 3차원 세계를 알아냄.
투영 과정에서 물체까지의 거리와 같은 중요한 정보가 사라짐.
하지만 사람의 경우 영상을 보면 필요한 3차원 정보를 매우 쉽게 추론함. 이런 점에서 희망을 가져볼 수 있지만
∴ 아직까지 그런 추론 기능을 갖는 알고리즘은 없다.
²불량 문제 ill-posed problem
문제의 답이 유일하지 않다.
예를 들어, 영역 분할 문제. 사람 몸 전체를 하나의 영역으로 분할 할 수 있지만, 얼굴, 몸통, 다리, 팔을 각기 다른 영역으로 분할 할 수도 있다.
³여러 변형 발생
여러 변형이 동시에 일어난다. 크기, 회전, 투영이라는 기하학적 변환 geometric transformation 뿐만 아니라 조명, 그림자 등의 광도 변환 photometric transformation이 동시에 일어난다.
⁴광학적 잡음 발생
영상 획득 과정에서 발생하는 여러 종류의 광학적 잡음도 문제다.
이에 따라서 목표 해결 방식이 자연스럽게 ²로 이어졌다.
² 공학적인 접근 방법
과학적인 접근 방법에서 언급했던 어려움과 원인의 정도만 줄어듦.
여전히 역 문제, 불량 문제, 여러 변형의 복합적 발생, 잡음 발생이 존재.
1.2.2 계층적 처리

¹전처리 preprocessing
주로 영상 처리 image processing이 담당.
카메라로 획득한 원본 연상 original image를 받아 사용 목적에 맞게 적절하게 처리하여 보다 개선된 영상으로 만들어 줌.
잡음을 제거하거나 초점이 흐린 영상을 개선하는 등의 연산이 좋은 사례 (2장 내용)
²특징 추출 feature extraction
에지, 선분, 원, 코너, 텍스처 등의 특징을 추출.(3~5장 내용)
특징의 속성값을 계산하여 특징 벡터를 만드는 알고리즘 공부 (6장 내용)
특정 응용 문제를 풀어내는데 성공하려면, 어떤 특징을 사용할지 정하는 일이 매우 중요.
- 얼굴 인식은 유사 하르 Haar-like를 사람을 탐지하는 데 HOG(Histogram Of Gradient)특징이 우수한 성능을 보인다고 알려져있다.
- 물체 인식이나 물체 추적 문제를 해결할 때, 과거 '에지나 영역 특징' 사용 → 지금은 'SIFT나 SURF와 같은 지역 특징' 사용
³해석
추출한 특징을 입력받아 그것을 분석하고 해석.
해석하는 방식은 응용 목적에 따라 다르다.
- 얼굴 인식이 필요한 응용 : 분류를 수행.
- 의료 분야 : 의사가 세밀하게 들여다봐야할 의심스러운 곳을 출력.
- 자율 주행 자동차 : 차량의 주행 방향 출력.
응용 현장에서 수집한 지식을 담은 지식베이스를 사용하기도 한다. 또한 많은 샘플 영상을 수집하여 데이터베이스를 구성한 다음 classifier를 학습시키거나, 문맥 정보를 후처리 단계를 두어 성능을 극대화하는 노력을 기울이기도 함. (7~12장 내용)
1.2.3 문제 해결 도구
- 자료구조와 알고리즘
자료구조
알고리즘 중간 처리 과정에서 발생하는 데이터를 표현할 적절한 자료구조 필요.
컴퓨터 비전은 주로 2차원(또는 3차원) 배열, 트리, 그래프 등의 자료구조를 사용.
처리 속도를 올리기 위해 힙heap, 해싱hashing, 탐색 트리search tree를 이용.
영상에서 추출한 특징이나 점, 선, 면, 초평면의 기하학적 요소는 벡터와 행렬을 사용.
알고리즘
실시간 시스템과 같이 빠른 처리가 필수인 경우 고속 수행을 위한 알고리즘이 중요함.
탐용 방법 'greedy method', 동적 프로그래밍 'dynamic programming', 한정 분기'branch and bound'등의 많은 알고리즘 방법론 동원.
수천 내지 수만 개의 특징을 보다 빨리 매칭하기 위해 kd 트리나 해싱과 같은 특수한 자료구조를 동원하여 고속 매칭 알고리즘을 구현.
- 수학
문제를 공식화하고 그것을 푸는 알고리즘을 도출하는데 수학이 많이 사용된다.
- 행렬 연산을 주로 다루는 선형 대수 linear algebra
- 변화량을 측정하거나 극점을 탐색하기 위한 미분학 calculus
- 의사 결정이나 분류를 위한 확률과 통계 Probability and Statistics

1. 주어진 문제를 최적화 문제로 공식화 한다.
- 비용 함수 cost function을 정의하는 것이 중요하다.
- 비용 함수는 매개변수를 포함한다.
2. 비용 함수를 최소화 또는 최대화하는 매개변수 값을 찾아 그 값을 해로 취한다.
3. 이렇게 찾은 해
- 영역 분할 결과(5장 내용)
- 최적의 classifier (8장 내용)
- 인식 결과 (9장 내용)
- 영상 파싱 결과 (12장 내용)
→ 미분에 많이 의존. 미분에 대한 이해 필요
고등학교 수학은 대부분 분석적 analytical 방법으로 문제를 해결.
ax²+bx+c=0. 매개변수가 x 뿐.
하지만 컴퓨터 비전은 매개변수가 수십 개인 경우도 있고, 수백 또는 수천개에 이르러 분석적 풀이가 불가능한 경우가 많다.
초기 해를 설정하고 어떤 과정을 반복하여 최적해 optimal solution에 조금씩 접근시키는 수치적 numerical 방법을 많이 사용한다.
항상 최적해에 도달하는 것은 아니고 최적해에 가까운 부 최적해 suboptimal solution에서 끝내고 만족하는 경우도 많음.
- 기계학습
데이터가 복잡해지고 많아진 탓에 Machine Learning, ML을 도구로 활용.
영상의 크기가 수천x수천으로 커졌고, 인터넷에서 다량으로 영상을 수집할 수 있음.
수많은 데이터를 모두 만족하는 규칙을 만드는 것은 불가능하나, 기계 학습은 충분히 많은 양의 데이터를 사용할수록 성능이 높아지기 때문.
신경망, SVM, AdaBoost, random forest와 같은 classifier를 비롯해 MRF(Markov Random Field_도 학습을 통해 만들어짐.
1.3 시스템 설계
시스템을 설계하는 목적은 사람과 상황에 따라 다양하다. 각자의 목표와 상황에 따라 공부할 범위와 깊이가 달라진다. 그런 차이에도 불구하고 모두 아래의 컴퓨터 비전 시스템 설계 과정을 거쳐야 한다.

시스템 개발은 순차적으로 일어나지만, 순서에 따라 각 단계를 한 번씩 거치고 끝나는 것이 아니고 성능에 만족할 때까지 여러 번 피드백한다. 예를 들면, 데이터베이스를 수집 후 그것을 관찰하면 문제에 대한 이해가 더 깊어지고 결국 알고리즘 설계에 영향을 미친다. 성능 평가 결과가 만족스럽지 못하면 문제의 제약 조건을 더 강하게 설정하거나 데이터베이스를 확장할 수도 있고, 알고리즘을 새로 설계하기도 한다.
1.3.1 문제 이해
문제에 대한 직관적이고 철저한 이해가 선행되어야 한다. 때때로 자신이 제약 조건을 설정하고 문제 범위를 결정할 수 있는 상황을 만날 수 있다. 이런 경우 면밀한 검토를 통해 적절하고 합리적인 제약 조건을 정한 후, 다음 단계로 진입하는 것이 바람직하다.
1.3.2 데이터베이스 수집
고품질 데이터베이스를 확보한 후 진행해야 효과적이다. 이 작업의 중요성을 알지 못한 채 부실한 데이터베이스로 개발을 시작하면 나중에 문제가 생길 수 있다.
수집한 샘플은 보통 두 개의 집합으로 나누어 놓는다.
¹학습 집합 learning set 또는 훈련 집합 training set : 시스템을 학습시키는 데 사용할 집합
²테스트 집합 test set : 완성된 시스템 성능을 평가하는 데 사용할 집합
¹+² 를 데이터베이스라고 한다.
데이터베이스를 이용하여 시스템을 학습시키려면 샘플 영상에 적절한 표지 label 를 붙여줘야한다.

물체 인식 성능을 겨루는 PASCAL VOC에서 제공하는 데이터베이스.
각각의 영상에 대해 물체의 부류와 위치를 표시해두었다.
이러한 표지 label 정보를 그라운드 트루스 ground truth 라 부르는데, 컴퓨터 비전 시스템이 알아내야하는 정답이다.

표지 label은 글자의 부류이다.

UC Berkeley에서 제공하는 영역 분할용 데이터베이스.
각각에 대해 사람이 분할한 결과를 표시해두었다. 이 경우 영역이 표지 label에 해당한다.
1.3.3 알고리즘 설계와 구현
알고리즘 설계
주어진 문제를 정확히 이해한 후 그 문제에 적합한 알고리즘을 새로 개발하거나 기존 알고리즘 중에서 그 문제에 가장 우수한 성능을 보이는 것을 선택하는 일은 아주 중요.

위 그림처럼 각각의 단계는 여러 세부 문제로 구성됨. 이 문제를 푸는 많은 종류의 알고리즘이 개발되어 있음.
예를 들면, 사람의 손동작을 인식하는 문제를 생각. 손을 찾아내는 단계에서 손 모델을 이용하여 매칭 연산을 함.
에지나 영역을 사용해 연산하거나 SIFT와 같은 지역 특징을 사용할 수 있음.
영역을 사용하기로 결정했다면, 여러 영역 분할 알고리즘 중에 어떤 것을 사용할지 결정.
이러한 방법론적 다양성은 무엇을 의미할까?
자신의 문제에 가장 적합한 알고리즘을 선별하는 작업이 어려울 뿐만 아니라 아주 중요하다는 점이다.
좋은 알고리즘을 찾기 위한 가장 확실하고 널리 사용하는 방법 -> 데이터베이스를 이용하여 실제 성능 실험을 수행하고, 그 결과에 따라 알고리즘을 선택함.
알고리즘을 찾을 때까지 다양한 알고리즘을 적용해보는 heurisitic한 방식을 사용. 이때 주어진 문제에 대한 통찰력과 공학적 경험을 갖추고 있다면 시행 착오를 줄일 수 있다.
좋은 알고리즘을 선별하는데 크게 도움이 되는 길잡이
지역 특징 [Schmid2000, Mikolajczyk2005a, Mikolajczyk2005b]
영역 분할 [Estrada2009]
프로그래밍
컴퓨터 비전 시스템을 구현할 때는 기본 자료구조를 설계하고 영상을 읽고 저장하는 일과 같은 기초적인 기능을 지원하는 프로그래밍 환경을 활용하는 것이 좋음.
OpenCV는 기본 기능은 물론 컴퓨터 비전 분야 전체를 망라하는 알고리즘을 구현하여 라이브러리로 제공한다.
특히 C, C++에 익숙한 사람에게 유용. (국내 Opencv 커뮤니티: http://cafe.naver.com/opencv)
Matlab은 C, C++과 같은 범용 프로그래밍 언어에 익숙하지 않은 사람이 쉽게 접근할 수 있는 대안.
처음에는 수학 패키지로 개발, 현재는 IPT (Image Processing Toolbox)라는 이름으로 컴퓨터 비전용 함수도 다수 제공중.
적은 수의 명령어로 알고리즘을 구현할 수 있고, 어떤 알고리즘의 동작이나 성능을 단시간 내에 파악하는 목적으로 적합. 하지만 수행 속도가 느려서 현장에 설치할 시스템에 개발할 때는 C, C++과 같은 범용 프로그래밍 언어로 구현하는 것이 좋음.
이외 다양한 소프트웨어 [Estrada2009]
대표적 4 가지 영역 분할 알고리즘을 구현한 오픈 소스 또는 실행 프로그램이 있는 웹사이트를 찾을 수 있음.
1.3.4 성능 평가
컴퓨터 비전 시스템을 개선하는 동력이 되는 과정.
폭 넓은 성능 평가 방법 [Christensen2002]
자동차를 찍은 영상이 들어옴. 세단, RV, 버스, 트럭, 트레일러 5개의 class로 분류하는 시스템을 생각.
이 시스템의 인식 성능을 측정하려면 맞는 샘플 (버스를 버스로 분류), 틀리는 샘플 (세단을 트럭으로 분류), 기각하는 샘플의 개수를 세어 정인식률 correct recognition rate, 기각률 rejection rate, 오류율 error rate를 계산.
N은 테스트 집합 test dataset의 크기, 즉 테스트 집합 test datasert 샘플 영상의 개수.
기각이란 시스템이 결과에 자신이 없어 분류를 포기한 경우. 대부분의 분류기는 매개변수를 설정하여 어느 정도 기각할 수 있을지 조정할 수 있음.

오류 경향을 더욱 세밀하게 분석할 때는 혼동 행렬 confusion matrix을 사용한다.

위 행렬은 앞의 자동차 인식 예처럼 다섯 부류인 경우 단순히 열과 행을 다섯개로 확장하면 됨.
n₁₁ 은 w₁ 을 w₁ 으로 옳게 분류한 샘플의 개수, n₁₂ 는 w₁을 w₂로 틀리게 분류한 샘플의 개수.
분류기가 어떤 부류를 다른 부류로 혼동하는지 경향을 일목요연하게 파악할 수 있다.
폐 영상을 보고 폐암 환자를 찾거나, 반도체 칩 영상을 보고 불량품을 찾거나, 사진 영상에서 얼굴을 찾는 일과 같이 어떤 대상을 검출하는 detection 문제는 검출하고자 하는 긍정 부류 w₁와 그렇지 않은 부정 부류 w₂로 구별하는 이진 분류 문제이다.
식 (1.1)의 성능 지표를 사용할 수 있지만, 그것만으로는 부족하다. 긍정과 부정이 심한 불균형을 이룬 경우가 많기 때문.
예를 들면 칩 검사가 불량률 0.1%면, 무턱대고 모두 우량품(부정 부류 w₂)라고 말해도 정 인식률이 99.9%가 된다.
이진 분류의 결과는 네 가지로 나눌 수 있다. w₁을 w₁으로 옳게 분류한 샘플 참 긍정 TP(True Positive), w₂를 w₂로 옳게 분류한 샘플은 참 부정 TN(True Negative), w₁을 w₂로 틀리게 분류한 샘플은 거짓 부정 FN(False Negative), w₂을 w₁으로 틀리게 분류한 샘플은 거짓 긍정 FP(False Positive)라 한다.
FP는 거짓 검출 FD(False Detection) 또는 거짓 경보 FA(False Alarm)라고도 한다. 불량 검출의 경우, 찾는 것이 불량이므로 불량이 긍정에 해당하고 우량은 부정이다. 거짓 긍정 대신 거짓 경보라는 용어가 적절할 수 있다.
1.4 인접 학문

영상 처리 image processing은 영상 입력을 받아 처리하여 새로운 영상 출력. 새로운 영상은 주어진 목적을 달성하는데 더 적합한 형태.
예를 들어, 스무딩 smoothing 연산을 적용하여 잡음이 줄어든 영상을 만든다거나, 렌즈를 거치면서 왜곡된 영상을 다시 펴서 정상적인 영상으로 만드는 작업이 영상 처리에 속함.
영상 처리는 주로 전처리 과정에 사용. (2장 내용)
컴퓨터 그래픽스가 컴퓨터 비전과 반대 과정. 입력된 고급 묘사를 바탕으로 영상을 생성하거나 합성. 물체의 이동 방향과 속도가 주어지면 물체의 이동에 따라 여러 장의 영상을 합성 후, 연속으로 보여줌으로 애니메이션을 만듦.
패턴 인식과 컴퓨터 비전.
패턴 인식은 얼굴이나 문자처럼 영상으로 표현되는 패턴도 다루지만, 주식 시황, 음성 신호, 고객 소비 성향, 날씨 변동과 같은 온갖 종류의 데이터를 패턴으로 간주하고 분석과 분류 작업을 수행.
특징 추출기가 입력 패턴에서 특징을 추출하여 특징 벡터로 표현, 신경망이나 SVM과 같은 분류기가 특징 벡터를 분류하고 부류를 출력. 따라서 특징 추출기와 분류기의 성능을 높이려고 노력함.
1.5 학습을 위한 지원
도서
- [Szeliski2011] Richard Szeliki, Computer Vision : Algorithms and Applications, Springer : 컴퓨터 비전의 최신 주제를 거의 빠짐없이 다루고 있음. 실용적 응용 군데군데 제시하여 이론과 응용을 균형 있게 설명. 책 원고 전체가 저자의 홈페이지에 공개. 하지만 알고리즘 기초 원리부터 공부해야하는 초보자를 위한 입문서로는 부족하다.
- [Sonka2008] Milan Sonka, Vaclav Hlavac, and Roger Boyle, Image Processing, Analysis, and Machine Vision, 3rd Edition, Thomson : 초보자용 입문서로 적당. Matlab 코드를 담은 쌍둥이 책 [Svoboda2008]있음. 컴퓨터 비전과 Matlab 프로그래밍 공부 동시에 하여 일석이조 효과를 거두고자 할 때 안성맞춤.
- [Shapiro2001] Linda G. Shapiro and George C. Stockman, Computer Vision, Prentice Hall : 초보자 입문서 또는 대학 강좌 교재로 훌륭함. 출판 이후 10년이 넘어 최신 주제와 알고리즘이 빠짐.
학술지 및 학술대회
컴퓨터 비전 연구를 주도하는 학술지
최고 권위 학술지 2종 & 새로운 아이디어를 제시한 논문과 기존 방법론을 조사하고 원리를 조리 있게 설명하는 튜토리얼 논문
- IEEE Transactions on Pattern Analysis and Machine Intelligence(PAMI)
- International Journal of Computer Vision(IJCV)
- Image and Vision Computing
- Computer Vision and Image Understanding
- Foundations and Trends in Computer Graphics and Vision
패턴 인식, 영상 처리, 컴퓨터 그래픽스 전문 학술지 (컴퓨터 비전과 겹치는 영역의 논문)
- Pattern Recognition
- IEEE Transactions on Image Processing
- ACM Transactions on Graphics
학술 대회
최고 권위 학술지 2종 & ICCV 홀수년 개최 (컴퓨터 비전 분야 최고 권위상 Marr 상), CVPR 매년 개최
- IEEE International Conference on Computer Vision (ICCV)
- IEEE International Conference on Computer Vision and Pattern Recognition (CVPR)
- Europen Conference on Computer Vision
- Asian Conference on Computer Vision
- British Machine Vision Conference
패턴 인식, 영상 처리, 그리고 컴퓨터 그래픽스 전문 학술대회 (컴퓨터 비전과 겹치는 영역의 논문)
- International Conference on Pattern Recognition
- IEEE International Conference on Image Processing
- ACM SIGGRAPH
웹사이트
CVonline(http://homepages.inf.ed.ac.uk/rbf/CVonline/)
컴퓨터 비전의 주제를 계층적으로 나누고, 그들 주제에 대한 설명을 위키피디아를 이용하여 제공. 데이터베이스, 문헌, 소프트웨어, 교육을 위한 최신 자료도 풍부
VisionBib.com(http://www.visionbib.com/bibliography/contents.html)
컴퓨터 비전과 관련된 논문을 망라하여 제공. 주제어, 저자, 시기, 학술지, 학술대회에 따라 검색 가능
Computer Vision Online(http://www.computervisiononline.com/)
소프트웨어, 데이터베이스, 책에 대한 최신 정보 제공. 컴퓨터 비전 분야 주목할 만한 뉴스도 알려줌.
Reference
오일석,『컴퓨터 비전(Computer Vision) 기본 개념부터 최신 모바일 응용 예까지』, 한빛아카데미(2014),p24-50