서브메뉴

본문

OpenCV로 배우는 영상 처리 및 응용
OpenCV로 배우는 영상 처리 및 응용
저자 : 정성환|배종욱
출판사 : 생능출판사
출판년 : 2017
ISBN : 9788970508948

책소개

OpenCV(Open Source Computer Vision Library)는 영상 처리와 컴퓨터 비전 관련 오픈 소스 라이브러리이다. 오픈소스 라이브러리로 공개되어 있으므로 누구나 사용할 수 있다. 그리고 영상 처리와 관련된 많은 함수가 이미 구현되어 있어서, 영상 처리 이론을 쉽게 구현해 볼 수 있다.

이 책은 영상 처리의 기본적인 이론의 소개와 OpenCV를 사용한 그 이론의 구현으로 구성되어 있다. 비유를 든다면 한 손은 설계도면 정보가, 다른 한 손은 연장이 주어진 학습자의 멋진 환경과 같다고 볼 수 있다. 독자들은 이 책을 따라 영상 처리 이론을 알아가면서, OpenCV 라이브러리라는 연장을 가지고 직접 그 이론을 쉽게 구현하여 실제 영상 처리를 경험해 볼 수 있다.

영상 처리 개요 및 OpenCV의 기본에 관한 소개, 영상 처리와 OpenCV 함수 활용, 영상 처리 응용 사례 등을 단계적으로 학습하면서 영상 처리 이론뿐만 아니라 OpenCV의 영상 처리 관련 함수의 이해와 사용법까지 익힐 수 있다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

OpenCV로 배우는 영상 처리의 기본 이론과 응용 방법

OpenCV(Open Source Computer Vision Library)는 영상 처리와 컴퓨터 비전 관련 오픈 소스 라이브러리이다. 오픈소스 라이브러리로 공개되어 있으므로 누구나 사용할 수 있다. 그리고 영상 처리와 관련된 많은 함수가 이미 구현되어 있어서, 영상 처리 이론을 쉽게 구현해 볼 수 있다.



이 책은 영상 처리의 기본적인 이론의 소개와 OpenCV를 사용한 그 이론의 구현으로 구성되어 있다. 비유를 든다면 한 손은 설계도면 정보가, 다른 한 손은 연장이 주어진 학습자의 멋진 환경과 같다고 볼 수 있다. 독자들은 이 책을 따라 영상 처리 이론을 알아가면서, OpenCV 라이브러리라는 연장을 가지고 직접 그 이론을 쉽게 구현하여 실제 영상 처리를 경험해 볼 수 있다.



영상 처리 개요 및 OpenCV의 기본에 관한 소개, 영상 처리와 OpenCV 함수 활용, 영상 처리 응용 사례 등을 단계적으로 학습하면서 영상 처리 이론뿐만 아니라 OpenCV의 영상 처리 관련 함수의 이해와 사용법까지 익힐 수 있다.



이 책의 구성

이 책은 영상 처리 이론을 단계적으로 이해하는, 동시에 OpenCV를 사용해 영상 처리 이론을 구현해 본 기회를 독자들에게 제공하기 위해서 다음과 같이 3부로 구성되어 있다.

- 제1부: 영상 처리 개요 및 OpenCV 소개

- 제2부: 영상 처리와 OpenCV 함수 활용

- 제3부: 영상 처리 응용 사례



1장에서는 영상 처리란 어떤 것인지에 관하여 설명하며, 영상 처리를 위한 OpenCV 라이브러리에 대한 일반적인 내용에 대해 소개한다.



2장에서는 OpenCV의 설치와 기본 환경 설정, 비주얼 스튜디오에서 OpenCV의 디렉터리를 설정하는 방법 등에 대해 학습한다.



3장에서는 클래스 기반의 OpenCV 데이터 구조와 그 사용법을 알아본다. 특히, OpenCV의 기본이 되는 Mat 클래스의 내부 메서드에 대해서 자세히 살펴본다.



4장에서는 OpenCV에서 제공하는 사용자 인터페이스를 위한 기본 함수인 그리기 함수들과 이벤트 함수들을 알아본다. 또한 처리 결과들을 저장하고, 필요한 데이터를 입력받을 수 있는 미디어(media) 및 데이터의 입출력 처리에 대해서도 알아본다.



5장에서는 OpenCV에서 지원하는 다양한 행렬 처리 함수들에 대해서 살펴본다. OpenCV는 Mat, Mat_, Matx 등으로 행렬을 생성할 수 있으며, 이 행렬을 처리할 수 있는 다양한 연산 함수를 지원한다.



6장에서는 영상의 화소인 행렬의 원소에 대한 처리 방법을 세부적으로 설명한다. 또한 행렬 내부 데이터의 조회 방법과 각 원소에 대한 처리 방법에 대해 기술한다.



7장에서는 공간 영역의 개념과 공간 영역을 기반으로 처리할 수 있는 필터링에 대해서 기술한다. 또한 마스크 기반의 에지 검출 방법과 형태학을 기반으로 하는 모폴로지(morphology)에 대해서 자세히 설명한다.



8장에서는 RST 변환을 비롯해서 다양한 기하학적 처리를 위한 기본적인 방법들에 대해서 배운다. RST 변환이라는 말한다. R은 Rotation, S는 Scaling, T는 Translation의 첫 글자이다.



9장에서는 영상을 데이터로 표현하는 데에는 크게 두 가지 영역으로 나누어 설명한다. 앞 장까지 우리가 배웠던 것이 바로 화소값이 직접 표현된 공간영역(spatial domain)이며, 다른 하나가 우주 공간과 같은 변환영역(transform domain)이다. 변환영역은 직교변환에 의해 얻어진 영상 데이터의 다른 표현이다. 여기서는 화소값이 직접 표현되는 것이 아니고 변환계수(coeffcient)로 표현된다.



10장에서는 영상 처리 및 컴퓨터 비전 응용에서 자주 사용되는 알고리즘들에 대해서 기술한다. 특징점 추출 방법 중에 직선을 검출하는 허프 변환, 객체 추적이나 영상 매칭에 사용되는 코너 검출기법, k-최근접 분류기 및 숫자 인식에 그 용용, 그리고 영화나 광고들에 사용될 수 있는 영상 워핑과 모핑 등을 살펴본다.



11장에서는 영상 처리 및 컴퓨터 비전 응용 사례들 중에서 기초적인 응용을 소개한다. 간단한 그림판 프로그램 만들기, 영상에서 얼굴 검출 및 남녀 맞추기, 히스토그램을 이용한 영상 검색과 같은 영상 처리 응용에 자주 사용되는 알고리즘들에 대해서 기술한다.



12장에서는 영상 처리 및 컴퓨터 비전 응용 중에서 심화 과제로 다루어 볼 수 있는 사례들을 소개한다. 다양한 응용 서비스의 요구와 심화된 프로그램의 작성 기법을 배움으로써 개인의 졸업 작품이나 팀 프로젝트에 활용할 수 있는 기회를 만들고자 한다.

특히, 색상 히스토그램을 이용한 동전 인식 프로그램과 SVM(Support Vector Machine)을 이용한 차량번호판 검출, 그리고 k-NN(k-Nearest Neighbor) 알고리즘을 이용한 차량 번호 인식을 소개한다.
[알라딘에서 제공한 정보입니다.]

목차정보

PART 01 영상 처리 개요 및 OpenCV 소개



CHAPTER 01 영상 처리 개요

1.1 영상 처리란?

1.2 영상 처리의 수준

1.3 영상 처리의 역사

1.4 영상 처리 관련 분야

1.5 영상의 형성 과정

1.6 디지털 영상의 표현과 영상 처리

1.7 영상 처리 응용 분야

단원 요약

연습문제



CHAPTER 02 OpenCV 개요

2.1 OpenCV 소개

2.2 설치 및 기본 환경 설정

2.2.1 OpenCV 내려받기 및 압축 풀기

2.2.2 Path 환경 변수에 경로 추가

2.3 비주얼 스튜디오에서 OpenCV 디렉터리 설정하기

2.3.1 솔루션 및 프로젝트 만들기

2.3.2 OpenCV 디렉터리 설정

2.4 간단한 OpenCV API 사용하기

단원 요약

연습문제



CHAPTER 03 OpenCV의 기본 자료 구조

3.1 기본 템플릿 클래스

3.1.1 Point_ 클래스

3.1.2 Point3_ 클래스

3.1.3 Size_ 클래스

3.1.4 Rect_ 클래스

3.1.5 Vec 클래스

3.1.6 Scalar_ 클래스

3.1.7 RotatedRect 클래스

3.2 Mat 클래스

3.2.1 Mat 행렬 생성

3.2.2 Mat 행렬 초기화 함수

3.2.3 Mat_ 클래스를 이용한 초기화

3.2.4 Matx 클래스를 이용한 초기화

3.2.5 Mat 클래스의 다양한 속성

3.2.6 Mat 클래스의 = 연산자

3.2.7 Mat 클래스의 크기 및 형태 변경

3.2.8 Mat 복사 및 자료형 변환

3.3 벡터(std::vector) 클래스

3.3.1 vector 클래스의 초기화

3.3.2 vector 클래스의 사용

3.4 Mat 클래스의 영역 참조(관심영역)

3.4.1 Range 클래스

3.4.2 행렬 헤더 관련 함수

3.5 Mat 클래스의 기타 메서드

3.5.1 원소의 추가 및 삭제( Mat::push_back(), Mat::pop_back() )

3.5.2 행렬의 메모리 해제

3.5.3 행렬 연산 함수

3.6 예외처리

3.6.1. saturate_cast <_Tp>

3.6.2 예외 처리 매크로

단원 요약

연습문제



CHAPTER 04 OpenCV 인터페이스 기초 / 사용자 인터페이스 및 I/O 처리

4.1 윈도우 창 제어

4.2 이벤트 처리 함수

4.2.1 키보드 이벤트 제어

4.2.2 마우스 이벤트 제어

4.2.3 트랙바 이벤트 제어

4.3 그리기 함수

4.3.1 직선 및 사각형 그리기

4.3.2 글자 쓰기

4.3.3 원 그리기

4.3.4 타원 그리기

4.4 이미지 파일 처리

4.4.1 이미지 파일 읽기

4.4.2 행렬을 영상 파일로 저장

4.5 비디오 처리

4.5.1 카메라에서 프레임 읽기

4.5.2 카메라 속성 설정하기

4.5.3 카메라 프레임 동영상 파일 저장

4.5.4 비디오 파일 읽기

4.6 데이터의 파일 저장 및 읽기

4.6.1 FileStorage 클래스

4.6.2 FileNode 클래스

4.6.3 XML/YAML 파일 저장

4.6.4 XML/YAML 파일 읽기

단원 요약

연습문제



CHAPTER 05 기본 행렬 연산(Operations on Arrays) 함수

5.1 기본 배열(Array) 처리 함수

5.2 채널 처리 함수

5.3 산술 연산 함수

5.3.1 사칙 연산

5.3.2 지수 로그 루트 관련 함수

5.3.3 논리(비트) 연산 함수

5.4 절댓값, 최댓값, 최솟값 관련 함수

5.4.1 원소의 절댓값

5.4.2 원소의 최솟값과 최댓값

5.5 통계 관련 함수

5.6 행렬 연산 함수

단원 요약

연습문제





PART 02 영상 처리와 OpenCV 함수 활용



CHAPTER 06 화소 처리

6.1 영상 화소의 접근

6.1.1 Mat::at() 함수

6.1.2 Mat::ptr() 함수

6.1.3 반복자를 통한 조회

6.2 화소 밝기 변환

6.2.1 그레이 스케일 영상

6.2.2 영상의 화소 표현

6.2.3 영상 밝기의 가감 연산

6.2.4 행렬 덧셈 및 곱셈을 이용한 영상 합성

6.2.5 명암 대비

6.3 히스토그램

6.3.1 히스토그램 개념

6.3.2 히스토그램 계산

6.3.3 OpenCV 함수 활용

6.3.4 히스토그램 스트레칭

6.3.5 히스토그램 평활화

6.4 컬러 공간 변환

6.4.1 컬러 및 컬러 공간

6.4.2 RGB 컬러 공간

6.4.3 CMY(K) 컬러 공간

6.4.4 HSI 컬러 공간

6.4.5 기타 컬러 공간

단원 요약

연습문제



CHAPTER 07 영역 처리

7.1 회선(convolution)

7.1.1 공간 영역의 개념과 회선

7.1.2 블러링

7.1.3 샤프닝

7.2 에지 검출

7.2.1 차분 연산을 통한 에지 검출

7.2.2 1차 미분 마스크

7.2.4 2차 미분 마스크

7.2.5 캐니 에지 검출

7.3 기타 필터링

7.3.1 최댓값/최솟값 필터링

7.3.2 평균값 필터링

7.3.3 미디언 필터링

7.3.4 가우시안 스무딩 필터링

7.4 모폴로지(morphology)

7.4.1 침식 연산

7.4.2 팽창 연산

7.4.3 열림 연산과 닫힘 연산

단원 요약

연습문제



CHAPTER 08 기하학 처리

8.1 사상

8.2 크기 변경 (확대/축소)

8.3 보간

8.3.1 최근접 이웃 보간법

8.3.2 양선형 보간법

8.4 평행이동

8.5 회전

8.6 행렬 연산을 통한 기하학 변환 ? 어파인 변환

8.7 원근 투시(투영) 변환

단원 요약

연습문제



CHAPTER 09 변환영역 처리

9.1 공간 주파수의 이해

9.2 이산 푸리에 변환

9.3 고속 푸리에 변환

9.4 FFT를 이용한 주파수 영역 필터링

9.4.1 주파수 영역 필터링의 과정

9.4.2 저주파 및 고주파 통과 필터링

9.4.3 버터워스, 가우시안 필터링

9.5 이산 코사인 변환

단원 요약

연습문제



CHAPTER 10 영상 분할 및 특징 처리

10.1 허프 변환

10.1.1 허프 변환의 좌표계

10.1.2 허프 변환의 전체 과정

10.1.3 허프 누적 행렬 구성

10.1.4 허프 누적 행렬의 지역 최대값 선정

10.1.5 임계값 이상인 누적값(직선) 선별

10.1.6 직선을 누적값 기준으로 내림차순 정렬

10.1.7 최종 완성 프로그램

10.1.8 멀티 하네스의 전처리

10.2 코너 검출

10.3 k-최근접 이웃 분류기

10.3.1 k-최근접 이웃 분류기의 이해

10.3.2 k-NN을 위한 KNearest 클래스의 이해

10.3.3 k-NN 응용

10.4 영상 워핑과 영상 모핑

단원 요약

연습문제





PART 03 영상 처리 응용 사례



CHAPTER 11 영상 처리 응용 사례 Ⅰ

11.1 그림판 프로그램

11.1.1 아이콘 배치 및 팔레트 생성

11.1.2 마우스 이벤트의 구현

11.1.3 팔레트 색상 변경 이벤트

11.1.4 그리기 구현

11.1.5 기타 명령 구현

11.2 2차원 히스토그램을 이용한 이미지 검색

11.2.1 2차원 히스토그램

11.2.2 검색 대상 영상 히스토그램 계산 및 저장

11.2.3 유사도 비교

11.2.3 비교 결과 영상 출력

11.2.4 전체 프로그램

11.3 하르 분류기를 이용한 얼굴검출 및 성별 분류

11.3.1 하르 기반 분류기

11.3.2 얼굴 검출 프로그램 구현

11.3.3 성별 분류 기초

11.3.4 얼굴 기울기 계산 및 보정

11.3.5 입술 영역 및 머리 영역 검출

11.3.6 히스토그램 비교

11.3.7 성별 분류

단원 요약

연습문제



CHAPTER 12 영상 처리 응용 사례 II

12.1 동전 인식 프로그램

12.1.1 동전 영상 캡쳐 및 전처리

12.1.2 모든 동전 객체 검출

12.1.3 개별 동전 영상 생성

12.1.4 색상 히스토그램 계산

12.1.5 동전 그룹 분류

12.1.6 개별 동전 종류 결정

12.1.6 모든 동전 금액 계산 및 출력

12.1.7 최종 동전 계산 프로그램

12.2 SVM을 이용한 차량 번호 검출 프로그램

12.2.1 SVM의 개념

12.2.2 번호판 검출 프로그램 전체 처리 과정

12.2.3 번호판 영상 학습

12.2.4 번호판 후보영역 검색

12.2.5 번호판 후보영역 영상 생성

12.2.6 후보 영상의 번호판 반별

12.3 k-NN을 이용한 차량 번호 인식

12.3.1 번호판 문자 인식 프로그램 전체 처리 과정

12.3.2 숫자 및 문자 영상의 학습

12.3.2 번호판 영상 전처리

12.3.3 숫자 및 문자 객체 검색

12.3.4 검출 객체 위치 정렬 및 개별 숫자(문자) 영상 생성

12.3.5 검출 객체 영상의 숫자 및 문자 인식

단원 요약

연습문제
[알라딘에서 제공한 정보입니다.]