자율주행 객체인식등과 같은 기술이 발전하면서 비전과 관련된 프레임워크가 많이 확산되고 있다. 이제 누구나 쉽게 컴퓨터 비전을 다룰 수 있고 머신 러닝을 이용할 수 있게되었다. 사람이 사물을 보고 무엇인지 인지하는 것은 매우 직관적이고 쉽다. 3살 이상부터는 사물을 인지할 수 있게 된다. 하지만 컴퓨터가 사물을 인식할 수 있도록 만드는 일은 결코 쉽지 않다. 컴퓨터 비전에서 주로 활용하는 정보는 밝기, 색상, 모양, 텍스처등이 있으며 이러한 정보가 머신 러닝 알고리즘을 함께 사용해 객체를 인식할 수 있게된다.
그래서 이러한 컴퓨터 비전에 대해 공부하려면 많은 분야의 지식이 필요하다. 수학의 선형대수, 확률과 통계, 미적분학 및 기하학, 신호 처리, 머신러닝에서의 패턴 인식과 딥러닝, 컴퓨터 과학, 그래픽스등의 다양한 분야 지식이 필요하다. 이 책의 경우 저자가 고등학교 이상의 수학 지식 특히 행렬과 미분에 대한 개념과 C++언어에 대한 이해가 필수라고 한다.
이 책의 OpenCV프로젝트는 Visual Studio IDLE를 사용한다. 따라서 OpenCV를 처음 다루는 독자들에게 알맞은 도서이다. 기본적으로 영상을 화면에 출력하는 HelloCV 프로젝트를 통해 정확히 동작되는지 확인할 수 있다. OpenCV는 Mat클래스를 이용해 표시한다. 따라서 기본적으로 cv::Mat 클래스로 인스턴스를 생성해 이미지를 불러올 수 있다.
OpenCV는 OpenSource Computer Vision의 약자이다. 따라서 모든 것이 공개되어 있다. 따라서 3장부터는 본격적인 OpenCV에 대해 배우는데 주요 클래스에 대해 배운다. 사진과 영상은 기본적으로 모두 행렬로 나타낼 수 있다. 따라서 이러한 행렬을 연산해서 새로운 행렬을 만들거나 부분적인 행렬을 추출할 수 있다.
영상처리 부분으로 넘어가면 영상의 밝기 및 명암비를 조절하거나 히스토그램을 분석하기도 하며, 산술적이며 논리적인 연산을 통해 필터링해 영상을 부드럽게 하는 블러링 및 가우시안 필터링, 샤프닝등의 작업을 수행할 수 있다.
다음으로 객체를 인식하기 위해서는 외곽선을 검출해야한다. 외곽선은 객체 영역 픽셀 중에서 배경 영역과 인접한 일련의 픽셀을 의미한다. 외곽선을 처리하는 함수를 소개하고 임의의 객체에 대해 바운딩 박스, 최소 크기 회전된 사각형, 최소 크기 원을 검출한 예를 수행해볼 수 있다. 각 정보를 함수에 전달해 구한 바운딩 박스등을 영상 위에 나타낼 수 있다. 이러한 영상을 작은 크기의 부분 영상 위치를 찾고 템플릿 매칭 기법을 사용해 가장 비슷한 위치를 수직적으로 찾아낸다. 마찬가지로 캐스케이드 분류기를 통해 필터를 이동시키고 얼굴을 인식할 수 있게된다.
마지막에는 머신러닝과 딥러닝에 대한 이야기도 나온다. 얇은 책은 아니지만 그렇다고 두꺼운 책도 아니다. OpenCV에 대한 코딩에 대해 대부분 이해할 수 있을만큼 다양한 예제와 설명이 있는것이 이 책의 장점이다. OpenCV를 가장 쉽게 시작해서 마지막에 딥러닝과 머신러닝에 적용하는 것까지 이해하고 수행할 수 있다. 실제 사진편집, 자율주행 자동차, 보안, 머신 비전등에 사용되는 만큼 이 분야의 기술을 무궁무진하다.
'Book review' 카테고리의 다른 글
[서평]누가 내 말 좀 들어줘 # 소설 # 누가내말좀들어줘 (0) | 2019.07.01 |
---|---|
[서평]파이썬으로 웹 크롤러 만들기(2판) (0) | 2019.05.27 |
[서평]당신의 행복은 해킹당했다 # 경제/경영 # 당신의행복은해킹당했다 (0) | 2019.04.11 |
[서평] 이것이 자바다. 신용권의 Java 프로그래밍 정복 (0) | 2019.04.03 |
[서평]디자인 씽킹 바이블-비즈니스의 디자인 # 경제/경영 # 디자인씽킹바이블 (0) | 2019.04.03 |