길벗·이지톡

도서 IT전문서/IT입문서 데이터베이스/데이터분석

컴퓨터 비전은 컴퓨터를 이용하여 정지 영상 또는 동영상으로부터 의미 있는 정보를 추출하는 학문이다. 즉, 사람의 눈과 뇌가 하는 작업을 수학적 알고리즘을 통해 컴퓨터가 수행할 수 있도록 만드는 작업이다. 컴퓨터가 사물을 인식하게끔  만드는 것이 간단하지는 않지만, OpenCV를 사용하면 좀 더 쉽게 프로그래밍할 수 있다. 이 책은 OpenCV로 간단한 밝기와 명암비 조절, 필터링, 에지 검출부터 객체 검출, 영상 매칭, 필기체 숫자 인식 등 고급 기법까지 초보자도 이해할 수 있는 설명과 체계적인 실습으로 설명한다. 또한 OpenCV는 k 최근방 이웃, 서포트 벡터 머신 등의 머신 러닝 알고리즘을 지원하며, 특히 최신 버전인 OpenCV 4는 딥러닝 활용까지 지원한다. 머신 러닝 알고리즘과 딥러닝을 이용한 필기체 숫자 인식 예제를 따라 해보면서 머신 러닝과 딥러닝을 이해해보자.

  

* 저자 깃허브에서 Visual Studio 2017과 OpenCV 설치 방법, 일부 책 내용에 대한 동영상 강의를 무료로 볼 수 있습니다.

저자 깃허브: https://sunkyoo.github.io/opencv4cvml/

목차

1장 컴퓨터 비전과 영상의 이해

1.1  컴퓨터 비전 개요

1.2  영상의 구조와 표현 방법

  1.2.1 영상의 획득과 표현 방법

  1.2.2 그레이스케일 영상과 컬러 영상

 

2장 OpenCV 설치와 기초 사용법

2.1  OpenCV 개요와 설치

  2.1.1 OpenCV 개요

  2.1.2 OpenCV 설치하기  

2.2  OpenCV 사용하기: HelloCV

  2.2.1 OpenCV 프로젝트 만들기

  2.2.2 영상을 화면에 출력하기

  2.2.3 HelloCV에서 사용된 OpenCV 주요 함수 설명 

 

3장 OpenCV 주요 클래스

3.1  기본 자료형 클래스

  3.1.1 Point_ 클래스

  3.1.2 Size_ 클래스

  3.1.3 Rect_ 클래스

  3.1.4 RotatedRect 클래스

  3.1.5 Range 클래스

  3.1.6 String 클래스

3.2  Mat 클래스

  3.2.1 Mat 클래스 개요

  3.2.2 행렬의 생성과 초기화

  3.2.3 행렬의 복사

  3.2.4 부분 행렬 추출

  3.2.5 행렬의 원소 값 참조

  3.2.6 행렬 정보 참조하기

  3.2.7 행렬 연산

  3.2.8 크기 및 타입 변환 함수

3.3  Vec과 Scalar 클래스

  3.3.1 Vec 클래스

  3.3.2 Scalar 클래스

3.4  InputArray와 OutputArray 클래스

  3.4.1 InputArray 클래스

  3.4.2 OutputArray 클래스

 

4장 OpenCV 주요 기능

4.1  카메라와 동영상 파일 다루기

  4.1.1 VideoCapture 클래스

  4.1.2 카메라 입력 처리하기

  4.1.3 동영상 파일 처리하기

  4.1.4 동영상 파일 저장하기

4.2  다양한 그리기 함수

  4.2.1 직선 그리기

  4.2.2 도형 그리기

  4.2.3 문자열 출력하기

4.3  이벤트 처리

  4.3.1 키보드 이벤트 처리

  4.3.2 마우스 이벤트 처리

  4.3.3 트랙바 사용하기

4.4  OpenCV 데이터 파일 입출력

  4.4.1 FileStorage 클래스

  4.4.2 데이터 파일 저장하기

  4.4.3 데이터 파일 불러오기

4.5  유용한 OpenCV 기능

  4.5.1 마스크 연산

  4.5.2 연산 시간 측정

  4.5.3 유용한 OpenCV 함수 사용법

 

5장 영상의 밝기와 명암비 조절

5.1  영상의 밝기 조절

  5.1.1 그레이스케일 영상 다루기

  5.1.2 영상의 밝기 조절 

  5.1.3 영상의 밝기 조절 직접 구현하기

  5.1.4 트랙바를 이용한 영상의 밝기 조절

5.2  영상의 명암비 조절

  5.2.1 기본적인 명암비 조절 방법

  5.2.2 효과적인 명암비 조절 방법

5.3  히스토그램 분석

  5.3.1 히스토그램 구하기

  5.3.2 히스토그램 스트레칭

  5.3.3 히스토그램 평활화

 

6장 영상의 산술 및 논리 연산

6.1  영상의 산술 연산

6.2  영상의 논리 연산

 

7장 필터링

7.1  영상의 필터링

  7.1.1 필터링 연산 방법

  7.1.2 엠보싱 필터링

7.2  블러링: 영상 부드럽게 하기

  7.2.1 평균값 필터

  7.2.2 가우시안 필터

7.3  샤프닝: 영상 날카롭게 하기

  7.3.1 언샤프 마스크 필터

7.4  잡음 제거 필터링

  7.4.1 영상과 잡음 모델

  7.4.2 양방향 필터

  7.4.3 미디언 필터

 

8장 영상의 기하학적 변환

8.1  어파인 변환

  8.1.1 어파인 변환

  8.1.2 이동 변환

  8.1.3 전단 변환

  8.1.4 크기 변환

  8.1.5 회전 변환

  8.1.6 대칭 변환 

8.2  투시 변환

 

9장 에지 검출과 응용

9.1  에지 검출

  9.1.1 미분과 그래디언트

  9.1.2 마스크 기반 에지 검출

  9.1.3 캐니 에지 검출기

9.2  직선 검출과 원 검출

  9.2.1 허프 변환 직선 검출

  9.2.2 허프 변환 원 검출

 

10장 컬러 영상 처리

10.1  컬러 영상 다루기

  10.1.1 컬러 영상의 픽셀 값 참조

  10.1.2 색 공간 변환

  10.1.3 색상 채널 나누기

10.2  컬러 영상 처리 기법

  10.2.1 컬러 히스토그램 평활화

  10.2.2 색상 범위 지정에 의한 영역 분할

  10.2.3 히스토그램 역투영

 

11장 이진화와 모폴로지

11.1  영상의 이진화

  11.1.1 이진화

  11.1.2 적응형 이진화

11.2  모폴로지 연산

  11.2.1 이진 영상의 침식과 팽창

  11.2.2 이진 영상의 열기와 닫기

  

12장 레이블링과 외곽선 검출

12.1  레이블링

  12.1.1 레이블링의 이해

  12.1.2 레이블링 응용

12.2  외곽선 검출

  12.2.1 외곽선 검출

  12.2.2 외곽선 처리 함수

 

13장 객체 검출

13.1  템플릿 매칭

13.2  캐스케이드 분류기와 얼굴 검출

13.3  HOG 알고리즘과 보행자 검출

13.4  QR 코드 검출

 

14장 지역 특징점 검출과 매칭

14.1  코너 검출

  14.1.1 해리스 코너 검출 방법

  14.1.2 FAST 코너 검출 방법

14.2  크기 불변 특징점 검출과 기술

  14.2.1 크기 불변 특징점 알고리즘

  14.2.2 OpenCV 특징점 검출과 기술

14.3  특징점 매칭

  14.3.1 OpenCV 특징점 매칭

  14.3.2 호모그래피와 영상 매칭

14.4  영상 이어 붙이기

 

15장 머신 러닝

15.1  머신 러닝과 OpenCV

  15.1.1 머신 러닝 개요

  15.1.2 OpenCV 머신 러닝 클래스

15.2  k 최근접 이웃

  15.2.1 k 최근접 이웃 알고리즘

  15.2.2 KNearest 클래스 사용하기

  15.2.3 kNN을 이용한 필기체 숫자 인식

15.3  서포트 벡터 머신

  15.3.1 서포트 벡터 머신 알고리즘

  15.3.2 SVM 클래스 사용하기

  15.3.3 HOG & SVM 필기체 숫자 인식

 

16장 딥러닝과 OpenCV

16.1  딥러닝과 OpenCV DNN 모듈

  16.1.1 신경망과 딥러닝

  16.1.2 OpenCV DNN 모듈

16.2  딥러닝 학습과 OpenCV 실행

  16.2.1 텐서플로로 필기체 숫자 인식 학습하기

  16.2.2 OpenCV에서 학습된 모델 불러와서 실행하기

16.3  OpenCV와 딥러닝 활용

  16.3.1 구글넷 영상 인식

  16.3.2 SSD 얼굴 검출

 

부록 A OpenCV 소스 코드 빌드하여 설치하기

A.1  OpenCV 소스 코드 내려받기

A.2  CMake를 이용하여 솔루션 파일 만들기

A.3  Visual Studio에서 OpenCV 빌드하고 설치하기

 

부록 B 리눅스에서 OpenCV 설치하고 사용하기

B.1  리눅스에서 OpenCV 설치하기

B.2  리눅스에서 OpenCV 프로그램 개발하기

더보기접기

저자

ㆍ지은이 황선규

지은이 소개
2006년 한양대학교에서 영상 처리 전공으로 박사 학위를 받았으며, 이후 뉴질랜드 캔터베리 대학교와 한양대학교에서 박사후과정(PostDoc)과 연구 교수로 재직하였다. 2009년 LG전자 MC연구소에 입사하여 전략 스마트폰 카메라 기능 개발과 안드로이드 카메라 프레임워크 업무를 담당하였다. 2016년부터 (주)패스트캠퍼스에서 OpenCV와 컴퓨터 비전 강의를 진행하고 있고, 2019년부터는 ‘프로그래머스’ 사이트를 통해 코딩 테스트와 알고리즘 강의도 진행하고 있다. 저서로는 『OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝』, 『Visual C++ 영상 처리 프로그래밍』, 『영상 처리 프로그래밍 by Visual C++』, 역서로는 『OpenCV 제대로 배우기』가 있다.

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.