Top

OpenCV를 활용한 컴퓨터 비전 프로그래밍 3/e [기본 영상처리부터 고급 컴퓨터 비전까지]

  • 원서명OpenCV 3 Computer Vision Application Programming Cookbook - Third Edition (ISBN 9781786469717)
  • 지은이로버트 라가니에(Roberts Laganière)
  • 옮긴이이문호
  • ISBN : 9788960777811
  • 40,000원
  • 2017년 05월 31일 펴냄
  • 페이퍼백 | 560쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.

요약

개정판의 2.x 버전으로 구현된 모든 예제를 검토해 최신 버전인 3.x로 수정하고 최신 기능과 관련된 내용을 추가했다. 프로그래밍으로 이론을 직접 구현해 결과를 보고 분석해야 하는 분야인 영상처리와 컴퓨터 비전의 주요 알고리즘을 선정해 쉽게 읽을 수 있도록 구성했으며, 영상처리 기초 이론부터 컴퓨터 비전의 특징점 검출, 정합, 투영, 객체 추적까지 고르게 다루므로 관심이 있는 독자에게 도움이 될 것이다.

이 책에서 다루는 내용

■ OpenCV 라이브러리를 이용한 프로그램 설치와 생성
■ 화소 다루기로 영상처리
■ 히스토그램을 이용한 영상 분석
■ 영상을 동질 영역으로 분할한 후 의미 있는 객체 추출
■ 영상 내용을 개선하는 영상 필터 적용
■ 묘사 장면의 다른 시점을 정합하기 위해 영상 기하 활용
■ 서로 다른 영상 관찰로부터 카메라 보정
■ 기계 학습 기술을 이용한 얼굴 검출과 사람 검출
■ 영상으로부터 3D 장면 재구성

이 책의 대상 독자

컴퓨터 비전 애플리케이션을 구축하기 위해 OpenCV 라이브러리의 사용 방법을 배우려는 초보 C++ 프로그래머에게 적합하다. 컴퓨터 비전 프로그래밍의 개념을 알고 싶어하는 전문 소프트웨어 개발자에게도 안성맞춤이다. 학부 수준의 컴퓨터 비전 코스에서 교재로 사용할 수 있으며, 영상처리와 컴퓨터 비전의 대학원생과 연구자에게 최고의 참고서다.

이 책의 구성

1장, ‘영상처리 준비’에서는 OpenCV 라이브러리를 소개하고 영상을 읽고 띄울 수 있는 간 단한 애플리케이션을 구축하는 방법을 보여준다. OpenCV의 기본 데이터 구조체도 소개한다.
2장, ‘화소 다루기’에서는 영상을 읽을 수 있는 방법을 설명한다. 각 화소에 작업을 수행하기 위해 영상을 조회하는 여러 방법을 설명한다.
3장, ‘영상의 컬러 처리’에서는 훨씬 나은 컴퓨터 비전 애플리케이션 구축에 도움이 될 수 있는 여러 가지 객체지향 디자인 패턴을 제시하는 예제로 구성한다. 이 밖에 영상의 컬러 개념도 다룬다.
4장, ‘히스토그램으로 화소 세기’에서는 영상 히스토그램을 계산하는 방법과 영상 수정 에 사용할 수 있는 방법을 보여준다. 영상 분할, 객체 검출, 영상 검색을 해낼 수 있는 히스토그램에 기반을 둔 여러 응용을 제시한다.
5장, ‘형태학 연산으로 영상 변환’에서는 수학적 형태학의 개념을 살펴본다. 여러 연산자를 제시하고, 에지, 코너, 분할 검출에 사용할 수 있는 방법을 알려준다.
6장, ‘영상 필터링’에서는 주파수 분석과 영상 필터링의 원리를 알려준다. 저주파 필터와 고주파 필터를 영상에 어떻게 적용하는지 보여주고, 미분 연산자의 개념을 제시한다.
7장, ‘선, 외곽선, 성분 검출’에서는 기하 영상의 특징 검출에 중점을 둔다. 영상에서 외곽선, 선, 연결 성분 추출 방법을 설명한다.
8장, ‘관심점 검출’에서는 영상에서의 여러 가지 특장점 검출기를 설명한다.
9장, ‘관심점 기술과 정합’에서는 관심점의 기술자를 계산할 수 있는 방법과 영상 간의 점 정합에 사용하는 방법을 설명한다.
10장, ‘영상에서 투영 관계 추정’에서는 동일한 장면의 두 영상 간에 존재하는 투영 관계를 살펴본다. 영상에서 특정 대상을 검출하는 방법도 설명한다.
11장, ‘3D 장면 재구성’에서는 여러 영상으로부터 장면의 3D 요소를 재구성하고 카메라 포즈를 복원할 수 있다. 카메라 보정 과정도 설명한다.
12장, ‘비디오 시퀀스 처리’에서는 비디오 시퀀스를 읽고, 쓰고, 비디오 시퀀스의 프레임을 처리하는 프레임워크를 제공한다. 카메라 전방에서 움직이는 전경 객체를 추출하는 방법도 보여준다.
13장, ‘시각적 움직임 추적’에서는 시각적 추적 문제를 해결한다. 비디오에서 눈에 보이는 움직임을 계산하는 방법을 보여준다. 영상 시퀀스에서 움직이는 객체를 추적하는 방법도 설명한다.
14장, ‘예제로 배우기’에서는 머신러닝의 기본 개념을 소개한다. 영상 표본으로부터 객체 분류기를 어떻게 구축하는지 보여준다.

저자/역자 소개

지은이의 말

컴퓨터 비전과 영상 분석 기술을 이용한 증강 현실, 주행 보조, 비디오 모니터링 같은 응용이 점차 늘어나고 있다. 하지만 시각 인지를 통해 세계를 이해하는 능력을 갖춘 새로운 컴퓨터 시스템 개발은 태동기에 머물러 있다. 강력하면서도 저렴한 컴퓨터 디바이스와 시각 센서 덕분에 정교한 영상처리 애플리케이션을 좀 더 쉽게 만들 수 있게 됐다. 영상과 비디오를 조작하는 다수의 소프트웨어 툴과 라이브러리를 활용할 수 있지만 영리한 비전 기반의 애플리케이션을 만들고 싶은 독자라면 OpenCV 라이브러리를 권한다

지은이 소개

로버트 라가니에(Roberts Laganière)

캐나다의 오타와 대학교 전자 공학/컴퓨터 과학 대학 교수며, 현재 VIVA 연구실의 공동 설립자이다. 내용 기반 비디오 분석, 비디오 감시, 주행 보조, 객체 인식, 객체 추적 분야에 관련된 여러 과학 논문의 공저자며, 특허를 보유하고 있다.
『OpenCV 2 Computer Vision Application Programming Cookbook(한국어판)』(에이콘, 2012)과 『(개정판) OpenCV를 활용한 컴퓨터 비전 프로그래밍』(에이콘, 2014)의 저자다. 2006년 오타와 기반 비디오 분석 스타트업 회사인 비주얼 코텍스(Visual Cortex)를 공동 창업했으며, 아이워치라이프(iWatchLife)(www.iwatchlife.com)가 이 회사를 2009년에 인수했다. 컴퓨터 비전 컨설턴트이기도 하며, 코그니뷰(Cognivue), 아이워치라이프, 템포 애널리틱스(Temp Analytics) 같은 스타트업 회사에서 수석 과학자로 일했다. 1987년 몬트리올의 에콜 폴리테크니크(Ecole Polytechnique)에서 전자공학 학사 학위를 받았고, 몬트리올의 INRS-Telecommuncations에서 석사 학위와 박사 학위를 받았다. 웹 사이트 주소는 www.laganiere.name이다.

옮긴이의 말

로버트 라가니에 교수가 집필한 『OpenCV 2를 활용한 컴퓨터 비전 프로그래밍』 초판을 2012년에 출간했고, 2년 후에 『(개정판) OpenCV를 활용한 컴퓨터 비전 프로그래밍』을 2014년에 출간한 이후로 OpenCV는 학계와 산업계에서 가장 널리 사용되는 컴퓨터 비전 라이브러리로 꾸준한 인정을 받았다. 또한 현재 3.x 버전으로 판올림하는 등 많은 기능이 추가돼 끊임없이 성능을 개선하고 있다. 이에 부응해 로버트 라가니에 교수는 최신 기능을 반영한 3판을 2017년 1월에 출간했다.
『OpenCV를 활용한 컴퓨터 비전 프로그래밍 3/e』는 개정판의 OpenCV 2.x 버전으로 구현했던 모든 예제를 재검토해 3.x에 맞춰 수정하고, OpenCV 라이브러리의 기능에 관한 더 많은 내용을 추가한 책이다. 영상처리와 컴퓨터 비전에 필요한 OpenCV의 주요 함수를 중심으로 영상처리 준비를 위한 작업부터 시작해 영상처리 기본 알고리즘부터 컴퓨터 비전의 주요 알고리즘인 특징점 검출과 정합, 투영 관계까지 고르게 다룬다. 특히 이 3판은 개정판의 내용을 바탕으로 카메라 포즈 복원, 3D 장면 재구성, 스테레오 영상으로부터 깊이 계산, 일굴 인식, 보행자 검출을 위한 객체 추적 등 많은 내용이 보강됐으므로 관심이 있는 독자에게 큰 도움이 될 수 있다. 개정판에 이어 3판을 번역하면서 초판과 개정판을 본 독자의 의견을 취합하고 관련 문헌을 참조해 업계와 학계에서 쓰이는 용어를 가능한 한 반영했으므로 독자마다 조금은 다르게 느낄 수도 있다. 초판에 언급했듯이, 지금까지 출간된 C 언어 기반 OpenCV 책과 달리 차별화된다. 특히 OpenCV 3.x의 C++ 인터페이스를 중심으로 예제를 통해 OpenCV를 다루기 위한 기초 지식과 활용법을 알 수 있는 프로그래밍 입문서이기도 하다. 따라서 C++를 올바르게 활용하고 싶거나 영상처리와 컴퓨터 비전 분야에 관심이 많은 C++ 전문 개발자에게 길라잡이가 될 것이라 믿는다. 또한, 이 책에서 다루는 OpenCV 버전은 최신 버전인 3.x을 기준으로 하고 있지만, 현재 OpenCV의 새로운 기능을 확인하고 싶다면 OpenCV 공식 홈페이지(http://www.opencv.org)에서 제공하는 릴리즈 노트를 참조하길 바란다.
OpenCV는 컴퓨터 비전 애플리케이션 개발에 있어 훌륭한 도구라는 점에 동의한다. 하지만 도구는 도구일 뿐이다. OpenCV가 제공하는 함수나 클래스 사용법에만 익숙해지면 자신만의 알고리즘을 구현하는 데에는 언젠가 한계에 부딪힌다. 누구나 한번쯤은 겪었을 것이며, 어떻게 하면 극복할지 고민할 필요가 있다. 잘 쓰면 약, 못 쓰면 독이라는 속담이 있듯이 OpenCV가 제공하는 함수나 클래스에 구현된 해당 알고리즘에 대한 내용을 스스로 공부했으면 좋겠다는 바람이 크다. 따라서 OpenCV의 온라인 문서, 관련 알고리즘을 기술한 이론서, 참고문헌 등을 함께 보면서 명확하게 이해하고, 올바르게 활용할 수 있을 때까지 시간이 걸리는 한이 있더라도 끊임없이 실험해볼 것을 당부 드린다.

이문호 - D.S.G

옮긴이 소개

이문호

관심 분야는 정보 검색이며, 매일 4시간 이상 걸리는 출퇴근 시간에 다방면의 원서를 읽는 쏠쏠한 즐거움에 빠져 사는 아날로그 세대다. 영상처리를 전공으로 석사를 마쳤고, 현재 문헌정보학 박사 과정에 있으며, 컴퓨터 비전 기반 IoT 솔루션 개발에 전념하고 있다. 오픈소스 자바 검색 엔진인 루씬(Lucene)에 관한 첫 국내서인 『루씬 인 액션』(에이콘, 2005)을 공역했으며, 오픈소스 영상처리 라이브러리를 다룬 오픈소스 라이브러리 실무 시리즈 도서를 펴낸 저자로도 잘 알려져 있다. 『MATLAB을 활용한 실용 디지털 영상처리』(홍릉과학, 2005), 『오픈소스 OpenCV를 이용한 컴퓨터 비전 실무 프로그래밍』(홍릉과학, 2007) 등 7권의 책을 저술했으며, 번역서로는 에이콘출판사에서 출간한 『OpenCV 2 Computer Vision Application Programming Cookbook 한국어판』(2012), 『(개정판) OpenCV를 활용한 컴퓨터 비전 프로그래밍』(2015), 『matplotlib을 이용한 데이터 시각화 프로그래밍』(2015), 『OpenCV 컴퓨터 비전 프로젝트』(2016), 『매트랩 영상처리 프로그래밍』(2016), 『매트랩 영상처리 프로그래밍』(2016), 『매트랩 그래픽과 데이터 시각화』(2017)가 있다.

목차

목차
  • 1장. 영상처리 준비
  • 소개
    • OpenCV 라이브러리 설치
    • 영상을 불러오고 띄우고 저장하기

  • 2장. 화소 다루기
    • 소개
    • 화소 값에 접근
    • 포인터로 영상 조회
    • 영상을 조회하는 효율적인 반복문 작성
    • 이웃 접근으로 영상 조회
    • 간단한 영상 산술 수행
    • 영상 재매핑

  • 3장. 영상의 컬러 처리
    • 소개
    • 전략 디자인 패턴을 이용한 컬러 비교
    • 그랩컷 알고리즘으로 영상 분할
    • 컬러 표현 변환
    • 색상, 채도, 밝기로 컬러 표현

  • 4장. 히스토그램으로 화소 세기
    • 소개
    • 히스토그램 계산
    • 영상 모습을 변경하는 룩업 테이블 적용
    • 영상 히스토그램 평활화
    • 특정 영상 내용을 검출하기 위한 히스토그램 역투영
    • 객체를 찾는 평균 이동 알고리즘 사용
    • 히스토그램 비교를 이용한 유사 영상 검색
    • 적분 영상으로 화소 개수 세기

  • 5장. 형태학 연산으로 영상 변환
    • 소개
    • 형태학 필터를 이용한 영상 침식과 팽창
    • 형태학 필터를 이용한 영상 열림과 닫힘
    • 그레이레벨 영상에 형태학 연산자 적용
    • 워터쉐드를 이용한 영상 분할
    • MSER를 이용해 두드러진 영역 추출

  • 6장. 영상 필터링
    • 소개
    • 저주파 통과 필터를 이용한 영상 필터링
    • 중간값 필터를 이용한 영상 필터링
    • 에지를 검출하는 방향성 필터 적용
    • 영상의 라플라시안 계산

  • 7장. 선, 외곽선, 성분 추출
    • 소개
    • 캐니 연산자로 영상 외곽선 검출
    • 영상에서 허프 변환으로 선 검출
    • 선을 점 집합에 맞추기
    • 성분의 외곽선 추출
    • 성분의 모양 기술자 계산

  • 8장. 관심점 검출
    • 소개
    • 영상에서 코너 검출
    • 특징을 빠르게 검출
    • 크기에 불변한 특징 검출
    • 다중 크기에서 FAST 특징 검출

  • 9장. 관심점 기술과 정합
    • 소개
    • 지역 템플릿 정합
    • 지역 명도 패턴 기술
    • 이진 특징으로 특징점 기술

  • 10장. 영상에서 투영 관계 추정
    • 소개
    • 영상 쌍의 기초 행렬 계산
    • RANSAC을 이용한 영상 정합
    • 두 영상 간의 호모그래피 계산
    • cv::Stitcher 모듈로 영상 파노라마 생성
    • 영상에서 평면 대상 검출

  • 11장. 3D 장면 재구성
    • 소개
    • 디지털 영상 형성
    • 카메라 보정
    • 카메라 포즈 복원
    • 보정된 카메라로부터 3D 장면 재구성
    • 스트레오 영상으로부터 깊이 계산
  • 12장. 비디오 시퀀스 처리
    • 소개
    • 비디오 시퀀스 읽기
    • 비디오 프레임 읽기
    • 비디오 시퀀스 쓰기
    • 비디오에서 전경 객체 추출

  • 13장. 시각적 움직임 추적
    • 소개
    • 비디오에서 특징점 추적
    • 옵티컬 플로 추정

  • 14장. 예제로 배우기
    • 소개
    • 비디오에서 특징점 추적
    • 하르 특징의 캐스케이드로 객체와 얼굴 찾기
    • 서포트 벡터 머신과 방향성 기울기의 히스토그램으로 객체와 사람 검출

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[p.32 : 2행]

[p.70 : 아래서 9행]
영상의 채널 개수는 nchannels 메소드로
->
영상의 채널 개수는 channels 메소드로

[p.121 : 아래서 10행]

[p.121 : 아래서 6행]

[p.173 : 2행]
image = cv::imread("baboon3.jpg");
->
image = cv::imread("baboon2.jpg");

[p.276 : 7~9행]

[p.294]
... 제공하는 9개의 연결 성분을 얻는다.
->
... 제공하는 6개의 연결 성분을 얻는다.

[p.295: 아래에서 2행]
int cmax = 1000;
->
int cmax = 500;

[p.302 : 5행]
cv::conveityDefects
->
cv::convexityDefects

[p.302 : 9행]
:::Point>
->
::Point>

[p.305 : 3행]
cv::approxPolyDP(it,poly,10,true);
->
cv::approxPolyDP(
it,poly,5,true);

[p.322 : 아래에서 9행]
new cv::FastFeatureDetector(40);
->
cv::FastFeatureDetector::create(40);

[p.324 : 6행]
조사하지 하지 않은 채
->
조사하지 않은 채

[p.421 : 아래에서 6행]
dkvdptj
->
(삭제)