파이썬과 OpenCV를 이용한 컴퓨터 비전 학습 [컴퓨터 비전 애플리케이션을 만들기 위한 강력한 OpenCV 3와 파이썬 활용하기]
- 원서명OpenCV 3 Computer Vision with Python Cookbook: Leverage the power of OpenCV 3 and Python to build computer vision applications (ISBN 9781788474443)
- 지은이알렉세이 스피쉐보이(Alexey Spizhevoy), 알렉산드르 류브니코프(Aleksandr Rybnikov)
- 옮긴이테크 트랜스 그룹 T4
- ISBN : 9791161752396
- 35,000원
- 2018년 11월 30일 펴냄 (절판)
- 페이퍼백 | 416쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
OpenCV 3는 컴퓨터 비전, 머신 러닝, 이미지 처리를 위한 기본적인 크로스 플랫폼 라이브러리다. 이 책에서 보여주는 다양한 방법으로 현재 막혀 있는 컴퓨터 비전 문제를 해결할 수 있을 것이며, 관련 애플리케이션의 성능을 향상시킬 수 있다.
픽셀 단위의 조작을 통한 이미지 처리 방법과 히스토그램을 사용해 이미지를 분석하는 방법을 배울 수 있다. 그리고 이미지 콘텐츠를 더 향상시키기 위해서 이미지 필터를 어떻게 사용해야 하는지, 촬영된 장면의 다른 뷰들을 연결 처리하기 위해서 이미지 기하학을 어떻게 사용할 것인지를 보여준다. 카메라 보정과 멀티 뷰 분석을 위한 기법도 제공한다. 객체 검출과 인식과 같은 애플리케이션에서 활용할 수 있는 저수준 픽셀 정보를 고수준 개념으로 전환해주는 방법을 배울 수 있다. 파일이나 카메라에 있는 동영상을 처리하는 방법, 움직이는 객체를 검출하고 추적하는 방법에 대해서도 다룬다. 끝으로 딥러닝, 객체 분류 및 뉴럴 네트워크와 같은 최신 주제에 대해서도 살펴볼 수 있다.
이 책에서 다루는 내용
■ 저수준 이미지 처리 방법
■ 컴퓨터 비전에서 필요한 일반적인 선형 대수 도구
■ 다양한 카메라 모델과 에피폴라 기하학
■ 이미지 내에 있는 관심 점을 검출하는 방법과 각 방법의 비교
■ 이미지 이진화와 관심 영역의 마스크 처리
■ 동영상에서의 객체 검출과 추적
이 책의 대상 독자
파이썬에 관한 기본 지식이 있는 개발자를 위한 책이다. OpenCV에 대해 어느 정도 알고 있는 상태에서 다른 개발자보다 성능이 좋고 빠르며, 복잡하지만 더 실용적인 컴퓨터 비전 시스템을 만들고자 한다면 이 책을 추천한다.
이 책의 구성
1장, '입출력과 GUI'에서는 이미지와 동영상의 기본 동작(불러오기, 저장하기, 표시하기)을 알아본다.
2장, '행렬, 색상, 필터'에서는 행렬을 처리하는 동작을 알아본다. 이미지, 채널, 픽셀에 대한 영역을 처리하는 방법도 보여준다. 또한 많은 색상 공간 사이의 전환과 필터 사용법도 다룬다.
3장, '윤곽선과 분할'에서는 이미지 마스크를 만드는 방법, 윤곽선을 찾는 방법, 이미지를 분할하는 방법을 알아본다.
4장, '객체 검출과 머신 러닝'에서는 특별한 용도로 만들어진 객체(QR 코드와 ArUCo 마커)부터 일상에서 볼 수 있는 객체까지 여러 가지 형태의 객체를 검출하고 추적하는 방법을 알아본다.
5장, '딥러닝'에서는 심층 신경망을 사용하는 OpenCV 내의 새로운 기능을 알아본다. 딥러닝 모델을 사용하고, 그 모델을 컴퓨터 비전 태스크에서 사용하는 예제를 살펴볼 수 있다.
6장, '선형 대수'에서는 선형 대수 문제를 풀기 위한 유용한 수학적 방법을 자세히 살펴본다. 이러한 수학적 방법을 컴퓨터 비전에 적용하는 예제도 볼 수 있다.
7장, '검출기와 기술자'에서는 이미지 특징 기술자를 어떻게 사용하는지 알아본다. 여러 가지 방법들로 특징 기술자를 연산하고, 표시하며, 객체 검출과 추적을 위해 어떻게 매칭시킬 것인지를 살펴볼 수 있다.
8장, '이미지 및 동영상 처리'에서는 여러 장의 이미지들을 어떻게 사용하는지와 각 시퀀스 간의 상관관계에 기반해 어떻게 결과를 얻는지 알아본다.
9장, '다중 뷰 기하학'에서는 장면 내의 3D 기하학적 정보를 얻기 위해 카메라를 어떻게 사용할지 알아본다.
목차
목차
- 1장. 입출력과 GUI
- 소개
- 파일에서 이미지 읽어오기
- 간단한 이미지 변환: 크기 조절 및 뒤집기
- 손실 및 무손실 압축을 사용한 이미지 저장
- OpenCV 창에 이미지 표시
- OpenCV 창에서 버튼 및 탐색바와 같은 UI 요소로 작업
- 2D 프리미티브 그리기: 마커, 선, 타원, 사각형 및 텍스트
- 사용자의 키보드 입력 처리
- 사용자의 마우스 입력을 처리해 앱을 대화형으로 만들기
- 카메라 프레임 캡처 및 표시
- 비디오 프레임 스트림 재생
- 프레임 스트림 프로퍼티 얻기
- 프레임 스트림을 비디오로 저장
- 비디오 파일의 프레임 간 이동
- 2장. 행렬, 색상, 필터
- 소개
- 행렬 조작: 생성하기, 채우기, 요소 접근하기, ROI
- 데이터 타입과 스케일 변환
- NumPy를 사용한 비이미지 데이터 영속성
- 이미지 채널 조작
- 이미지의 색 공간 변환
- 감마 보정과 요소 단위의 수학
- 평균/분산 이미지 정규화
- 이미지 히스토그램 계산
- 이미지 히스토그램 평활화
- 가우시안 필터, 중앙값 필터, 양방향 필터를 사용한 노이즈 제거
- 소벨 필터로 이미지 경사도 계산
- 자체 필터 생성과 적용
- 실수 값으로 된 가버(Garbor) 필터로 이미지 처리
- 이산 푸리에 변환을 사용한 공간 도메인과 주파수 도메인 간 변환
- 이미지 필터링을 위한 이미지 주파수 조작
- 다양한 이미지 임계 처리법
- 형태 연산자
- 이미지 마스크와 이진 연산
- 3장. 윤곽선과 분할
- 소개
- Otsu 알고리즘을 사용한 그레이스케일 이미지 이진화
- 이진 이미지에서 외부 및 내부 윤곽선 찾기
- 이진 이미지에서 연결된 구성 요소 추출
- 선과 원을 2차원 점의 집합으로 맞추기
- 이미지 모멘트 계산
- 곡선으로 작업: 근사, 길이, 면적
- 윤곽선 내부에서 점의 포함 여부 확인
- 거리 맵 계산
- 평균 알고리즘을 k- 이용한 이미지 분할
- 분할 시드를 사용해 이미지 분할: 워터쉐드 알고리즘
- 4장. 객체 검출과 머신 러닝
- 소개
- GrabCut 알고리즘을 사용해 객체 마스크 얻기
- Canny 알고리즘을 사용해 에지 찾기
- Hough 변환을 사용해 직선과 원 검출
- 템플릿 매칭을 통한 객체 찾기
- 메디안 플로우 객체 추적기
- 추적 API의 다양한 알고리즘을 사용해 객체 추적
- 두 프레임 사이의 밀집 옵티컬 플로우 계산
- 체스판과 원 그리드 패턴 검출
- SVM 모델을 사용한 단순 보행자 검출기
- 다양한 머신 러닝 모델을 사용한 광학 문자 인식
- Haar/LBP 캐스케이드를 사용해 얼굴 검출
- AR 애플리케이션을 위한 AruCo 패턴 검출
- 자연 영상에서 텍스트 검출
- QR 코드 검출기
- 5장. 딥러닝
- 소개
- 이미지를 텐서/blobs로 표현
- Caffe, Torch, TensorFlow 형식의 딥러닝 모델 불러오기
- 모든 레이어에 대한 입/출력 텐서 형태 가져오기
- 이미지 사전 처리와 컨벌루션 네트워크로 추론
- 추론 시간과 각 계층의 기여도 측정
- GoogleNet/Inception, ResNet 모델로 이미지 분류
- SSD 모델로 객체 검출
- FCN(Fully Convolution Network) 모델을 사용해 장면 분할
- SSD, ResNet 모델을 사용해 얼굴 검출
- 연령 및 성별 예측
- 6장. 선형 대수
- 소개
- 직교 프로쿠르스테스 문제
- 순위 제한과 행렬 근사 방법
- 주성분 분석
- 선형 방정식 풀기(underdetermined, overdetermined 포함)
- 다항 방정식 풀기
- 심플렉스 방법을 사용한 선형 프로그래밍
- 7장. 검출기와 기술자
- 소개
- 이미지의 코너 찾기: 해리스(Harris)와 FAST
- 추적을 위한 이미지 내 좋은 코너 선택
- 키포인트, 기술자 및 매칭 결과 나타내기
- 크기 불변 키포인트의 검출
- 이미지 키포인트에 대한 컴퓨팅 기술자: SURF, BRIEF, ORB
- 여러 기술자 간의 대응 관계를 찾기 위한 매칭 기법
- 신뢰할 수 있는 매칭 결과 찾기: 교차 검증 및 비율 테스트
- 모델 기반 매칭 필터링: RANSAC
- 전역 이미지 기술자 구축을 위한 BoW 모델
- 8장. 이미지 및 동영상 처리
- 소개
- 아핀과 원근감 변환을 사용해 이미지 뒤틀기
- 임의 변환을 사용한 이미지 재매핑
- 루카스-카나데 알고리즘을 사용해 프레임 간 키포인트 추적
- 배경 제거
- 많은 이미지를 파노라마 형태로 스티칭
- 비지역적 평균 알고리즘을 사용해 사진 노이즈 제거
- HDR 이미지 만들기
- 이미지 수리 방법을 사용해 사진 내의 결함 제거
- 9장. 다중 뷰 기하학
- 소개
- 핀홀 카메라 모델 보정
- 어안 렌즈 카메라 모델 보정
- 스테레오 장비 보정: 외부 추정
- 왜곡 점과 비왜곡 점
- 이미지에서 렌즈 변형 효과 제거
- 삼각 측량을 통해 두 가지 관찰 지점으로부터 3D 점 복원
- PnP 알고리즘을 사용해 상대적 카메라 객체의 자세(포즈) 찾기
- 스테레오 정류기를 통한 두 개의 뷰 정렬
- 에피폴라 기하학: 컴퓨팅 기본과 필수 행렬
- 회전과 이동을 위한 필수적인 행렬 분해
- 스테레오 이미지의 불일치 맵 추정
- 호모그래피 변환 추정을 통한 특별한 2개 뷰의 기하학 특성 살펴보기
- 평면 영상: 호모그래피 분해 방법을 사용해 회전과 이동
- 회전 카메라 케이스: 호모그래피 변환에서 카메라 회전 추정 사용