Top

OpenCV 4 마스터 3/e [비전과 이미지 처리 앱을 만들기 위한]

  • 원서명Mastering OpenCV 4, 3rd Edition: A comprehensive guide to building computer vision and image processing applications with C++ (ISBN 9781789533576)
  • 지은이로이 실크롯(Roy Shilkrot), 데이비드 밀란 에스크리바(David Millán Escrivá)
  • 옮긴이테크 트랜스 그룹 T4
  • ISBN : 9791161754345
  • 30,000원
  • 2020년 07월 16일 펴냄
  • 페이퍼백 | 348쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 오픈소스 프로그래밍

책 소개

요약

OpenCV는 컴퓨터 비전, 머신러닝, 이미지 처리를 위한 기본적인 크로스 플랫폼 라이브러리다. 이 책은 컴퓨터 비전 엔지니어가 OpenCV를 마스터할 수 있는 첫걸음을 내딛도록 도와준다. 수학 공식은 최소한으로 유지하면서 아이디어 이해부터 실행 코드 작성까지 완벽한 프로젝트를 제공하고, 얼굴 인식, 랜드마크 감지 및 포즈 추정, 딥 컨볼루션망을 통한 숫자 인식과 같은 컴퓨터 비전의 최신 인기 주제를 다룬다.
완벽한 컴퓨터 비전 프로젝트를 사용해 API 기능을 익히고 설계를 어떻게 할지 파악할 수 있다. 또한 컴퓨터 비전의 기본 내용을 넘어 복잡한 이미지 처리 프로젝트를 위한 솔루션을 구현할 수 있도록 돕는다.

이 책에서 다루는 내용

■ OpenCV 코드 샘플 작업으로 실제 컴퓨터 비전 구축
■ OpenCV 프로젝트 엔지니어링 및 유지 관리 모범 사례
■ 복잡한 컴퓨터 비전 작업을 위한 알고리즘 설계 접근 방법
■ OpenCV의 최신 API(v4.0.0)
■ 3D 장면 재구성 및 SfM
■ ArUco 모듈을 사용한 카메라 보정 및 오버레이 AR

이 책의 대상 독자

OpenCV를 시작하려는 초보 컴퓨터 비전 엔지니어를 대상으로 하며, 대부분 C++ 환경에서 기존의 기초 지식을 주로 학습하는 것과는 달리 실습 방식을 이용한다. 현재의 일반적인 컴퓨터 비전 작업과 관련해 OpenCV API의 구체적인 사용 사례 예제를 제공하고 ‘복사-붙여넣기-실행’ 방법을 권장하므로 기초 수학 내용은 최소한으로만 유지한다.

이 책의 구성

필요한 내용을 다루는 장을 바로 읽거나 각 장의 코드, 설명을 살펴봄으로써 기배포된 모듈들을 포함한 OpenCV의 많은 기능을 어려움 없이 사용할 수 있다. 또한 웹, iOS, 안드로이드 장치와 파이썬 주피터 노트북Python Jupyter Notebook에서의 OpenCV 사용 방법을 제공한다. 각 장은 서로 다른 주제를 다루고 솔루션과 이론적 내용을 제공한다. 문제를 해결할 수 있도록 빌드하고 실행할 수 있는 전체 코드 예제를 제공한다.

1장, ‘라즈베리 파이의 카툰화와 피부색 변경’에서는 데스크톱과 라즈베리 파이(Raspberry Pi)같은 소형 임베디드 시스템에서 이미지 처리 필터를 만드는 방법을 보여준다.
2장, ‘SfM 모듈을 사용한 모션 구조 탐색’에서는 한 장면을 희소 포인트 클라우드(카메라 포즈 포함)로 재구성하기 위해 SfM 모듈을 사용하는 방법과 멀티 뷰 스테레오를 사용해 밀집 포인트 클라우드를 얻는 방법을 보여준다.
3장, ‘face 모듈을 사용한 얼굴 랜드마크와 포즈 분석’에서는 face 모듈을 사용한 얼굴 랜드마크(얼굴 마크라고도 함) 검출 프로세스를 설명한다.
4장, ‘딥 컨볼루션 네트워크를 사용한 번호판 인식’에서는 이미지 세그멘테이션, 특징 추출, 패턴 인식 기본 사항, 두 가지 주요 패턴 인식 알고리즘인 SVM과 DNN을 소개한다.
5장, ‘DNN 모듈을 사용한 얼굴 검출 및 인식’에서는 이미지에서 얼굴을 검출하는 다양한 기법을 보여준다. 하르(haar) 특징이 있는 캐스케이드 분류기를 사용하는 방법보다는 일반적인 알고리즘부터 딥러닝을 사용하는 최신 기법까지 모두 아우르는 다양한 방법을 제공한다.
6장, ‘OpenCV.js를 사용한 웹 컴퓨터 비전 소개’에서는 OpenCV의 자바스크립트용 컴파일 버전인 OpenCV.js를 사용해 웹용 컴퓨터 비전 알고리즘을 개발하는 새로운 방법을 보여준다.
7장, ‘ArUco 모듈을 사용한 안드로이드 카메라 보정과 AR’에서는 OpenCV의 ArUco 모듈, 안드로이드의 Camera2 API, JMonkeyEngine 3D 게임 엔진을 사용해 안드로이드 생태계 시스템에서 증강현실(AR) 애플리케이션을 구현하는 방법을 보여준다.
8장, ‘스티칭 모듈이 있는 iOS 파노라마’에서는 OpenCV의 사전 컴파일된 iOS용 라이브러리를 사용해 아이폰에서 파노라마 이미지 스티칭(stitching) 애플리케이션을 작성하는 방법을 보여준다.
9장, ‘작업에 가장 적합한 OpenCV 알고리즘 찾기’에서는 OpenCV 내의 옵션을 고려하고 따라야 할 여러 가지 방법을 설명한다.
10장, ‘OpenCV의 일반적인 함정 피하기’에서는 OpenCV의 역사적 발전, 점진적인 프레임워크/알고리즘 제공 증가 현황, 컴퓨터 비전의 발전을 살펴본다.

상세 이미지

저자/역자 소개

지은이의 말

이 책은 OpenCV를 도구로 사용해 컴퓨터 비전을 시작하는 엔지니어들을 대상으로 한 시리즈 도서다. 수학 공식을 최소한으로 사용하고, 아이디어 인식부터 시작해 실행 코드에 이르기까지 완벽한 프로젝트 내용을 제공하며 얼굴 인식, 랜드마크 검출과 포즈 추정, 딥 컨볼루션 네트워크(deep convolution network)를 사용한 숫자 인식, 모션을 사용한 구성, 증강현실을 위한 장면 재구성, 네이티브/웹 환경에서의 휴대전화 컴퓨터 비전 처리 방법을 제공한다. 또한 학계와 산업계 모두에게 편리한 패키지 형태로 컴퓨터 비전 제품과 프로젝트를 구현하는 방법에 관한 방대한 지식을 제공한다. 이 책을 통해 전체 컴퓨터 비전 프로젝트에서 디자인을 선택하는 방법을 알아보고 동시에 API 기능 설명을 통해 각각 이해할 수 있으며, 컴퓨터 비전의 기본을 넘어 복잡한 이미지 인식 프로젝트를 위한 솔루션을 구현할 수 있다.

지은이 소개

로이 실크롯(Roy Shilkrot)

스토니 브룩 대학교(Stony Brook University)의 컴퓨터 과학 조교수로서 인간 상호 작용(human interaction) 그룹을 이끌고 있다. 현재 수행하는 연구는 컴퓨터 비전, 휴먼-컴퓨터 인터페이스라는 두 도메인 간의 교차점에 관한 것으로 미국 연방, 뉴욕 주와 산업 보조금으로부터 자금을 지원받고 있다. MIT에서 박사 학위를 받았고 CHI와 SIGGRAPH 같은 최고의 컴퓨터 과학 콘퍼런스와 「ACM Transaction on Graphics(TOG: 그래픽 트랜잭션)」, 「Transactions on Computer-Human Interaction(TOCHI: 컴퓨터-인간 상호 작용)」과 같은 주요 학술 저널에 25개 이상의 동료 검토 논문을 발표했다. 다수의 책을 공동 저술한 여러 특허 기술의 공동 발명자이자 수많은 신생 기업의 과학 자문위원회에서 활동하는 엔지니어/기업가로서 10년 이상의 경험을 보유했다.

데이비드 밀란 에스크리바(David Millán Escrivá)

여덟 살 때 8086 PC에서 베이직(Basic)으로 첫 번째 프로그램을 만들었는데, 이때 이미 기본 방정식의 2D 플로팅 방법을 구현할 수 있었다. 2005년에는 OpenCV(v0.96)를 이용해 컴퓨터 비전이 지원하는 인간-컴퓨터 상호 작용 방법을 사용해 발렌시아 폴리테크닉 대학(Universitat Politécnica de Valencia)의 IT 연구를 진행했으며, 이 주제를 바탕으로 최종 프로젝트를 진행했고 그 결과를 HCI 스페인 학회에 발표했다. 오픈소스 3D 소프트웨어 프로젝트인 블렌더(Blender)에 참여했고, 컴퓨터 그래픽 소프트웨어 개발자로서 첫 상업 영화인 <프리버즈:>의 제작 과정에도 기여했다. 컴퓨터 비전, 컴퓨터 그래픽, 패턴 인식의 경험과 다양한 프로젝트 및 스타트업 작업, 컴퓨터 비전, 광학 문자 인식, 증강현실에 관한 지식을 적용함으로써 IT 분야에서 10년 이상의 경력을 쌓았다. ‘DamilesBlog’ 블로그의 저자이며 OpenCV, 일반적인 컴퓨터 비전, 광학 문자 인식 알고리즘의 연구 기사와 자습서를 블로그에 게시하고 있다.

옮긴이의 말

컴퓨터 비전은 컴퓨터에 시각을 부여해서 이미지에 대한 분석으로 유용한 정보를 생성하는 기술이다. 비전 기술은 컴퓨터나 로봇 등을 통해 얼굴, 건물 등과 같은 다양한 객체를 인식하는 데 응용되며, 인공지능 기술이 발전하면서 객체 인식 기술의 진화도 점점 빨라지고 있다.
이 책은 실제 컴퓨터 비전 작업을 할 때 직접적으로 많은 도움이 될 수 있도록 구성됐으며 OpenCV의 최신 API(v4.0.0) 지식을 포함한다. OpenCV는 비전 작업을 할 때 광범위하게 가장 많이 사용되는 오픈소스 컴퓨터 비전 라이브러리로, 실제 애플리케이션을 구축할 때 많이 선택된다.
2장부터 5장까지는 다양한 OpenCV의 핵심 기술을 설명한다. 카메라 포즈(camera pose)를 포함해 희소(sparse) 포인트 클라우드로 장면을 재구성하고, 멀티 뷰 스테레오를 사용해 밀집(dense) 포인트 클라우드를 얻는 방법을 보여준다. 이미지 세그멘테이션(image segmentation), 특징 추출(feature extraction), 패턴 인식(pattern recognition) 기본 사항, 두 가지 주요 패턴 인식 알고리즘인 SVM(Support Vector Machine)과 DNN(Deep Neural Network)을 소개하고, 이미지에서 얼굴을 검출하는 다양한 기법을 보여준다. 또한 하르(haar) 특징이 있는 캐스케이드 분류기를 사용하는 방법 외에 딥러닝을 사용하는 최신 기법을 포함하는 다양한 방법을 제공한다.
6장에서는 웹에서도 활용 가능한 OpenCV의 자바스크립트용 컴파일 버전인 OpenCV.js를 사용해 웹용 컴퓨터 비전 알고리즘을 개발하는 새로운 방법을 보여준다. 7장과 8장에서는 모바일 세상의 양대 산맥인 안드로이드와 iOS를 위한 솔루션을 제공한다. OpenCV의 ArUco 모듈, 안드로이드의 Camera2 API 및 JMonkeyEngine 3D 게임 엔진을 사용해 안드로이드 생태계 시스템에서 증강현실(AR) 애플리케이션을 구현하는 방법을 보여준다. 그리고 OpenCV의 사전 컴파일된 iOS용 라이브러리를 사용해 아이폰에서 파노라마 이미지 스티칭 애플리케이션을 작성하는 방법도 알아본다.
근래 떠오른 주요 컴퓨터 비전 문제의 OpenCV 코드 샘플 작업 방법을 알려주고, OpenCV 프로젝트 엔지니어링과 유지 관리에 관한 모범 사례를 제시한다. 또한 복잡한 컴퓨터 비전 작업을 위한 실용적이고 알고리즘적인 설계 방식도 파악할 수 있게 해주며, OpenCV의 간단한 예제부터 복잡한 예제까지 고루 제공하므로 많은 유용한 정보를 얻을 수 있을 것이다.
진심으로 이 책이 OpenCV와 머신러닝 등에 관련된 다양한 이론을 이해하고 실제로 구현하는 데 많은 도움이 되길 바란다.

옮긴이 소개

테크 트랜스 그룹 T4

최신 IT 테크놀로지에 대한 리서치를 목적으로 하는 스터디 그룹이다. 엔터프라이즈 환경에서 오픈소스를 활용한 프레임워크 구축에 관심이 많으며 React.js, Node.js, OpenCV, 머신러닝/딥러닝 등의 기술에 주목하고 있다. 또한 다양한 오픈소스 기반 플랫폼의 개발 및 활용에 많은 관심을 갖고 있다. 역서로는 『OpenCV를 위한 머신러닝』(에이콘, 2017), 『컴퓨터 비전과 딥러닝』(에이콘, 2018) 등이 있다.

목차

목차
  • 1장. 라즈베리 파이의 카툰화와 피부색 변경
    • 웹캠에 액세스하기
    • 데스크톱 앱의 기본 카메라 처리 루프
      • 흑백 스케치 생성하기
      • 색 페인팅과 카툰 생성
      • 윤곽선 필터를 사용해 이블 모드 생성
      • 피부 검출 방법을 사용해 외계인 모드 생성
    • 피부색 체인저 구현
      • 스케치 이미지에서 임의의 페퍼 잡음 감소
    • 데스크톱에서 임베디드 디바이스로 포팅
      • 임베디드 디바이스의 코드를 개발하기 위한 장비 설정
      • 임베디드 디바이스에서 OpenCV 설치
    • 요약

  • 2장. SfM 모듈을 사용한 모션 구조 탐색
    • 기술 요구 사항
    • SfM의 핵심 개념
      • 보정된 카메라와 에피폴라(등극선) 기하학
      • 스테레오 재구성과 SfM
    • OpenCV에서 SfM 구현
      • 이미지 특징 매칭
      • 특징 추적하기
      • 3D 재구성 및 시각화
      • 밀집 재구성을 위한 MVS
    • 요약

  • 3장. face 모듈을 사용한 얼굴 랜드마크와 포즈 분석
    • 기술 요구 사항
    • 이론과 주요 내용
      • 능동적 외양 모델과 제한된 로컬 모델
      • 회귀 방법
    • OpenCV로 얼굴 랜드마크 검출
      • 측정 오차
    • 랜드마크에서 얼굴 방향 예측
      • 예측된 포즈 계산
      • 이미지에 포즈 투영
    • 요약

  • 4장. 딥 컨볼루션 네트워크를 사용한 번호판 인식
    • ANPR 소개
    • ANPR 알고리즘
    • 번호판 검출
      • 세그멘테이션
      • 분류
    • 번호판 인식
      • OCR 세그멘테이션
      • 컨볼루션 신경망을 사용한 문자 분류
    • 요약

  • 5장. DNN 모듈을 사용한 얼굴 검출 및 인식
    • 얼굴 검출 및 인식 방법 소개
      • 얼굴 검출
      • 얼굴 전처리
      • 얼굴 수집과 훈련
      • 얼굴 인식
      • 마무리: 파일 저장하기 및 불러오기
      • 마무리: 멋진 대화식 GUI 만들기
    • 요약
    • 참고 문헌

  • 6장. OpenCV.js를 사용한 웹 컴퓨터 비전 소개
    • OpenCV.js란 무엇인가?
    • OpenCV.js 컴파일하기
    • OpenCV.js 개발의 기본 소개
    • 웹캠 스트림에 액세스하기
    • 이미지 처리와 기본 사용자 인터페이스
      • 임계값 필터
      • 가우시안 필터
      • 캐니 필터
    • 브라우저의 광류 지원
    • 브라우저에서 하르 캐스케이드 분류기를 사용한 얼굴 검출
    • 요약

  • 7장. ArUco 모듈을 사용한 안드로이드 카메라 보정과 AR
    • 기술 요구 사항
    • 증강현실과 포즈 추정
      • 카메라 보정
      • 평면 재구성을 위한 증강현실 마커
    • 안드로이드 운영체제에서 카메라 액세스
      • 카메라 찾기 및 열기
    • ArUco를 사용한 카메라 보정
    • jMonkeyEngine으로 증강현실 수행
    • 요약

  • 8장. 스티칭 모듈이 있는 iOS 파노라마
    • 기술 요구 사항
    • 파노라마 이미지 스티칭 방법
      • 파노라마를 위한 특징 추출과 강력한 매칭
      • 파노라마 생성을 위한 와핑 이미지
    • 프로젝트 개요
    • CocoaPods로 iOS OpenCV 프로젝트 설정
    • 파노라마 캡처를 위한 iOS UI
    • 오브젝티브-C++ 래퍼의 OpenCV 스티칭
    • 요약
    • 더 읽을 거리

  • 9장. 작업에 가장 적합한 OpenCV 알고리즘 찾기
    • 기술 요구 사항
    • OpenCV에 포함돼 있는가?
    • OpenCV의 알고리즘 옵션
    • 어떤 알고리즘이 가장 좋을까?
    • 알고리즘의 비교 성능 테스트 예
    • 요약

  • 10장. OpenCV의 일반적인 함정 피하기
    • OpenCV v1에서 v4까지의 역사
      • 컴퓨터 비전에서 OpenCV와 데이터 혁신
    • OpenCV의 히스토릭 알고리즘
      • OpenCV에 알고리즘이 추가된 시기를 확인하는 방법
    • 일반적인 함정과 제안된 솔루션
    • 요약
    • 더 읽을 거리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안