알라딘

헤더배너
상품평점 help

분류

이름:이문호

최근작
2019년 3월 <SPARQL 배우기>

매트랩 그래픽과 데이터 시각화

예전부터 그랬고 지금도 변함이 없는 화두거리인 시각화는 데이터 분석 결과를 누구나 쉽게 이해할 수 있도록 시각으로 표현해 전달하는 과정이다. 데이터 분석 관련 업체들이 빅데이터 분석 시장의 성장 가능성을 눈여겨보고 데이터 시각화 솔루션을 속속 출시하고 있는 것도 결코 무관하지 않을 것이다. 여기서 주목해야 할 부분은 데이터는 분야마다 특성이 다르기에 어떤 시각화 방법을 써야 하고, 무슨 도구를 사용해야 하는지는 정답이 없다는 점이다. 예로 시각화 방법을 들자면 시간 시각화, 공간 시각화, 분포 시각화, 관계 시각화, 비교 시각화, 고차원 시각화, 대화형 시각화 등 다양하다. 따라서 입문자에게는 어려움이 있을 수 있다. 시행착오를 줄이는 절대적인 지름길이 없다지만, 분석 대상인 데이터를 충분히 이해하고 이에 맞춰 어떻게 표현할지 고민한 후, 적합한 그래프 표시 방법을 잘 찾을 수 있는 방법을 나름대로 정리하면 어떨까? 그다음에는 시각화를 극대화하기 위해 그래프를 더 정교하게 다듬는 방법을 연구해도 늦지 않다. 접근 방법이 어느 정도는 다르겠지만 위 내용과 일맥상통하는 이 책에서는 매트랩을 이용한 데이터 시각화에 관심이 많은 독자를 대상으로 간단한 1차원부터 3차원까지, 더 나아가 고차원 데이터를 대상으로 적합한 그래프를 띄우는 알찬 예제를 담아냈다. 특히 저자는 생물과학 분야에 종사하고 있어 관련 분야와 관련된 시각화 방법을 시중의 다른 책에 비해 좀 더 다루고 있다는 점이 흥미롭다. 아무튼 이 책의 내용을 자세하게 설명하자면 어떠한 데이터라도 쉽게 표현할 수 있도록 데이터 특성에 따라 체계화했는데, 실제로 매트랩의 격자, 레이블, 배치 같은 기본 그래프 요소 활용과 사용자 정의부터 시작해 1차원과 2차원 데이터 시각화를 위한 선 플롯, 막대 플롯, 분산형 플롯, 줄기 플롯 등의 범용 차트, 투명도, 조명, 뷰 제어 같은 고급 기능, 체적 데이터에 기반을 둔 3차원 데이터 시각화, 다차원 데이터를 표현하는 글리프와 평행좌표, 주성분 분석, 방사 좌표 투영 기술, 콜백 함수 기반 대화형 그래픽 등까지 수준별 예제를 잘 정리했다. 이와 같이 이 책은 단계별 학습 방식을 채택한 책이 아니기 때문에 수시로 필요한 내용을 확인해 응용할 수 있으므로, 궁극적으로 데이터 분석에 대한 통찰력과 그래프 활용법을 동시에 잡을 수 있다.

매트랩 영상처리 프로그래밍

매트랩(MATLAB)을 처음 접했을 땐 18년 전이었으며 당시 버전은 5.0이었다. 시간이 흐르면서 기술이 발전함에 따라 어느새 버전이 높아지고 많은 기능이 추가되는 것을 보면서 실감한 부분은 예나 지금이나 변함없이 매트랩 프로그래밍 관련 기초적인 방법만 알고 있다면 버전과 관계없이 자신의 분야에서 매트랩을 잘 활용할 수 있다는 점이었다. 사실 선형 대수학에 기반을 둔 매트랩은 다른 프로그래밍 언어에 비해 사용하기가 쉽고 결과를 시각화하기가 편한 강력한 프로그래밍 언어다. 영상처리 전공자와 컴퓨터 비전 전공자를 비롯한 연구자는 알고리즘 프로토타입을 설계해 성능을 테스트할 경우 매우 빠른 시간 안에 만들어야 하므로 매트랩을 대부분 사용하며, 영상처리와 컴퓨터 비전 관련 함수를 내장한 IPT(Image Processing Toolbox)와 CVST(Computer Vision System Toolbox) 등을 활용한다. 알고리즘 검증을 마치면 C/C++로 직접 개발하거나 혹은 알고리즘을 C/C++ 코드로 자동으로 생성하는 툴을 사용하고, 아니면 OpenCV 같은 컴퓨터 비전 라이브러리를 이용해 이식 하는 과정이 일반적이다. 여기서 주지해야 할 부분은 앞에 언급한 매트랩의 툴박스는 결코 만능이 아닌 데다가 매트랩에서 제공하는 매뉴얼에는 함수 사용법과 결과만 제시하고 있을 뿐, 해당 알고리즘을 자세하게 다루지 않고 해당 함수의 소스를 공개하고 있지 않아 알고리즘 동작 원리를 알기 힘들기 때문에 입문자에게는 어느 정도는 한계가 있다는 점이다. 그런 이유로 관련 이론에 대한 이해가 뒷받침돼야만 툴박스의 내장 함수를 제대로 사용할 수 있고, 더 나아가 자신이 원하는 프로그램을 수월하게 개발할 수 있다는 점을 분명히 말씀 드리고 싶다. 이 책의 저자인 조지 사오스카 박사는 나름대로 기존 매트랩 책과 차별화를 시도했으며, 다음과 같이 정리할 수 있다. 첫째, 정지 영상에서 동영상 처리까지 매트랩의 IPT와 CVST 등을 연계해 설명하며, 비디오 처리와 관련된 내용을 다룬 책이 거의 없다는 점을 고려했다. 둘째, 그레이스케일 영상 기반 알고리즘을 컬러 영상을 처리할 때 그대로 적용할 수 없으니 어떻게 처리해야 할지 친절하게 알려주고 있다. 셋째, 독자가 직접 매트랩 코드를 입력하고 결과를 바로 볼 수 있도록 실습을 유도한 후, 왜 그렇게 나왔는지 친절하게 설명한다. 넷째, 예술 공학의 꽃인 합성과 컴퓨터 비전의 움직임 추적 등을 다양하게 다루며 매트랩으로 할 수 있음을 강조한다. 한 줄로 요약하자면, 매트랩으로 정지 영상부터 예술 공학, 비디오 처리까지 필요한 내용을 쉽게 실습하며, 매트랩의 툴박스 매뉴얼보다 많이 참고할 수 있는 책이라고 할 수 있다. 실제로 조지 사오스카 박사는 매트랩 전문가 관점에서 기존 책의 패턴을 깨버리고 과감하게 시도했으며, 필요한 내용만 보여주면서 실습을 자연스럽게 이끄는 흡인력이 뛰어나고 또한 이 책의 '보충 설명(What just happened?)'에서 보듯이 다른 책에서도 접할 수 없었던 저자의 배려가 여기저기 묻어난다. 매트랩이 상용 프로그램이라는 특성 때문에 영상처리와 컴퓨터 비전 강의 과정에서 교재로 참고하거나 실습에 어려움이 있다면, 매트랩에 대한 대안이자 오픈소스로 공개된 옥타브(Octave)를 활용해 이 책을 참고할 수 있을 것이다. 2005년에 『MATLAB을 활용한 실용 디지털 영상처리』(홍릉과학) 책을 낸 이후로 지금까지는 출판 상황이 좋지 않아 개정판을 낼 기회가 없었고, 매트랩을 이용한 영상처리 책이 국내외로 많이 출간되지 않은 탓에 아쉬움이 많았다. 그러던 중에 이 책을 번역해 출간하면서 어느 정도는 마음의 부담을 덜 수 있게 돼 기쁘다.

안드로이드 비동기 프로그래밍

갓 입문한 개발자들은 시간이 지나면서 순차적인 프로그래밍 방식에 점차 익숙해 진다. 하지만 멀티스레드 프로그래밍은 어느 쪽으로 흐름이 이어질지 예상하기가 어렵고 코딩이 복잡해지는 데다가 디버깅도 만만치 않아 정신적인 부담이 상당히 크다. 따라서 초보 개발자들은 멀티스레드 프로그래밍을 시작하는 것을 주저할 수 도 있다. 이것은 어떠한 프로그래밍 언어에서도 마찬가지며, 안드로이드 개발도 예 외는 아니다. 하지만 여기서 분명히 말하고 싶은 것은 요즘과 같은 멀티코어 시대에 멀티스레드 프로그래밍은 어렵다고 해서 무작정 피할 수 있는 존재가 결코 아니라 는 사실이다. 오히려 멀티스레드 프로그래밍은 부드럽게 반응하는 안드로이드 앱을 만들 수 있게 적극적으로 돕는 좋은 '연인'이기에 일단 친해져보면 어떨까? 그래야 만 프로그래밍 실력이 늘어나고 더 멋진 앱을 만들 수 있을 것이다. 사실 멀티스레 드를 활용하는 것이 일반화된 지금의 개발 업계에서는 안드로이드라는 한정된 자 원을 활용하면서도 안정적인 앱을 만들어내는 것이 관건이다. 그만큼 안드로이드에 특화된 멀티스레드 프로그래밍을 비롯해 여러 가지 기법을 알아두는 것이 좋다. 이 책은 간결한 구성을 바탕으로 AsyncTask, Executor, Handler, Loader, IntentService 등 비동기 프로그래밍을 위한 주요 기법을 다룬다. 사실 이 책의 저 자가 하고 싶은 이야기는 스레드를 중시하되 백그라운드 스레드에서 작업을 수행 하는 생성자를 가능한 한 활용하자는 것이며, 그래야만 안정적이고 반응성 있는 앱 을 개발할 수 있고 또한 그 앱을 사용하는 사람에게 최고의 즐거움을 줄 수 있다는 것이다. 이와 같은 저자의 의도대로 독자가 이 책을 통해 안드로이드 비동기 프로그 래밍을 좀 더 쉽게 접할 수 있길 바란다. 이 책의 원서는 2013년에 출간됐고 지면상의 제약으로 인해 비동기 프로그래밍 기 법을 매우 깊이 다루지는 않으므로, 자세한 내용을 더 보고 싶다면 관련 내용을 다룬 책인 『Asynchronous Android Programming』(팩트출판사, 2016), 『Efficient Android Threading』(오라일리, 2014)을 참고하길 바란다.

파이썬 병렬 프로그래밍

파이썬은 C/C+에 비해 상대적으로 쉽고 빠르게 개발할 수 있는 좋은 프로그래밍 언어다. 그 비결은 무엇일까? 바로 모듈 형태로 제공되는 수많은 기능을 찾아 쓰기만 하면 되는 라이브러리가 풍부해 강력하면서도 효율적으로 사용할 수 있다는 장점 때문이다. 하지만 파이썬에 입문한 독자에게는 병렬 프로그래밍이 더 막막할 수 있다. 그럴 수밖에 없는 이유는 병렬화와 관련된 이해가 필요한 데다가 파이썬의 병렬 프로그래밍 관련 많은 모듈을 어떤 경우에 쓰고 어떻게 활용하는지 쉽게 감이 오지 않기 때문이다. API 문서와 예제 코드를 참고하면 되겠지만, 수많은 시행착오를 겪지 않는 이상 병렬 프로그램에 대한 자신감에 한계가 있을 것이다. 경험이 풍부한 개발자도 예외일 수 없다. 저자는 이런 현실을 고려해 모든 파이썬 개발자가 병렬 프로그래밍에 대한 이해와 자신감을 갖추게 하되, 어떤 모듈을 사용해야 하는지에 대한 지침을 제공하고자 이 책을 집필했다. 이 책은 효율적인 병렬 프로그래밍을 위한 내장 모듈과 외장 모듈 중에서 스레드 기반 threading 모듈과 프로세스 기반 multiprocessing 모듈, 병렬 태스크를 수행하는 패러럴 파이썬과 분산 처리를 위한 셀러리, 비동기 I/O를 지원하는 asyncio 모듈을 선정한 후, 처음부터 병렬 프로그래밍 모델 개념, 병렬화 문제점을 확인한 후, 병렬 알고리즘 설계에 따른 모듈 선정 방법을 알려준다. 그런 다음에 실생활에서 접할 수 있는 사례인 피보나치 수열 구하기와 웹 수집기를 구현하는 과정에서 각 병렬 모듈에 대한 약간의 이론과 사용법을 제시한다. 이 책을 마칠 때쯤이면 자신만의 병렬 프로그램을 구현할 때 적재적시에 해당 모듈을 선택할 수 있는 자신감이 생길 것이다. 이 책이 독자에게 많은 도움을 주는 안내서로 자리매김하길 바란다. 덧붙여 이 책의 내용을 바탕으로 파이썬을 이용한 병렬 프로그래밍을 전문적으로 다루되 예제가 풍부한 책을 원한다면 팩트출판사의 GPU 프로그래밍 방법까지 설명한 『Python Parallel Programming Cookbook』(2015)을 읽어보기를 권한다.

C# 멀티스레드 프로그래밍

요즈음 대부분의 프로그래밍 언어들은 기본적인 문법사항 외에 멀티스레딩이나 병렬 프로그래밍을 위한 API 등의 내용도 충분히 문서화되어 있으므로 접근하기 쉽다. 프로그래밍 언어를 처음 공부했을 때를 떠올려보면, 아마도 당장 사용할 기회가 없기에 그냥 넘어갔던 적이 한두 번이 아니었을 것이다. 그래도 요즘에는 프레임워크가 잘 만들어져 있어 뒷단에서 어렵고 복잡한 부분을 알아서 처리해주니 얼마나 편한 세상인지 실감할 수도 있다. 바야흐로 인공지능 시대가 도래했지만 컴퓨터가 프로그램을 자동으로 만들어주는 것이 여전히 먼 미래의 이야기일 뿐, 결국 사람이 만들어야 한다는 사실 자체는 변함이 없다. 언젠가는 수많은 요청을 받아 끊임없이 처리해야 하는 상황에서 버그가 최대한 없도록 안정적으로 작동하는 프로그램을 개발해야 한다면 어떻게 해야 할지 고민하게 때가 한 번쯤은 찾아올 것이다. 이런 경우에는 기본기가 탄탄하고 쓰임새를 어느 정도 알고 있다는 전제에서 처음에는 고개를 절레절레 흔들겠지만, 관련 자료와 멋진 예제 코드만 있다면 프로그램의 성능을 최대한 좋게 만드는 실마리를 얻을 수 있다는 점에는 모두가 동의할 것이다. 그 자료는 책일 수도 있고 인터넷에 공개됐을 수도 있다. 이쯤에서 책은 저자의 경험이 잘 담겨 있으며, 수시로 참조할 수 있으니 더 낫지 않겠는가? 아무튼, C#을 갓 뗀 독자와 현업 개발자에게는 기본 문법을 알고 있다는 전제에서 다중 CPU와 코어를 최대한 활용해 프로그램의 성능을 끌어올리는 기법은 멀티스레딩, 태스크 병렬 라이브러리, PLINK, 반응형 확장 프레임워크 등 여러 가지다. 이들은 저마다 장단점이 있어 어떻게 적용할지 나름대로 판단하기가 애매할 수 있다. 이를 위해 저자는 자신만의 노하우를 바탕으로 스레드 기초부터 고급 주제인 병렬 프로그래밍기까지의 기법을 단계별로 정리하면서 적재적소에 적용할 수 있는 예제 코드와 간결한 설명을 이 책에 담아냈다. 또한 이 책은 따라 하기 방식을 채택한 기존 책과 달리 자신에게 필요한 내용과 코드를 직접 찾아 응용하며 항상 참고할 수 있게 구성했으므로 독자들에게 큰 도움이 될 것이다. 물론 깊은 내용을 전문적으로 다루거나 UI 위주로 다룬 책도 필요할 수 있으므로, 『Essential C# 5.0 한국어판』(에이콘출판, 2014)과 『C# Multithreaded and Parallel Programming』(팩트출판사, 2014)을 함께 보는 것을 권한다.

Emgu CV와 테서렉트 OCR로 하는 컴퓨터 비전 프로그래밍

영상처리를 비롯한 컴퓨터 비전에 입문한 독자에게는 풍부한 이론 설명과 예제 코드가 담긴 OpenCV 책을 먼저 봄이 정석입니다. 눈높이를 매우 높게 잡아 초반에 무리한다면 쉽게 흥미를 잃을 수 있습니다. 그러므로 자신에게 편한 프로그래밍 언어로 기본적인 영상처리 방법부터 따라 하면서 익히고, 영상처리를 포함한 컴퓨터 비전 관련 프로젝트를 할 때 지름길을 빠르게 찾을 수 있게 하는 책으로 입문하는 게 바람직합니다. 알고 계시겠지만 Emgu CV는 컴퓨터 비전 분야에서 유명한 컴퓨터 비전 라이브러리인 OpenCV의 닷넷 래퍼입니다. C#, 비주얼베이직, 비주얼C++ 등 여러 언어를 지원하며, 또한 다양한 플랫폼에서 실행할 수 있는 장점을 갖는 교차플랫폼 라이브러리임에도 불구하고, 공식 사이트와 인터넷에 공개된 예제를 참조해야 하는 현실인데도 안타깝게 Emgu CV를 다룬 책이 거의 없습니다. 따라하기 시리즈 특성상 분량이 작지만, 『Emgu CV와 테서렉트 OCR로 하는 컴퓨터 비전 프로그래밍』은 C#으로 Emgu CV를 이용한 컴퓨터 비전 프로그래밍을 시작하려는 독자에게 쉬운 길을 안내할 수 있는 책입니다. 첫 술에 배부를 수 없겠지만, 영상과 행렬 다루기부터 시작해 컴퓨터 비전 분야에서 쉽게 접할 수 있는 모양 감지, 얼굴 감지, 광학 문자 인식, 테서렉트 OCRTesseract OCR을 이용한 자동차 번호판 인식, 영상 잇기 등에 관한 프로젝트를 진행하며 관련 배경 지식을 쌓을 수 있습니다. 이 책을 다 본 후에는 다른 OpenCV 관련 책이나 자료를 참고하면서 이론을 이해한 후, Emgu CV에서 제공하는 매뉴얼에서 필요한 메소드를 찾아 적용할 수 있겠다는 자신감을 갖출 수 있을 것입니다.

matplotlib을 이용한 데이터 시각화 프로그래밍

20대 초반이었던 1998년에 매트랩(MATLAB)을 처음 접했을 때 두툼한 매뉴얼을 보면서 그게 뭐냐고 신기했던 때가 떠오릅니다. 그때는 C/C++의 포인터에 쩔쩔매던 시절이었는데, 커맨드라인에서 스크립트를 작성하고 엔터키만 치면 바로 결과가 나왔기 때문입니다. C/C++로 했다면 한 달간 꼬박 매달려야 했을 작업을 며칠 만에 끝냈으니 대학원 시절의 구세주였습니다. 그 후에 세월이 흐르고 IT 분야도 많이 바뀌고 모든 게 다 변했습니다. 그 와중에서 맷플롯립을 접했지만, 현업과 무관했기에 아쉬움을 뒤로 했습니다. 이 책을 번역할 기회를 얻고 번역을 하면서 제겐 매트랩과 맷플롯립의 기능을 비교하면서 마냥 풋풋했던 학창 시절의 추억을 더듬어보는 좋은 시간이었습니다. 유명한 파이썬 라이브러리 개발자이자 2012년에 세상을 떠난 존 헌터(John Hunter)가 2007년부터 오픈 소스로 공개한 맷플롯립은, 모두 잘 알고 있듯 2차원 그래프를 구현할 때 쓸 수 있는 데이터 시각화 도구인 파이썬 모듈입니다. http://matplotlib.org에서 맷플롯립 예제와 문서를 공개했으며, 2,000여 페이지에 이르는 방대한 PDF 매뉴얼까지 제공하고 있어 과학 분야에서 폭넓게 활용되는 파이썬 모듈로서 변함없는 사랑을 받고 있습니다. 상용 애플리케이션인 매트랩과 다른 플롯팅 패키지인 그누플롯(GNUplot)과 비교했을 때, 교차 플랫폼을 지원하는 맷플롯립은 파이썬의 장점을 잘 활용했으며, 단지 파이썬 코드만으로 파이썬의 여러 과학 컴퓨팅 패키지와 함께 조합하여 원하는 결과를 얻을 수 있고, 매트랩 같은 도구를 다룬 경험이 있다면 짧은 시간에 익숙해질 만큼 정말로 사용하기 쉽습니다. 맷플롯립을 사용하기 위한 설치부터 다양한 2차원 그래프 생성 및 표시, 파일 저장, 3차원 그래프 표시, 다른 애플리케이션과 통합까지 고르게 다루는 이 책은 기초부터 활용까지 아우르며 예제 코드와 함께 설명합니다. 여기까지는 다른 책과 다를 바 없을까요? 그럴 수도 있고 아닐 수 있습니다. 이 책은 따라 하기 방식이 아니기 때문에, 자신에게 필요한 내용과 코드를 그때마다 찾아볼 수 있으므로 항상 곁에 둘 수 있는 참고서이며, 구현에 걸리는 시간을 절약할 수 있습니다. 어쩌면 처음부터 시작하려는 독자에게는 만만치 않을 수도 있습니다. 하지만, 파이썬을 다룬 경험이 있다는 전제에서 맷플롯립만 중점으로 다루며, 다른 과학 컴퓨팅 패키지에 대한 선수 지식이 필요하지 않습니다. 참고로 맷플롯립을 다룬 PDF 매뉴얼도 있지만 영어인 데다가 2,000여 페이지에 이르기 때문에 한계가 있다는 점을 감안한다면 더 좋은 대안입니다. 사실 지금까지는 맷플롯립을 다룬 책이 거의 없어 적잖은 어려움이 있었기에, 맷플롯립을 전문적으로 다룬 책이 있었으면 얼마나 좋을까라며 아쉬워했던 적이 있었습니다. 그러던 중 이 책을 접했고 번역하고 출간할 수 있게 돼 매우 기쁩니다. 그만큼 파이썬으로 데이터 분석을 위한 그래프를 구현해보려는 독자 여러분에게 이 책이 도움이 되길 바랍니다.

OpenCV 컴퓨터 비전 프로젝트

지금 생각해도 까마득한 2012년 겨울, 이 책의 원서인 『Mastering OpenCV with Practical Computer Vision Projects』의 목차를 보자마자 OpenCV로 컴퓨터 비전 애플리케이션을 제대로 만들고 싶은 독자에게 한 줄기 빛이 될 것이라 믿어 의심치 않았고 이 책에 대해 큰 책임을 느꼈다. 번역에 대한 부담감이 밀려오면서 한편으로는 "이런 책이 우리나라에서 출간됐다면 얼마나 좋았을까"라는 씁쓸하면서도 부러운 마음을 감출 수 없었다. 다른 분야도 그렇겠지만, 우리나라에서는 안타깝게도 자신이 힘들게 만든 소스를 자유롭게 활용하길 바라는 마음으로 온라인에 공개하고, 노하우를 함께 공유해 더 나은 결과를 얻을 수 있는 환경이 아직까지 무르익지 않았다. 컴퓨터 비전은 실제로 이론서에서 무수하게 접하는 영상 처리부터 증강현실, 패턴 인식, 신경망 등 다양한 분야를 아우르는 이론에 대해 많은 이해가 필요한 분야다. 아무리 노련한 전문가라도 구현 환경이 서로 다른 상황에서 이론을 어떻게 실무에 적용할지 한계에 부딪칠 때가 많을 진데, 하물며 OpenCV를 갓 뗀 입문자에게는 어디서부터 시작해야 하는지에 대한 안내서가 없어 시작부터 커다란 벽과 마주하게 된다. 이러다 보니 특히 실무에 즉시 활용할 수 있는 책이 국내외에 거의 없어 좌절할 수도 있다. 고생해가면서 만든 결과가 너무 아까워 남에게 잘 공유하지 않아 누군가가 또다시 같은 길을 반복하는 것이 작금의 현실이 아닌가 싶다. 이 책은 저자 세르빈이 컴퓨터 비전 분야에서 OpenCV를 이용해 만든 프로그램 소스를 공개하며 기고하는 열정적인 전문가이자 블로거인 여덟 저자를 섭외하고 협업해 세계 각지에 흩어져 있는 어려운 현실을 딛고 공동 집필한 책이다. 글로만 두리뭉실 접했을 카메라 응용, 증강현실, 자동차 번호판 인식, 얼굴 검출, 얼굴 추적, 얼굴 인식에 이어 안드로이드/iOS 앱 개발 프로젝트까지 제공하고 있어, 독자에게 "컴퓨터 비전은 결국 사람이 하는 분야다."라는 불변의 진리를 일깨워주는 책이라고 할 수 있다. 이 책은 흔히 볼 수 있는 따라 하기 방식의 책이 아니다. OpenCV를 설치하면 딸려 나오는 예제의 부족함을 많이 채워주면서, 독자가 관심 분야에 맞는 장을 골라 읽으며 이론을 실무 프로젝트로 풀어 나갈 수 있도록 지름길을 제시한다. 특히 얼굴 검출부터 얼굴 추적, 얼굴 인식 과정까지 상세하게 다루고 있으며, 함수 위주의 기존 OpenCV 책과 상당히 차별화되어 있다. 다만 입문자가 쉽게 볼만한 책이 아니므로, C/C++로 OpenCV를 어느 정도 다룰 수 있게 해당 분야의 이론에 대한 선수 배경 지식을 미리 습득할 것을 권장한다. 그 전까지는 OpenCV의 기본을 설명한 OpenCV 책을 이론서와 함께 공부하면 더욱 좋다. 이 책과 더불어 최신 OpenCV 기반의 다양한 컴퓨터 비전 프로젝트 실습과 이론에 대해 깊이 있는 이해를 다룬 책인 『OpenCV By Example』과 『OpenCV Blueprints』를 참고한다면 자신만의 컴퓨터 비전 애플리케이션 프로젝트 개발에 더 많은 도움이 될 것이다.

OpenCV 프로그래밍

제가 MFC 기반의 OpenCV를 다룬 책을 처음 출간한 2007년만 해도 이 기술이 이토록 오랫동안 이어질 것이라고는 상상하지 못했습니다. 그 후부터 짧지도 길지도 않은 시간 속에 OpenCV가 학계와 산업계에서 가장 널리 사용되는 컴퓨터 비전 라이브러리로 거듭 진화하면서 국내외에서 수십 권 이상의 관련 서적이 출간됐습니다. 모든 OpenCV 책을 다 보지는 못했지만 저자의 집필 방식에 따라 이론을 기반으로 함수를 설명하는 책, 그리고 프로젝트를 중심으로 함수 사용법을 습득 혹은 병행하는 방법으로 설명하는 책, 크게 이와 같은 두 가지 형태로 나눌 수 있습니다. OpenCV가 제공하는 기능이 매우 방대해 책에 전부 담아낼 수 없고, 독자마다 원하는 내용이 다르기 때문입니다. 비록 첫술에 배부를 수 없겠지만, 학습 시간을 최대한 줄이면서 빠르게 이해하되 프로젝트에 바로 활용 가능한 지름길을 제공하는 책이 있으면 얼마나 좋을까요? 컴퓨터 비전이나 영상처리에 대한 기본 지식이 어느 정도 필요하겠지만, 어찌 보면 이것은 저자와 독자 모두의 바람일 수 있습니다. 스페인에 있는 카스티야 라 만차 대학교 비지랩스 연구실의 오스카 데니즈 수아레즈 교수와 연구원 여섯 분이 이 같은 현실을 반영하고 OpenCV와 관련된 프로젝트 수행 경험을 살려 최신 OpenCV 버전을 중심으로 다루되 실무 접근 방식으로 명쾌하게 풀어나간 책을 출간했습니다. 바로 아마존에서 좋은 평가와 더불어 찬사까지 이끌어낸 이 책 『OpenCV 프로그래밍』입니다. 이 책은 영상처리와 컴퓨터 비전에 필요한 OpenCV의 핵심 함수를 중심으로 영상과 비디오 처리부터 시작해 사용자 인터페이스 생성, 영상처리 기본 지식, 더 나아가 영상 분할, 2D 특징 추출, 학습과 객체 검출, 모션 추적, 기계학습, GPU 기반 가속까지 예제를 중심으로 점진적으로 다루며, 필요에 따라 찾아볼 수 있는 참고서로도 활용할 수 있습니다. 이 책의 특성상 어디까지나 OpenCV를 좀 더 깊게 이해하고 잘 활용하기 위한 방법을 중심으로 다루므로, 영상처리와 컴퓨터 비전 관련 이론에 대해서는 자세히 언급하지 않음을 감안하길 바랍니다. 참고로 이 책은 OpenCV 2.4.X 버전 중심이지만 로버츠 라가니에 교수의 『OpenCV 2를 활용한 컴퓨터 비전 프로그래밍』의 개정판 원서에서 다루지 않은 OpenCV 3.0의 곧 공개될 특징 추출 알고리즘 등의 내용도 설명하고 있으므로, 현재로서 이 책은 최신 OpenCV의 흐름을 잘 반영하고 있다고 생각합니다.

OpenCV를 활용한 컴퓨터 비전 프로그래밍

로버트 라가니에 교수가 집필한 『OpenCV 2 Computer Vision Application Programming Cookbook 한국어판』 초판이 2012년에 국내 출간된 이후에도, OpenCV는 학계와 산업계에서 가장 널리 사용되는 컴퓨터 비전 라이브러리로 꾸준히 인정받으면서 많은 기능이 추가돼 끊임없이 성능을 개선하고 있다. 현재 2.4.x를 넘어 최신 버전인 3.0으로 판올림하기를 컴퓨터 비전 애플리케이션 개발자가 오랫동안 기다렸을 정도로 주목을 받고 있다. 『(개정판) OpenCV를 활용한 컴퓨터 비전 프로그래밍』은 초판의 모든 예제를 재검토해 수정하고, OpenCV 라이브러리의 기능에 관한 더 많은 범위를 추가한 책이다. 영상처리와 컴퓨터 비전에 필요한 OpenCV의 주요 함수를 중심으로 영상처리 준비를 위한 작업부터 시작해 영상처리 기본 알고리즘부터 컴퓨터 비전의 주요 알고리즘인 특징점 검출과 정합, 투영 관계 등까지 고르게 다루고 있다. 특히 초판의 특징점 추출과 정합에 관련된 내용을 개정판에서 2개의 장으로 분리해 자세하게 다룬다. 개정판을 번역하면서 초판을 본 독자의 의견을 취합하고 관련 문헌을 참조해 업계와 학계에서 쓰이는 용어를 가능한 한 반영했으므로 독자마다 조금은 다르게 느낄 수도 있다. 초판의 '옮긴이의 말'에 언급했듯이 이 책은 지금까지 출간된 C 언어 기반 OpenCV 책과 차별화한 책이다. 특히 OpenCV 2.X부터 도입된 C++ 인터페이스를 중심으로 디자인 패턴을 반영한 객체지향 프로그래밍으로 구현된 예제와 함께 공부할 수 있는 프로그래밍 입문서이기도 하다. 따라서 C++를 올바르게 활용하고 싶거나 영상처리와 컴퓨터 비전 분야에 관심이 많은 C++ 전문 개발자에게 길라잡이가 될 것이라 믿는다. 또한, 이 책에서 다루는 OpenCV 버전은 2.4.x을 기준으로 한다. 출판 시점에 최신 버전이 3.0까지 나왔으므로 새로운 기능이 어떤지 확인하고 싶을 경우 OpenCV 공식 홈페이지에서 제공하는 릴리스 노트를 참조하길 바란다. 잘 쓰면 약, 못 쓰면 독이라는 속담이 있다. 실제로 OpenCV가 제공하는 함수나 클래스를 제대로 사용하려면 해당 알고리즘에 대해 잘 알고 있어야 한다. 그만큼 OpenCV에서 제공하는 온라인 문서와 관련 알고리즘을 기술한 이론서를 함께 보면서 명확하게 이해하고, 올바르게 활용할 수 있을 때까지 시간이 걸리는 한이 있더라도 끊임없이 실험해볼 것을 권하고 싶다. 이 책과 더불어 최신 OpenCV의 흐름을 잘 반영한 다른 OpenCV 책인 『OpenCV 프로그래밍』(에이콘출판, 2015)과 출간 예정인 OpenCV를 이용한 고급 애플리케이션 개발 과정을 다룬 『OpenCV for Secret Agents』(Packt Publishing, 2015) 원서를 같이 참고한다면 자신만의 컴퓨터 비전 애플리케이션 프로젝트에 더 많은 도움이 될 것이다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자