러닝! OpenCV 3
도서명:러닝! OpenCV 3
저자/출판사:아드리안,캘러,개리,브래드스키/위키북스
쪽수:1040쪽
출판일:2018-04-19
ISBN:9791158390969
목차
▣ 01장: 개요
OpenCV란?
OpenCV는 누가 사용하는가?
컴퓨터 비전이란?
OpenCV의 기원
___OpenCV 블록 다이어그램
___IPP를 이용한 OpenCV의 성능 향상
___누가 OpenCV를 소유하는가?
OpenCV 다운로드 및 설치
___설치
Git으로 최신 OpenCV 얻기
OpenCV에 대한 더 많은 문서
___제공되는 문서
___온라인 문서와 위키
OpenCV Contribution 저장소
___Contributed 모듈 다운로드하고 빌드하기
이식성
요약
연습 문제
▣ 02장: OpenCV 소개
Include 파일
___관련 자료
첫 번째 프로그램 - 이미지 출력
두 번째 프로그램 - 비디오
재생 위치 이동하기
___간단한 변환
별로 단순하지 않은 변환
카메라 입력
AVI 파일에 쓰기
요약
연습 문제
▣ 03장: OpenCV 데이터 타입 알아보기
기본 사항
OpenCV 데이터 타입
___기본 데이터 타입의 개요
___기본 데이터 타입: 세부사항 알아보기
___도우미 객체
___유틸리티 함수
___템플릿 구조
요약
연습 문제
▣ 04장: 이미지 및 대형 배열 타입
동적 및 가변 저장장치
___cv::Mat 클래스: N차원의 밀집 배열
___배열 만들기
___배열의 개별 요소 접근하기
___다차원 배열 반복자: NAryMatIterator
___블록 단위로 배열 요소 접근
___행렬 표현식: 대수학과 cv::Mat
___포화 캐스팅
___배열로 할 수 있는 더 많은 것
___cv::SparseMat 클래스: 희소 배열
___희소 배열의 요소에 접근하기
___희소 배열에 있는 고유한 함수들
___대형 배열 타입의 템플릿 구조
요약
연습 문제
▣ 05장: 배열 연산
배열 타입으로 할 수 있는 더 많은 일
___cv::abs()
___cv::absdiff()
___cv::add()
___cv::addWeighted()
___cv::bitwise_and()
___cv::bitwise_not()
___cv::bitwise_or()
___cv::bitwise_xor()
___cv::calcCovarMatrix()
___cv::cartToPolar()
___cv::checkRange()
___cv::compare()
___cv::completeSymm()
___cv::convertScaleAbs()
___cv::countNonZero()
___cv::cvarrToMat()
___cv::dct()
___cv::dft()
___cv::cvtColor()
___cv::determinant()
___cv::divide()
___cv::eigen()
___cv::exp()
___cv::extractImageCOI()
___cv::flip()
___cv::gemm()
___cv::getConvertElem()과 cv::getConvertScaleElem()
___cv::idct()
___cv::idft()
___cv::inRange()
___cv::insertImageCOI()
___cv::invert()
___cv::log()
___cv::LUT()
___cv::magnitude()
___cv::Mahalanobis()
___cv::max()
___cv::mean()
___cv::meanStdDev()
___cv::merge()
___cv::min()
___cv::minMaxIdx()
___cv::minMaxLoc()
___cv::mixChannels()
___cv::mulSpectrums()
___cv::multiply()
___cv::mulTransposed()
___cv::norm()
___cv::normalize()
___cv::perspectiveTransform()
___cv::phase()
___cv::polarToCart()
___cv::pow()
___cv::randu()
___cv::randn()
___cv::randShuffle()
___cv::reduce()
___cv::repeat()
___cv::scaleAdd()
___cv::setIdentity()
___cv::solve()
___cv::solveCubic()
___cv::solvePoly()
___cv::sort()
___cv::sortIdx()
___cv::split()
___cv::sqrt()
___cv::subtract()
___cv::sum()
___cv::trace()
___cv::transform()
___cv::transpose()
요약
연습 문제
▣ 06장: 그리기와 주석 달기
도형 그리기
___라인 아트와 채워진 다각형
___폰트와 텍스트
요약
연습 문제
▣ 07장: OpenCV 펑터
작업 처리 객체
___주성분 분석(cv::PCA)
___특이값 분해(cv::SVD)
___난수 생성기(cv::RNG)
요약
연습 문제
▣ 08장: 이미지, 비디오, 데이터 파일
HighGUI: 포터블 그래픽 툴킷
___이미지 파일 다루기
___이미지 로딩과 저장
___코덱에 대한 참고 사항
___압축과 압축 해제
비디오 다루기
___cv::VideoCapture 객체로 비디오 읽기
___cv::VideoWriter 객체로 비디오 쓰기
데이터 지속성
___cv::FileStorage에 쓰기
___cv::FileStorage에서 읽기
___cv::FileNode
요약
연습 문제
▣ 09장: 크로스 플랫폼과 기본 윈도우
윈도우 작업
___HighGUI 기본 그래픽 유저 인터페이스
___Qt 백엔드로 작업하기
___전체 GUI 툴킷과 OpenCV 통합
요약
연습 문제
▣ 10장: 필터와 컨벌루션
개요
시작하기 전에
___필터, 커널, 컨벌루션
___테두리 외삽법과 바운더리 조건
경계값 연산
___오츠(Otsu)의 알고리즘
___적응형 경계값
스무딩
___단순 블러 및 박스 필터
___메디****필터
___가우시****필터
___바이레터럴 필터
미분 및 그래디언트
___소벨 미분
___샤르(Scharr) 필터
___라플라시****
이미지 모폴로지
___팽창과 침식
___일반 모폴로지 함수
___열림과 닫힘 연산
___탑햇과 블랙햇 연산
___자신만의 커널 만들기
임의의 선형 필터를 사용한 컨벌루션
___cv::filter2D()로 일반적인 필터 만들기
___cv::sepFilter2D를 사용해 분리 가능한 일반 필터 만들기
커널 빌더
요약
연습 문제
▣ 11장: 일반 이미지 변환
개요
늘이기, 줄이기, 왜곡하기, 회전하기
___균일 크기 조절
___이미지 피라미드
___비균일 매핑
___아핀 변환
___원근 변환
일반적인 재매핑
___극좌표 매핑
___로그 극좌표(LogPolar)
___임의의 매핑
이미지 복구
___인페인팅
___노이즈 제거
히스토그램 평활화
___cv::equalizeHist(): 콘트라스트 평활화
요약
연습 문제
▣ 12장: 이미지 분석
개요
이산 푸리에 변환
___cv::dft(): 이산 푸리에 변환
___cv::idft(): 역 이산 푸리에 변환
___cv::mulSpectrums(): 스펙트럼 곱셈
___이산 푸리에 변환을 이용한 컨벌루션
___cv::dct(): 이산 코사인 변환
___cv::idct(): 역 이산 코사인 변환
적분 이미지
___표준 합산 적분을 위한 cv::integral()
___제곱 합산 적분을 위한 cv::integral()
___기울어진 합산 적분을 위한 cv::integral()
캐니 엣지 검출기
cv::Canny()
허프 변환
___허프 선 변환
___허프 원 변환
거리 변환
___cv::distanceTransform(): 라벨이 없는 거리 변환
___cv::distanceTransform(): 라벨이 붙는 거리 변환
세그멘테이션
___색 채움(Flood Fill)
___그랩컷
___평균 이동 세그멘테이션
요약
연습 문제
▣ 13장: 히스토그램과 템플릿
OpenCV의 히스토그램 데이터 표현
___cv::calcHist(): 데이터에서 히스토그램 만들기
히스토그램을 이용한 기본 조작
___히스토그램 정규화
___히스토그램 경계값
___가장 인기 있는 빈 찾기
___두 히스토그램 비교하기
더 복잡한 히스토그램 메서드
___불도저 거리
역투영
템플릿 매칭
___제곱 차이 매칭 메서드(cv::TM_SQDIFF)
요약
연습 문제
▣ 14장: 윤곽선
윤곽선 찾기
___윤곽선 계층 구조
___윤곽선 그리기
___윤곽선 예제
___다른 윤곽선 예제
___신속한 연결된 구성 요소 분석
윤곽선을 이용한 더 많은 작업
___다각형 근사법
___기하학 및 요약 특성
___기하학적 테스트
윤곽선과 이미지 매칭
___모멘트
___모멘트에 대한 추가 정보
___Hu 모멘트와 매칭
___형상 컨텍스트를 사용해 형상 비교하기
요약
연습 문제
▣ 15장: 배경 분리
배경 분리의 개요
배경 분리의****점
장면 모델링
___픽셀의 슬라이스
___프레임 간 차이
평균화된 배경 메서드
___누적된 평균, 분산, 공분산
더 진보된 배경 분리 메서드
___구조체 만들기
___배경 러닝하기
___움직이는 전경 객체에서 러닝하기
___배경 차분으로 전경 객체 찾기
___코드북 배경 모델 사용하기
___코드북 모델에 대한 몇 가지 생각
배경을 정리하는 연결된 구성 요소
___빠른 테스트
두 배경 메서드 비교하기
OpenCV에서 배경 분리 구현
___cv::BackgroundSubtractor 기반 클래스
___KB 메서드
___지브코비치 메서드
___cv::BackgroundSubtractorMOG2 클래스
요약
연습 문제
▣ 16장: 키포인트와 기술자
키포인트와 트래킹의 기초
___코너 찾기
___옵티컬 플로우 소개
___희소 옵티컬 플로우를 위한 루카스-카나데 메서드
일반화된 키포인트와 기술자
___옵티컬 플로우, 트래킹, 인식
___OpenCV가 키포인트와 기술자를 제어하는 일반적인 방법
___핵심 키포인트 검출 메서드
___해리스-시-토마시(Harris-Shi-Toma
___피처 검출기와 cv::GFTTDetector
___키포인트 필터링
___매칭 메서드
___결과 표시하기
요약
연습 문제
▣ 17장: 트래킹
트래킹 개념
밀집 옵티컬 플로우
___파네백 다항식 확장 알고리즘
___듀얼 TV-L1 알고리즘
___단순 플로우 알고리즘
평균 이동과 캠시프트 트래킹
___평균 이동
___캠시프트
모션 템플릿
추정기
___칼만 필터
___확장 칼만 필터에 대한 간략한 설명
요약
연습 문제
▣ 18장: 카메라 모델과 캘리브레이션
카메라 모델
___투영 기하학의 기초
___로드리게스 변환
___렌즈에 의한 왜곡
캘리브레이션(Calibration)
___회전 행렬과 평행 이동 벡터
___캘리브레이션용 보드
___호모그래피
___카메라 캘리브레이션
왜곡 제거
___왜곡 제거 지도
___cv::convertMaps()를 사용해 왜곡 제거 지도의 표현 변환하기
___cv::initUndistortRectifyMap()을 사용해 왜곡 제거 지도 계산하기
___cv::remap()을 사용한 이미지의 왜곡 제거
___cv::undistort()를 사용한 왜곡 제거
___cv::undistortPoints()를 사용한 희소 왜곡 제거
모두 한꺼번에 캘리브레이션하기
요약
연습 문제
▣ 19장: 투영과 3차원 비전
투영
아핀과 원근 변환
___조감도 변환 예제
3차원 자세 추정
___단일 카메라를 이용한 자세 추정
스테레오 이미징
___삼각 측량
___에피폴라 기하 구조
___필수 및 기본 행렬
___에피폴라 선 계산하기
___스테레오 캘리브레이션
___스테레오 정류
___스테레오 대응
___스테레오 캘리브레이션, 정류, 대응 코드 예제
___3차원 재투영을 통한 깊이 맵
모션 구조
2차원 및 3차원 라인 피팅
요약
연습 문제
▣ 20장: OpenCV에서의 머신러닝 기본
머신러닝이란?
___훈련 집합과 테스트 집합
___지도 러닝과 비지도 러닝
___생성 모델과 판별 모델
___OpenCV의 ML 알고리즘
___비전에서 머신러닝 사용하기
___변수 중요성
___머신러닝 문제 진단하기
ML 라이브러리의 레거시 루틴
___K-평균
___마할라노비스 거리
요약
연습 문제
▣ 21장: StatModel: 머신러닝을 위한 OpenCV 표준 모델
ML 라이브러리의 일반 루틴
___훈련과 cv::ml::TrainData 구조체
___예측
cv::StatModel을 사용한 머신러닝 알고리즘
___단순/일반 베이즈 분류기
___바이너리 의사 결정 트리
___부스팅
___랜덤 트리
___기댓값 최대화
___K-최근접 이웃(KNN)
___다층 퍼셉트론(MLP)
___SVM(서포트 벡터 머신)
요약
연습 문제
▣ 22장: 객체 검출
트리 기반 객체 검출 기법
___캐스케이드 분류기
___지도 학습 및 부스팅 이론
___새로운 객체 훈련
서포트 벡터 머신을 이용한 객체 검출
___객체 검출을 위한 Latent SVM
___Bag of Words 알고리즘과 의미에 의한 분류
요약
연습 문제
▣ 23장: OpenCV의 미래
과거와 현재
___OpenCV 3.x 버전
이전에 예측한 내용이 얼마나 맞을까?
OpenCV의 미래
___현재 GSoC(Google Summer of Code) 작업
___커뮤니티 기여
___OpenCV.org
인공 지능에 대한 일부 억측
책을 마치며
▣ 부록A: 평면 분할
들로네 삼각 분할, 보로노이 터셀레이션
___들로네 또는 보로노이 재분할
___들로네 재분할 탐색하기
___사용 예제
연습 문제
▣ 부록B: opencv_contrib
opencv_contrib 모듈의 개요
___opencv_contrib의 내용
▣ 부록C: 캘리브레이션 패턴
___OpenCV가 사용하는 캘리브레이션 패턴