이미 소장하고 있다면 판매해 보세요.
|
지은이 서문?
지은이 소개? 1장 영상 처리의 개요 __1.1 영상 처리의 개요 ____1.1.1 디지털 영상 처리란? ____1.1.2 다양한 영상 처리 응용 분야 __1.2 영상 처리 프로그래밍 ____1.2.1 영상 표현 방법 ____1.2.2 2차원 배열 처리 ____1.2.3 변형된 2차원 배열 동적 할당 2장 Visual C++ 프로그래밍 __2.1 Visual Studio 개발 환경 구축 ____2.1.1 Windows 프로그래밍과 Visual C++ ____2.1.2 Visual Studio Community 에디션 설치하기 __2.2 First 프로그램 예제 ____2.2.1 새 프로젝트 만들기 ____2.2.2 MFC 응용 프로그램 마법사 ____2.2.3 Visual Studio 구조 ____2.2.4 프로그램 빌드 및 실행 __2.3 MFC 프로그램 소스 코드 분석 ____2.3.1 MFC 클래스들 간의 상관 관계 ____2.3.2 CFirstApp 클래스 분석 ____2.3.3 CMainFrame 클래스 분석 ____2.3.4 CChildFrame 클래스 분석 ____2.3.5 CFirstDoc 클래스 분석 ____2.3.6 CFirstView 클래스 분석 __2.4 Visual Studio Community 2015 기능 살펴보기 ____2.4.1 클래스 마법사 ____2.4.2 유용한 기능들 3장 BMP 파일의 이해 __3.1 비트맵 개요 ____3.1.1 비트맵 정의와 종류 __3.2 BMP 파일의 이해 ____3.2.1 BMP 파일의 전체 구조 ____3.2.2 비트맵 파일 헤더 ____3.2.3 비트맵 정보 헤더 ____3.2.4 색상 테이블(팔레트) ____3.2.5 픽셀 데이터 __3.3 실제 BMP 파일의 분석 ____3.3.1 그레이스케일 BMP 파일의 분석 ____3.3.2 트루컬러 BMP 파일의 분석 __3.4 BMP 영상을 화면에 출력하기 ____3.4.1 DIB 화면 출력 함수(SetDIBitsToDevice와 StretchDIBits) ____3.4.2 BmpShow 프로그램 작성 4장 영상 클래스 만들기 __4.1 영상 클래스 설계 ____4.1.1 IppDib와 IppImage 클래스 ____4.1.2 IppCreate 프로젝트 생성하기 __4.2 IppDib 클래스 만들기 ____4.2.1 IppDib 클래스 추가 ____4.2.2 비트맵 생성과 소멸 ____4.2.3 BMP 파일 입출력(불러오기 및 저장하기) ____4.2.4 비트맵 화면 출력 ____4.2.5 클립보드 지원(복사 및 붙여넣기) ____4.2.6 기타 유용한 기능(연산자 재정의, 비트맵 정보 제공 등) __4.3 IppImage 클래스 만들기 ____4.3.1 IppImage 클래스 추가 ____4.3.2 다양한 자료형 지원(템플릿 클래스) ____4.3.3 영상 생성과 소멸 ____4.3.4 픽셀 값 접근 기능 ____4.3.5 기타 유용한 기능(연산자 재정의, 비트맵 정보 제공 등) ____4.3.6 RGBBYTE 클래스 정의 __4.4 IppDib와 IppImage 클래스 상호 변환 ____4.4.1 IppDib와 IppImage 클래스 변환 방법 ____4.4.2 IppDib와 IppImage 클래스의 상호 변환 구현 __4.5 IppDib 클래스 사용하기 ____4.5.1 IppDib 클래스를 사용하여 BMP 파일 화면 출력하기 5장 영상 처리 프로그램 틀 만들기 __5.1 ImageTool 프로그램 만들기 ____5.1.1 ImageTool 프로젝트 생성 ____5.1.2 영상 클래스 추가하기 ____5.1.3 BMP 파일 불러오기와 저장하기 ____5.1.4 화면 출력 기능 추가하기 ____5.1.5 프로그램 구동 시 빈 창 띄우지 않기 ____5.1.6 창 크기를 영상의 크기에 맞추기 ____5.1.7 영상의 바깥 영역에 빗금 그리기 __5.2 영상 새로 만들기 기능 구현 (대화 상자 만들기) ____5.2.1 새 대화 상자를 만드는 순서 ____5.2.2 새 대화 상자 추가 ____5.2.3 대화 상자 디자인(컨트롤 배치) ____5.2.4 대화 상자에 대한 클래스 추가 ____5.2.5 대화 상자 컨트롤에 대한 멤버 변수 추가 ____5.2.6 대화 상자 화면에 나타내기 __5.3 영상을 새 창으로 띄우기 (메뉴 및 메뉴 이벤트 처리기 추가) ____5.3.1 영상을 새 창으로 띄우기 위한 프로그램 구조 ____5.3.2 새 메뉴 항목 추가 ____5.3.3 메뉴 이벤트 처리기 추가 ____5.3.4 복사 및 붙여넣기 기능 구현 __5.4 영상을 확대하여 보기(툴바 추가) ____5.4.1 영상을 확대하여 출력하기 ____5.4.2 영상 확대하여 보기 메뉴 및 메뉴 이벤트 처리기 추가 ____5.4.3 툴바 버튼 추가 ____5.5.1 영상 정보 출력창 구성 ____5.5.2 출력창에 영상 정보 표시하기 ____5.5.3 상태바 구역 나누기 ____5.5.4 상태바에 영상 정보 표시 6장 화질 향상 기법 __6.1 영상 반전하기 ____6.1.1 IppImage 클래스를 이용한 픽셀 값 접근 방법 ____6.1.2 영상의 반전이란? ____6.1.3 영상 반전 구현 ____6.1.4 영상 반전 메뉴 만들기 ____6.1.5 매크로 함수를 이용한 코드 간소화 __6.2 밝기와 명암비 조절 ____6.2.1 밝기 조절 ____6.2.2 명암비 조절 ____6.2.3 밝기/명암비 조절 대화 상자 만들기 ____6.2.4 대화 상자 초기화 및 컨트롤 동작 제어 ____6.2.5 밝기/명암비 조절 메뉴 만들기 __6.3 감마 보정 ____6.3.1 지수 법칙 변환과 감마 보정 ____6.3.2 감마 보정 구현 ____6.3.3 실숫값을 입력 받는 감마 보정 대화 상자 만들기 ____6.3.4 대화 상자 초기화 및 컨트롤 동작 제어 ____6.3.5 감마 보정 메뉴 만들기 __6.4 히스토그램 분석 ____6.4.1 히스토그램이란? ____6.4.2 히스토그램 대화 상자 만들기 ____6.4.3 대화 상자에 히스토그램 그리기 ____6.4.4 히스토그램 보기 메뉴 만들기 __6.5 히스토그램 스트레칭과 균등화 ____6.5.1 히스토그램 스트레칭 ____6.5.2 히스토그램 균등화 ____6.5.3 히스토그램 스트레칭과 균등화 메뉴 만들기 7장 영상의 산술 및 논리 연산 __7.1 영상의 산술 연산 ____7.1.1 덧셈 연산 ____7.1.2 뺄셈 연산 ____7.1.3 평균 연산 ____7.1.4 차이 연산 __7.2 영상의 논리 연산 ____7.2.1 AND 연산 ____7.2.2 OR 연산 __7.3 산술 및 논리 연산 기능 구현 ____7.3.1 도큐먼트 리스트를 받아오는 방법 ____7.3.2 산술 및 논리 연산 대화 상자 만들기 ____7.3.3 대화 상자에 도큐먼트 선택 기능 추가하기 ____7.3.4 산술 및 논리 연산 메뉴 및 메뉴 이벤트 추가 __7.4 비트 평면 분할 ____7.4.1 비트 평면이란? ____7.4.2 비트 평면 분할 메뉴 및 메뉴 이벤트 처리기 추가 ____7.4.3 모든 창 닫기 기능 추가 8장 다양한 공간적 필터링 기법 __8.1 공간적 필터링 ____8.1.1 공간적 필터링의 기본 개념 ____8.1.2 공간적 필터링의 구현 방법 __8.2 영상 부드럽게 만들기 ____8.2.1 평균 값 필터 ____8.2.2 가중 평균 값 필터 ____8.2.3 가우시안 필터 ____8.2.4 가우시안 필터 대화 상자 만들기 ____8.2.5 영상 부드럽게 만들기 메뉴 만들기 __8.3 영상 날카롭게 만들기 ____8.3.1 언샤프 마스크 필터링 ____8.3.2 라플라시안을 이용한 언샤프 마스크 필터 구현 ____8.3.3 하이부스트 필터 ____8.3.4 영상 날카롭게 만들기 메뉴 만들기 __8.4 잡음 생성 ____8.4.1 가우시안 잡음 생성 ____8.4.2 소금&후추 잡음 생성 ____8.4.3 잡음 추가 대화 상자 만들기 ____8.4.4 잡음 추가 메뉴 만들기 __8.5 잡음 제거를 위한 비선형 필터 ____8.5.1 미디언 필터 ____8.5.2 미디언 필터 메뉴 만들기 ____8.5.3 비등방성 확산 필터 ____8.5.4 비등방성 확산 대화 상자 만들기 ____8.5.5 비등방성 확산 필터 메뉴 만들기 9장 영상의 기하학적 변환 __9.1 영상의 이동 변환 ____9.1.1 이동 변환이란? ____9.1.2 이동 변환의 구현 ____9.1.3 이동 변환 대화 상자 만들기 ____9.1.4 이동 변환 메뉴 만들기 __9.2 영상의 크기 변환 ____9.2.1 크기 변환과 보간법 ____9.2.2 최근방 이웃 보간법 ____9.2.3 양선형 보간법 ____9.2.4 3차 회선 보간법 ____9.2.5 크기 변환 대화 상자 만들기 ____9.2.6 크기 변환 대화 상자 초기화 및 컨트롤 동작 제어 ____9.2.7 크기 변환 메뉴 만들기 __9.3 영상의 회전 변환 ____9.3.1 회전 변환에 관한 이론적 설명 ____9.3.2 임의의 각도 회전 구현 ____9.3.3 특수 각도에 대한 회전 구현 ____9.3.4 회전 변환 대화 상자 만들기 ____9.3.5 회전 변환 메뉴 만들기 __9.4 영상의 대칭 변환 ____9.4.1 좌우 대칭 ____9.4.2 상하 대칭 ____9.4.3 좌우 대칭과 상하 대칭 메뉴 만들기 10장 주파수 공간에서의 영상 처리 __10.1 주파수 공간의 이해 ____10.1.1 1차원 데이터에 대한 이산 푸리에 변환 ____10.1.2 1차원 데이터에 대한 이산 푸리에 변환의 구현 __10.2 영상의 푸리에 변환 ____10.2.1 2차원 영상의 푸리에 변환 ____10.2.2 2차원 영상의 푸리에 변환 구현 ____10.2.3 개선된 2차원 영상의 푸리에 변환 ____10.2.4 DFT와 DFTRC 메뉴 만들기 __10.3 고속 푸리에 변환 ____10.3.1 고속 푸리에 변환의 이론적 배경 ____10.3.2 2차원 영상의 고속 푸리에 변환 ____10.3.3 FFT 메뉴 만들기 __10.4 주파수 공간에서의 필터링 ____10.4.1 이상적 저역 및 고역 통과 필터 ____10.4.2 가우시안 저역 및 고역 통과 필터 ____10.4.3 주파수 공간 필터링 대화 상자 만들기 ____10.4.4 주파수 공간 필터링 메뉴 만들기 11장 영상의 특징값 추출 방법 __11.1 마스크를 이용한 엣지 검출 ____11.1.1 엣지와 함수 그래디언트 ____11.1.2 마스크 기반 엣지 검출 ____11.1.3 마스크 기반 엣지 검출기 구현 ____11.1.4 마스크 기반 엣지 검출 메뉴 만들기 __11.2 캐니 엣지 검출기 ____11.2.1 캐니 엣지 검출 방법 ____11.2.2 캐니 엣지 검출기 구현 ____11.2.3 캐니 엣지 검출 대화상자 만들기 ____11.2.4 캐니 엣지 검출 메뉴 만들기 __11.3 허프 변환을 이용한 직선 검출 ____11.3.1 허프 변환을 이용한 직선 검출 방법 ____11.3.2 룩업 테이블을 이용한 허프 변환의 구현 ____11.3.3 허프 변환 메뉴 만들기 __11.4 해리스 코너 포인트 검출 방법 ____11.4.1 해리스 코너 검출 방법 ____11.4.2 해리스 코너 검출 구현 ____11.4.3 해리스 코너 검출 대화 상자 추가 ____11.4.4 해리스 코너 검출 메뉴 만들기 12장 컬러 영상 처리 __12.1 트루컬러 비트맵 다루기 ____12.1.1 IppImage 클래스에서 컬러 픽셀 참조 방법 ____12.1.2 트루컬러 영상의 반전 ____12.1.3 트루컬러 영상을 그레이스케일 영상으로 변환 ____12.1.4 그레이스케일로 변환 메뉴 만들기 __12.2 다양한 색 모델 ____12.2.1 색상 표현 방법 ____12.2.2 RGB 색 모델 ____12.2.3 HSI 색 모델 ____12.2.4 YUV 색 모델 __12.3 색상 평면 나누기와 합치기 ____12.3.1 색상 평면 나누기 ____12.3.2 색상 평면 나누기 메뉴 만들기 ____12.3.3 색상 평면 합치기 ____12.3.4 색상 평면 합치기 대화 상자 만들기 ____12.3.5 색상 평면 합치기 메뉴 만들기 __12.4 컬러 영상 처리 ____12.4.1 컬러 엣지 검출 ____12.4.2 컬러 엣지 검출 메뉴 만들기 ____12.4.3 컬러 영상의 히스토그램 균등화 13장 영상 분할 __13.1 이진화 기법 ____13.1.1 영상의 이진화 ____13.1.2 반복적 방법을 이용한 이진화 임계값 결정 방법 ____13.1.3 미리보기 기능이 있는 이진화 대화 상자 만들기 ____13.1.4 이진화 메뉴 만들기 __13.2 레이블링 ____13.2.1 고전적 레이블링 기법 ____13.2.2 고전적 레이블링 기법 구현 ____13.2.3 레이블링 메뉴 만들기 __13.3 외곽선 추적 ____13.3.1 외곽선 추적 기법 ____13.3.2 외곽선 추적 메뉴 만들기 14장 모폴로지 연산 __14.1 이진 영상의 모폴로지 연산 ____14.1.1 모폴로지를 위한 기본 정의 ____14.1.2 이진 영상의 침식과 팽창 ____14.1.3 이진 영상의 열기와 닫기 연산 ____14.1.4 이진 영상의 모폴로지 메뉴 만들기 ____14.1.5 모폴로지 기법을 응용한 외곽선 검출 __14.2 그레이스케일 영상의 모폴로지 연산 ____14.2.1 그레이스케일 영상의 침식과 팽창 연산 ____14.2.2 그레이스케일 영상의 열기와 닫기 연산 ____14.2.3 그레이스케일 영상의 모폴로지 메뉴 만들기 15장 모양 기술자 __15.1 외곽선 기반의 푸리에 기술자 ____15.1.1 푸리에 기술자 ____15.1.2 푸리에 기술자 대화 상자 만들기 ____15.1.3 푸리에 기술자 메뉴 만들기 __15.2 영역 기반의 불변 모멘트 ____15.2.1 불변 모멘트 ____15.2.2 불변 모멘트 메뉴 만들기 __15.3 저니키 모멘트 ____15.3.1 저니키 모멘트 ____15.3.2 저니키 모멘트의 구현 ____15.3.3 저니키 모멘트 메뉴 만들기 ____15.4.1 템플릿 매칭 __15.4 템플릿 매칭 ____15.4.2 템플릿 매칭 메뉴 만들기 16장 동영상 처리 __16.1 AVI 파일 처리하기 ____16.1.1 AVI 파일의 구조와 사용법 ____16.1.2 IppAvi 클래스 만들기 __16.2 AVI 플레이어 만들기 ____16.2.1 새 도큐먼트 템플릿 등록하기 ____16.2.2 IppAvi 클래스를 이용한 동영상 재생 ____16.2.3 동영상 재생을 위한 툴바 만들기 ____16.2.4 동영상 재생을 위한 코드 작성 __16.3 움직임 벡터 추정 ____16.3.1 블록 매칭 움직임 추정 방법 ____16.3.2 IppFullSearch 클래스 만들기 ____16.3.3 움직임 벡터 메뉴 만들기 부록 A JPEG 파일 지원 __A.1 JPEG 라이브러리 사용 ____A.1.1 JPEG 압축 원리 ____A.1.2 JPEG 라이브러리 빌드하기 ____A.1.3 JPEG 라이브러리 사용하기 부록 B OpenCV 사용하기 __B.1 OpenCV 개요와 설치 __B.2 OpenCV 영상 표현 방법 __B.3 ImageTool 프로젝트에서 OpenCV 사용하기 __B.4 OpenCV 사용 예제 찾아보기 실습 찾아보기 |
|
영상 처리 기술이 바야흐로 실생활에 스며드는 시대로 접어들고 있습니다. 카메라를 실행하면 사람이 활짝 웃을 때 자동으로 사진을 찍어주고, 스마트폰 카메라로 QR 코드를 가리키면 손쉽게 필요한 정보를 교환할 수 있습니다. 주차장에서는 자동차 번호판 인식 기술 덕분에 더 이상 사람이 주차권을 뽑을 필요가 없어졌고, 사람이 운전석에 앉지 않아도 자동으로 차선과 장애물을 인식하여 달리는 무인 주행 자동차가 시운전을 하고 있는 세상입니다. 영상 처리를 전공한 사람으로서 이처럼 빠른 기술 발전이 놀라우면서도 반갑게 느껴집니다.
이 책은 영상 처리 기초 이론과 Visual C++ 개발툴을 사용한 실제 구현 방법을 기술합니다. 영상 처리 알고리즘은 선형대수, 미적분, 기하학 같은 수학뿐만 아니라 신호 처리, 확률, 통계 같은 다양한 기반 지식을 필요로 합니다. 다양한 영상 처리 알고리즘을 초보자도 쉽게 이해하고 흥미를 가질 수 있도록 나름의 노력을 기울였습니다만, 다소 어렵게 느껴질 수 있는 내용도 있으리라고 생각합니다. 알고리즘을 구현한 소스 코드를 함께 제공하고 있으니 직접 프로그램으로 구현해보면서 이해의 폭을 넓힐 수 있기를 기대합니다. 이 책에서는 Microsoft Visual C++ 2015를 이용하여 제대로 된 하나의 영상 처리 프로그램을 만드는 방법에 대해 설명합니다. 최근의 IT 기술은 모바일 환경으로 빠르게 옮겨가고 있는 상황이지만 영상 처리 이론을 직접 구현하고 테스트해보기에는 Visual C++만큼 좋은 개발환경이 없다고 생각합니다. Visual C++는 코드 편집, 리소스 디자인, 디버깅 등에 있어서 다른 어떤 개발툴보다 빠르고 편리한 환경을 제공합니다. 게다가 최근에 무료로 사용할 수 있는 Visual C++ Community 에디션이 배포되고 있으므로 Visual C++를 사용하지 않을 이유가 전혀 없습니다. 이 책을 제대로 이해하기 위해서는 고등학교 이상의 수학 지식과 C/C++ 문법에 대한 이해를 가지고 있어야 합니다. 가끔은 대학 과정의 수학을 필요로 하는 경우도 있고, C++11 같은 최신 C++ 문법도 일부 사용하기도 하였습니다. 이 책에서 따로 설명하지 않은 기술은 다른 서적 또는 인터넷을 활용하여 공부하시기 바랍니다. 이 책은 C/C++에는 어느 정도 익숙하지만 Visual C++을 활용한 Windows 프로그래밍에는 아직 익숙하지 않은 분에게 가장 큰 도움이 되리라고 생각합니다. 이 책은 〈영상 처리 프로그래밍 by Visual C++〉 (한빛미디어, 2007)의 개정판입니다. 1판에서는 Visual C++ 2005를 이용하여 영상 처리 알고리즘을 구현했습니다만, 이미 십여 년이 지난 상태인지라 독자분들이 따라 하기 어려운 점이 많이 있었습니다. 이번에 개정판을 집필하면서 신경을 쓴 부분은 최신 Visual C++ 개발 환경에 맞게 코드를 변경하고, 최신 C++ 문법에 맞게 코드를 개선하는 것이었습니다. 특히 영상을 표현하는 클래스를 화면 출력과 영상 처리를 위한 두 개의 클래스로 분할함으로써 보다 직관적인 코드 해석이 가능하도록 하였습니다. 이를 위해 집필 기간이 상당히 길어졌습니다만, 독자분들이 소스 코드를 좀 더 쉽게 이해할 수 있기를 기대합니다. 끝으로 대학원 시절 영상 처리 연구에 매진할 수 있도록 지도해주신 한양대학교 김회율 교수님께 깊은 감사의 인사를 전합니다. 이 책을 기획하고 많은 피드백을 전달해준 서형철 팀장님과 이원휘 대리님께도 감사의 인사를 드립니다. 이름을 다 거론할 수는 없지만 집필을 하고 있는 저에게 신경을 써주고 격려를 해주신 주변 동료, 선후배님들께도 감사의 말씀을 전합니다. 마지막으로 항상 저를 믿어주시는 부모님과 책을 쓰느라 집안일과 육아를 도맡아 고생한 아내 건하에게 감사하다는 인사를 전합니다. 그리고 주말에도 책 쓰느라 많이 놀아주지 못해 섭섭해한 채원이와 시원이에게 사랑한다는 말을 전합니다. ---저자 서문에서 |
|
이 책의 대상층
〈Visual C++ 영상 처리 프로그래밍〉을 이해하려면 고등학교 수학과 C++ 문법에 대한 기초 지식은 있어야 한다. C++에는 어느 정도 익숙하지만, Visual C++를 활용한 Windows 프로그래밍에는 익숙하지 않아도 실습을 따라할 수 있게 단계별로 설명했다. 이 책의 구성 영상 처리 기초 이론과 Visual C++ 개발툴을 사용하여 실제 구현하는 방법을 다음과 같이 네 부분으로 구성했다. 다양한 영상 처리 알고리즘을 초보자도 쉽게 이해할 수 있는 용어로 설명하고, 알고리즘을 구현한 예제 소스를 함께 제공한다. -영상 처리 프로그래밍의 기초- 장 영상 처리의 배경, 활용 분야 2장 Visual C++ 프로그래밍의 3장 BMP 파일의 이해 4장 CDib 클래스 만들기 5장 영상 처리 프로그램 틀 -영상 처리 알고리즘의 이해와 구현- 6장 화질 향상 기법 7장 영상의 산술 및 논리 연산 8장 다양한 공간적 필터링 기법 9장 영상의 기하학적 변환 10장 주파수 공간에서의 영상 처리 11장 영상의 특정값 추출 12장 컬러 영상 처리 13장 영상 분할 14장 모폴로지 연산 15장 모양 기술자 16장 동영상 처리 -영상 처리 라이브러리 활용- 부록A JPEG 라이브러리 사용 부록B OpenCV 사용하기 이 책의 예제 소스 마이크로소프트 Visual C++ 2015를 이용하여 제대로 된 영상 처리 프로그램을 만들어본다. 최신 Visual C++ 개발 환경에 맞게, 최신 C++ 문법에 맞게 코드를 구현했다. 또한, 영상을 표현하는 클래스를 화면 출력과 영상 처리를 위한 두 클래스로 분할하여 보다 직관적으로 코드를 해석할 수 있다. 이 책의 대상 독자 핵심 독자_ 학부 3학년 수준의 영상 처리 프로그래밍 수업을 듣는 대학생 영상 처리 프로그래밍의 기초가 없는 C/C++ 대학원생 및 개발자 확산 독자_ 이미지 분석, CCTV, 사물 인식, 얼굴 |