2015-01-08_윈도우 프로그래밍 프로그램 만들기_신진솔

Download Report

Transcript 2015-01-08_윈도우 프로그래밍 프로그램 만들기_신진솔

2014.12.20(토)
1주차 영상처리 프로그래밍
영상처리 시작하기 &
영상처리 프로그램 만들기
중원대학교 의료공학과 신 진
01. 영상처리 시작하기
디지털 영상처리란

장비를 이용하여 획득한 영상을 원하는 목적에 따라 변형,
가공하거나 영상으로부터 필요한 정보를 얻어내는 작업.
Ex) Photoshop, Photowonder 등
영상처리 분류
영상변환
영상분석
영상인식
획득 정보의 수준
디지털 영상처리 분류
영상의 번짐 제거,
HDR
영상변
영상의 밝기
환
를 수정하는
기법
영상의 경계선 추출,
영상분석
특징 점 추출
(영상인식을 위한 전처
기계학습
영상인식
주어진 데이터
분석, 정리
리 과정.)
 영상변환
•
•
영상의 품질은 픽셀의 잡음이나 해상도와 관련.
영상의 특성은 밝기와 명암, 선명도와 관련.
 영상분석
•
입력된 영상 내부의 고유한 정보 추출.
 영상 인식
•
•
영상 고유의 수치화 될 수 있는 특성 값 보다는 영상에 담긴 피사체인 풍경이나 사물에
대한 정보가
중요한 대상이 됨.
영상의 피사체를 식별하거나 범주를 분류하는 작업
영상처리 응용 분야
•
영상편집 분야
•
방송 및 영화 분야
•
인공지능 로봇
- 무인 자동차 시스템 위치 인식, 도로 환경 분석 목적
•
공장 자동화
•
의료 분야
- 초기 영상에서 원하는 부분이 잘 드러나도록 보정하고 가공하는 영상 변환 작업
•
보안 및 감시 시스템
02. 영상처리 프로그램 만들기
Visual Studio 프로그램 유형

Win32 콘솔 응용 프로그램
• 명령어를 입력 할 수 있는 콘솔 화면상에서 실행되는 프로그램.

MFC 응용 프로그램
• 이벤트 처리 기반의 프로그램 형태.
• 마우스 클릭과 같은 사용자의 입력에 따라 코드 수행.
 단일 문서 인터페이스 (Single Document Interface)
 다중 문서 인터페이스 (Multiple Document Interface)
→ 프레임, 뷰, 도큐먼트 클래스로 된 세가지 요소를 가지는 형태의 프로그램.
 대화 상자 기반 (Dialog based)
→ 프레임, 뷰, 도큐먼트 클래스 없이 메시지를 발생시킬 수 있는 컨트롤이 배치된
대화상자 프로그램.
프로젝트 생성하기

프로젝트 생성하기
[ 새 프로젝트 ] → [ MFC 응용프로그램 ] → [응용 프로그램 종류: 대화상자 기반]
생성된 프로젝트는 vcxproj에 저장되며, 저장된 프로젝트를 불러올 때는 프로젝트의 상위 개념인
솔루션 정보가 들어있는 확장자 sln파일을 열면 된다.
프로젝트 생성하기

프로젝트 설정하기
1. 구성과 플랫폼
 [ 빌드 ] → [ 구성 관리자 ] OR [ 보기 ] → [ 도구 모음 ] → [ 표준 ]
: [ Debug ] OR [ Release ] – Debugging의 유/무 선택
Release 모드는 디버깅은 사용할 수 없으나 프로그램의 정상적 실행 여부를 판단하기엔 효과
적.
 64비트 프로그램 만들기
[ 새로 만들기 ] → [새 솔루션 플랫폼 : x64선택]
프로젝트 생성하기
2. 문자 집합
문자 집합: 프로그램 내에서 입출력과 파일 이름 등에 사용하는 문자들을 미리 정의하여 모아 놓은 것.
 ASCII 코드는 1바이트 크기로 256개의 문자를 표현할 수 있으며, 이를 단일 바이트 문자 집합 (SBCS)라고
한다.
 한글이나 한자를 표현 할 수 있는 2바이트 크기의 이중 바이트 문자 집합(DBCS)라고 한다.
 이 둘을 합친 다중 바이트 문자 집합(MBCS)이 사용 된다.
[프로젝트] -> [(프로젝트 이름) 속성] -> 구성속성 -> 문자 집합
영상편집기 프로그램 만들기
다음과 같은 기능을 수행하는 프로그램을 만든다.

파일로부터 영상읽기

영상의 픽셀 값을 조작하여 반전영상 만들기

두 영상을 합쳐서 합성 영상 만들기

입력 및 결과 영상을 화면에 출력하기

결과 영상을 파일로 저장하기
대화상자 기반 응용 프로그램 파일 이해하기.

(파일명).h, (파일명).cpp : 프로그램의 가장 바깥 틀에 해당. 특별한 경우가 아니면 프로젝트를 만들 때 생긴
파일을 별도로 수정 할 일은 없다

(파일명)Dlg.h/(파일명)Dlg.cpp : 대화상자 기반 프로그램의 핵심이 되는 파일. 대화상자의 GUI화면을 담는 리
소스 파일들과 연동하여, 대화상자를 통한 이벤트가 발생하였을 때 이를 멤버 함수들로 하여금 처리 하도록
함. 이들 파일에 각 이벤트의 처리 함수를 작성하는 것이 핵심 구현 사항.

Stdafx.h, stdafx.cpp : 미리 컴파일된 헤더를 위한 파일.

Resource.h, (파일명).rc: 대화상자의 GUI등 프로젝트의 리소스에 대한 정의가 담겨있음.
프로젝트 생성하기
영상의 파일 입출력 및 화면 출력 기능은 외부 소스를
추가 하여 사용
1.
2.
외부소스를 해당 프로젝트 폴더에 복사한다.
(프로젝트 이름) -> 오른쪽 클릭 -> 추가 -> 기존 항
목, 외부 소스파일 추가
3.
(프로젝트 이름) -> 추가 -> 새 필터
4.
생성된 새 필터에 불러온 외부 소스를 추가하여 정
리 할 수 있다.
추가한 소스파일을 사용하기 위해서는 추가된 소스 파
일 중 가장 상위에 해당하는 파일의 헤더를 추가해주
면 된다.
이벤트 처리 함수 구현하기
사용자가 명령을 내릴 때 누를 수 있는 단추와 같은 요소를 컨트롤 이라고 한다.
이러한 요소는 [보기] -> 도구상자로 불러 올 수 있다.
이러한 편집은 리소스뷰 -> Dialog -> (파일명)DIALOG 에서 편집할 수 있다.
이벤트 처리 함수 구현하기
도구상자의 두 번째에 위치하는 버튼을 클릭한 후 창에 크기에 맞게 생성해 준다.
이후 이 버튼의 이름을 설정해 준다.
1. 버튼에서 우클릭
2. 속성
3. ID항목에 각각 IDC_BOTTON_INVERSION, IDC_BUTTON_BLENDING를 입력해 준다.
4. CAPTION 항목에 각각 영상 반전과 영상 합성을 입력해 준다.
이벤트 처리 함수 구현하기
생성된 버튼 우클릭 -> [이벤트 처리기 추가] -> 클래스 목록 선택
OnBnClickedButtonInversion()
- 영상반전함수
1. 파일 대화상자로 영상 읽기
2. 입력 영상 화면 추력
3. 영상 규격 정보 획득
4. 결과 영상 생성
5. 입력 영상 픽셀을 반전하여 겨라 영상에 대입
6. 결과 영상 저장 및 화면 출력
이벤트 처리 함수 구현하기
OnBnClickedButtonBlending () 영상합성함수 구현하기
1. 파일 대화상자로 영상 두 장 읽기
2. 입력 영상 화면 추력
3. 영상 규격 정보 획득
4. 결과 영상 생성
5. 두 입력 영상 픽셀의 평균을 결과 영상에 대입
6. 결과 영상 저장 및 화면 출력
실행결과
실행결과
영상처리 프로그래밍 학업계획
일자
1주
차
2주
차
3주
차
4주
차
5주
차
6주
차
7주
차
1월 5일 ~ 11일
범위
1P ~ 120P
1월 12일 ~ 18일
121P ~ 232P
1월 19일 ~ 25일
233P ~ 320P
1월 26일 ~ 2월 1일
321P ~ 406p
2월 2일 ~ 8일
407P ~ 471P
2월 9일 ~ 15일
481P ~ 536P
2월 16일 ~ 22일
537P ~ 614P
내용
영상 데이터 클래스 구현
영상 입출력 프로그램 구성
비고
영상처리 시작하기
픽셀단위영상처리
영상의 광학적 변환
영상의 기하학적 변환
컬러영상처리
영상처리 알고리즘
주파수 영역 영상처리
영상분할
모폴로지 처리
영상의 특징 값 추출
영상정합
카메라 기하학
VFW를 이용한 동영상처리
Open CV 사용하기
라이브러리를 활용한
영상처리