★ 이 책에서 다루는 내용 ★
■ 머신 러닝 및 인공지능 알고리즘 학습
■ 이미지와 비디오 읽기, 쓰기 및 처리
■ 수학, 행렬 및 기타 유형의 이미지 데이터 작업 수행
■ 역 투영 이미지의 히스토그램 생성 및 사용
■ 동작 감지, 전경 추출 및 객체 추적
■ 특징 검출기 알고리즘으로 키포인트 추출
■ 캐스케이드 분류기 개발 및 테스트
■ 텐서플로(TensorFlow) 객체 탐지를 통한 여러 객체 탐지
★ 이 책의 대상 독자 ★
운영체제에서 C++ 프로그래밍 언어와 타사 라이브러리 사용법에 대한 지식을 쌓은 개발자의 경우에는 이 책의 주제를 매우 쉽게 이해하고 사용할 수 있다. 반면에 파이썬 프로그래밍 언어에 익숙한 개발자라면 OpenCV 라이브러리 사용법을 익히고자 이 책을 활용할 수 있다. 그러나 이 책은 C++로 구현된 알고리즘에 초점 두고 있기 때문에 예제를 C++에서 파이썬까지 스스로 적용해봐야 할 것이다.
★ 이 책의 구성 ★
1장, '컴퓨터 비전 소개'에서는 컴퓨터 비전 과학의 기본 원리, 사용처에 대해 설명한다. 컴퓨터 비전 세계를 완전히 처음 접하는 사람들을 위해 이미지의 정의와 픽셀, 깊이 및 채널과 같은 기본 속성 등등에 대해서 설명한다.
2장, 'OpenCV 시작하기'에서는 OpenCV 라이브러리를 소개하고 OpenCV 개발의 가장 중요한 빌딩 블록들을 통해 핵심 내용을 자세히 설명한다. 정보를 얻을 수 있는 곳과 정보를 사용하는 방법에 대한 내용도 함께 제공된다. CMake의 사용법과 OpenCV 프로젝트를 만들고 빌드하는 방법을 간략하게 살펴본 다음, Mat 클래스와 Mat의 변형 항목에 대해 배운다. 그리고 이미지와 비디오를 읽고 쓰며 (여러 가지 다른 입력 소스 유형 중에서) 카메라에 액세스하는 방법도 배운다.
3장, '배열 및 행렬 연산'에서는 행렬을 만들거나 변경하는 데 사용되는 기본 알고리즘을 다룬다. 또한 교차 제품, 내적 및 반전과 같은 행렬 작업을 수행하는 방법을 학습한다. 평균, 합 및 푸리에 변환과 같은 수학 연산과 함께 요소별 행렬 연산의 많은 부분에 대해서 소개한다.
4장, '그리기, 필터링 및 변환'에서는 이 책의 범위 내에서 다룰 수 있는 광범위한 이미지 처리 알고리즘을 다룬다. 이미지에 도형과 텍스트를 그리는 방법을 설명하며 선, 화살표, 직사각형 등을 그리는 법도 배운다. 필터, 확장, 침식 및 이미지의 형태학적 연산을 부드럽게 하는 것과 같은 이미지 필터링 작업에 사용되는 광범위한 알고리즘에 대해서도 설명한다. 강력한 재매핑 알고리즘과 컴퓨터 비전의 컬러 맵 사용법에 대해 잘 알게 것이다.
5장, '역투영 및 히스토그램'에서는 히스토그램의 개념을 소개하고 단일 및 다중 채널 이미지에서 어떻게 계산되는지 알려준다. 그레이 스케일 및 컬러 이미지의 히스토그램 시각화, 즉 픽셀의 색조 값으로 계산한 히스토그램도 다루며, 역투영 이미지에 대해서도 배운다(히스토그램 추출의 역동작을 학습한다).
6장, '비디오 분석-동작 검출 및 추적'은 컴퓨터 비전에서 가장 널리 사용되는 추적 알고리즘을 사용해 실시간 개체 탐지 및 추적과 같은 작업을 위해 비디오를 처리하는 방법을 설명한다. 비디오를 전반적으로 처리하는 방법에 대해 간략히 소개한 후, 실제 사례 및 객체 추적 시나리오를 사용해 평균 시프트와 CAM 시프트 알고리즘, 칼만 필터링을 학습한다. 끝 부분에서는 배경 및 전경 추출 알고리즘과 실제로 사용되는 방법에 대해서도 배운다.
7장, '객체 탐지 - 특징 및 기술자'는 템플릿 매칭을 사용해 객체 검출에 대한 간단한 소개부터 시작해 형상 분석에 사용할 수 있는 광범위한 알고리즘에 관해 설명한다. 키포인트(keypoint) 검출, 기술자 추출 및 기술자 매칭 체인이 포함돼 있으며, 간단한 픽셀 색상(color)과 명도(intensity) 값 대신 특징을 기반으로 객체를 탐지하는 데 사용된다.
8장, '컴퓨터 비전에서의 머신 러닝'은 OpenCV 내 머신 러닝(ML) 및 심층 신경망(DNN) 모듈과 가장 중요한 알고리즘, 클래스 및 기능에 대해 다룬다. SVM 알고리즘으로 시작해 유사한 훈련 그룹을 기반으로 모델을 훈련시키는 방법을 배우고 그 모델을 사용해 입력 데이터를 분류한다. HOG 기술자와 SVM을 사용해 이미지를 분류하는 방법도 배운다. 또한 OpenCV에서의 인공 신경망 구현에 대해서도 다루며, 그런 다음에 캐스케이딩 분류cascade classification 방법을 학습한다. 끝에서는 텐서플로와 같은 타사 라이브러리의 사전 모델을 사용해서 다른 유형의 여러 객체를 실시간으로 검색하는 방법도 파악한다.