PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

이미지 워핑과 모핑

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

<B9CCB5F0BEEE20C1A4BAB8C3B3B8AE2E687770>

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

윈도우시스템프로그래밍

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

슬라이드 1

히스토그램구하기 사전준비 : 히스토그램을저장할메모리가필요함 필요한메모리개수 à 전체영상의픽셀은그값이 0 ~ 255이므로 256 개의메모리필요함 영상을구성하는픽셀의개수는매우크므로메모리형식은 unsigned long으로해야함 ( unsigned 란 +/- 를고려하지않는다는

PowerPoint 프레젠테이션

LIDAR와 영상 Data Fusion에 의한 건물 자동추출

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

설계란 무엇인가?

윈도우시스템프로그래밍

쉽게 풀어쓴 C 프로그래밍

OCW_C언어 기초

歯Lecture2.PDF

PowerPoint 프레젠테이션

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - chap11-포인터의활용.pptx

PowerPoint 프레젠테이션

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속

Microsoft PowerPoint - chap06-1Array.ppt

슬라이드 1

Microsoft PowerPoint - LA_ch6_1 [호환 모드]

Microsoft PowerPoint - chap06-2pointer.ppt

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - ch07 - 포인터 pm0415

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

#편집인협회보381호_0422

adfasdfasfdasfasfadf

<B4EBC7D0BCF6C7D02DBBEFB0A2C7D4BCF62E687770>

Microsoft PowerPoint - (OCW)조선해양공학계획 [03-2],[04-1] Restoring force.ppt [호환 모드]

chap 5: Trees

8장.ppt

슬라이드 1

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - chap04-연산자.pptx

2002년 2학기 자료구조

Microsoft PowerPoint 다변수 방정식과 함수(1).ppt

Microsoft Word - cg07-midterm.doc

<BCF6B8AEBFB5BFAA28B0A1C7FC295FC2A6BCF62E687770>

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - Java7.pptx

chap x: G입력

2_안드로이드UI

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - C++ 5 .pptx

문제지 제시문 2 보이지 않는 영역에 대한 정보를 얻기 위하여 관측된 다른 정보를 분석하여 역으로 미 관측 영역 에 대한 정보를 얻을 수 있다. 가령 주어진 영역에 장애물이 있는 경우 한 끝 점에서 출발하여 다른 끝 점에 도달하는 최단 경로의 개수를 분석하여 장애물의

03_queue

<4D F736F F F696E74202D20C1A63134B0AD202D20BBE7BFF8BCF6BFCD20C8B8C0FC>

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

untitled

실험 5

PowerPoint Presentation

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

01

11장 포인터

K&R2 Reference Manual 번역본

Frama-C/JESSIS 사용법 소개

슬라이드 1

슬라이드 1

C 프로그래밊 개요

<4D F736F F D20BECBB1E220BDACBFEE20BAA4C5CD2C20C1C2C7A5B0E82C20C1C2C7A5BAAFC8AFC7E0B7C4>

게임 기획서 표준양식 연구보고서

Microsoft PowerPoint - es-arduino-lecture-03

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

그래픽 프로그래밍

중간고사

슬라이드 1

일반각과호도법 l 삼각함수와미분 1. 일반각 시초선 OX 로부터원점 O 를중심으로 만큼회전이동한위치에동경 OP 가있을때, XOP 의크기를나타내는각들을 ( 은정수 ) 로나타내고 OP 의일반각이라한다. 2. 라디안 rad 반지름과같은길이의호에대한중심각의 크기를 라디안이라한

PowerPoint Presentation

Microsoft PowerPoint - ch02-1.ppt

컴파일러

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>


PowerPoint Presentation

Studuino소프트웨어 설치

영상 처리 프로그래밍 By Visual C++

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

tiawPlot ac 사용방법

PowerPoint 프레젠테이션

PowerPoint Template

설계란 무엇인가?

Transcription:

이동, 대칭, 회전, 워핑 09 장기하학적변환 영상의이동기하학적변환 영상의대칭기하학적변환 영상의회전기하학적변환 영상의워핑기하학적변환 한빛미디어 ( 주 )

학습목표 9 장. 이동, 대칭, 회전, 워핑기하학적변환 이동의기하학적변환을공부한다. 대칭기하학적변환을공부한다. 회전기하학적변환의원리를학습한다. 회전기하학적변환에고려할사항을소개한다. 워핑을이해하고수행방법과응용분야를소개한다. 2

Section 01 영상의이동기하학적변환이동 (Translation) 기하학변환 디지털영상을평면의한위치에서원하는다른위치로옮기는연산디지털영상의크기나형태등이바뀌지않아원본영상과결과같음. 3

[ 실습하기 9-1] 이동기하학변환프로그램 1 ResourceView 창에서 [Menu]-[IDR_IMAGETYPE] 더블클릭 메뉴추가 2 [MFC ClassWizard] 대화상자를이용해추가된메뉴에서영상이동을실행하는함수추가 3 Doc 클래스에다음프로그램추가 4

[ 실습하기 9-1] 이동기하학변환프로그램 void CImageProcessingDoc::OnTranslation() { int i,j; int h_pos = 30, w_pos = 130; double **temparra; m_re_height = m_height; m_re_width = m_width; m_re_size = m_re_height * m_re_width; m_outputimage = new unsigned char [m_re_size]; m_tempimage = Image2DMem(m_height, m_width); temparra = Image2DMem(m_Re_height, m_re_width); for(i=0 ; i<m_height ; i++){ for(j=0 ; j<m_width ; j++){ m_tempimage[i][j] = (double)m_inputimage[i*m_width + j]; 5

[ 실습하기 9-1] 이동기하학변환프로그램 for(i=0 ; i<m_height - h_pos ; i++){ for(j=0 ; j<m_width - w_pos ; j++){ temparra[i + h_pos][j + w_pos] = m_tempimage[i][j]; // 입력영상을 h_pos, w_pos만큼이동 for(i=0 ; i< m_re_height ; i++){ for(j=0 ; j< m_re_width ; j++){ m_outputimage[i* m_re_width + j] = (unsigned char)temparra[i][j]; delete [] m_tempimage; delete [] temparra; 6

[ 실습하기 9-1] 이동기하학변환프로그램 4 View 클래스에다음프로그램추가 void CImageProcessingView::OnTranslation() { CImageProcessingDoc* pdoc = GetDocument(); ASSERT_VALID(pDoc); pdoc->ontranslation(); Invalidate(TRUE); 7

5 프로그램실행결과영상 [ 실습하기 9-1] 이동기하학변환프로그램 결과영상이오른쪽아래로이동함. 8

Section 02 영상의대칭기하학적변환대칭 (Mirroring) 기하학변환 영상을가로축이나세로축으로단순히뒤집는것세로축을중심으로뒤집는것 좌우대칭가로축을중심으로뒤집는것 상하대칭 9

좌우대칭 좌우대칭 영상을세로축을중심으로뒤집는것 즉, 영상내의한수직선을중심으로왼쪽화소와오른쪽화소를서로교환하는것 x ' ' ( x x0 x0 ) 0 10

[ 실습하기 9-2] 좌우대칭기하학변환프로그램 1 ResourceView 창에서 [Menu]-[IDR_IMAGETYPE] 더블클릭 메뉴추가 2 [MFC ClassWizard] 대화상자를이용해추가된메뉴에서영상좌우대칭을실행하는함수추가 3 Doc 클래스에다음프로그램추가 11

[ 실습하기 9-2] 좌우대칭기하학변환프로그램 void CImageProcessingDoc::OnMirrorHor() { int i,j; m_re_height = m_height; m_re_width = m_width; m_re_size = m_re_height * m_re_width; m_outputimage = new unsigned char [m_re_size]; for(i=0 ; i<m_height ; i++){ for(j=0 ; j<m_width ; j++){ m_outputimage[i*m_width + m_width - j - 1] = m_inputimage[i*m_width + j]; // 입력영상의배열값을출력영상을위한 // 배열의수평축뒷자리부터저장 12

[ 실습하기 9-2] 좌우대칭기하학변환프로그램 4 View 클래스에다음프로그램추가 void CImageProcessingView::OnMirrorHor() { CImageProcessingDoc* pdoc = GetDocument(); ASSERT_VALID(pDoc); pdoc->onmirrorhor(); Invalidate(TRUE); 13

[ 실습하기 9-2] 좌우대칭기하학변환프로그램 5 프로그램실행결과영상 거울에비치는효과와같다고해서좌우대칭을거울영상이라고함. (a) 입력영상 (b) 좌우대칭영상 14

15 상하대칭상하대칭영상을가로축을중심으로뒤집는것즉, 영상내의한수평선을중심으로위쪽의화소와아래쪽의화소를교환하는것 0 0 0 ) ( ' ' x x

[ 실습하기 9-3] 상하대칭기하학변환프로그램 1 ResourceView 창에서 [Menu]-[IDR_IMAGETYPE] 더블클릭 메뉴추가 2 [MFC ClassWizard] 대화상자를이용해추가된메뉴에서영상상하대칭을실행하는함수추가 3 Doc 클래스에다음프로그램추가 16

[ 실습하기 9-3] 상하대칭기하학변환프로그램 void CImageProcessingDoc::OnMirrorVer() { int i,j; m_re_height = m_height; m_re_width = m_width; m_re_size = m_re_height * m_re_width; m_outputimage = new unsigned char [m_re_size]; for(i=0 ; i<m_height ; i++){ for(j=0 ; j<m_width ; j++){ m_outputimage[(m_height - i -1)*m_width + j] = m_inputimage[i*m_width + j]; // 입력영상의값을출력영상을위한배열의수직축뒷자리부터저장 17

[ 실습하기 9-3] 상하대칭기하학변환프로그램 4 View 클래스에다음프로그램추가 void CImageProcessingView::OnMirrorVer() { CImageProcessingDoc* pdoc = GetDocument(); ASSERT_VALID(pDoc); pdoc->onmirrorver(); Invalidate(TRUE); 18

[ 실습하기 9-3] 상하대칭기하학변환프로그램 5 프로그램실행결과영상 입력영상이상하로서로뒤집힘. 19

회전 (Rotation) 기하학변환 Section 03 영상의회전기하학적변환 영상을임의의방향으로특정한각도 θ 만큼회전시키는것 x dest dest cos sin sin x cos source source 20

영상의회전기하학변환 ( 계속 ) 21

홀문제를해결하는방안 먼저회전기하학변환을역방향사상으로수행 영상의회전방향은원하는목적에따라다름 회전의방향을반시계방향으로설정한예 전방향사상에서회전방향은반시계방향, 역방향사상에서회전방향은시계방향이됨 22

회전결과보이는부분이줄어드는것을방지하는방법 회전결과 : 화소의좌표값이음 (-) 실제화소좌표는음의값일수없으므로해당부분은잘려안보이게됨. 23

회전결과보이는부분이줄어드는것을방지하는방법 ( 계속 ) 회전하려는영상의중심점이 (Cx, C) 이고, 이중심점을기준으로회전 하는전방향사상공식 x dest dest cos sin sin x cos source source C C x C C x 더효율적으로회전하기위해역방향사상을고려한공식 x source source cos sin sin x cos dest dest C C x C C x 24

올바른회전방향이되게하는해결방안 영상화소에서좌표를표시할때는왼쪽위가원점 ( 수학좌표에서는왼 쪽아래가원점 ). 25

올바르게회전하도록하려면화면좌표를수학적좌표로변환하여회전한뒤다시화면좌표로변환해야함. 이과정을반영한전방향사상공식 H 는영상의높이에서 1 을뺀값 H x dest dest 올바른회전방향이되게하는해결방안 ( 계속 ) imageheight ( x ( x source source C C x x 1 )cos (( H )sin ( H (( H source ) C source )sin C ) C x )cos ) C 역방향사상공식 x source source ( x dest ( x dest C x C )cos (( H x )sin ( H dest (( H ) C )sin C dest ) C x )cos ) C 26

올바른회전방향이되게하는해결방안 ( 계속 ) 27

출력영상의크기를고려한회전변환 회전기하학변환에서입력영상과출력영상의크기를같게하면출력영상에서잘려나가는부분이발생 회전의기준을원점에서영상의중심점으로변경하면이런문제를어느정도해결할수는있지만그래도잘려나가는부분발생 출력영상에서잘려나가는부분이없게하려면출력영상의크기를미리계산해야함. 출력영상의크기를구하는공식 ( 회전각도로계산 ) H, W : 원본영상의높이와너비 H, W : 회전한출력영상의높이와너비 W ' H' H cos(90 ) cos H cos W cos(90 ) 28

출력영상의크기를고려한회전변환 ( 계속 ) 29

[ 실습하기 9-4] 영상의회전기하학변환프로그램 1 ResourceView 창에서 [Menu]-[IDR_IMAGETYPE] 더블클릭 메뉴추가 2 [MFC ClassWizard] 대화상자를이용해추가된메뉴에서영상회전을실행하는함수추가 3 Doc 클래스에다음프로그램추가 30

[ 실습하기 9-4] 영상의회전기하학변환프로그램 void CImageProcessingDoc::OnRotation() { int i, j, CenterH, CenterW, newh, neww, degree = 45; // degree = 회전할각도 double Radian, PI, **temparra, Value; m_re_height = m_height; // 회전된영상의높이 m_re_width = m_width; // 회전된영상의너비 m_re_size = m_re_height * m_re_width; m_outputimage = new unsigned char [m_re_size]; PI = 3.14159265358979; // 회전각을위한 PI 값 Radian = (double)degree*pi / 180.0; // degree 값을 radian 으로변경 CenterH = m_height / 2; // 영상의중심좌표 CenterW = m_width / 2; // 영상의중심좌표 m_tempimage = Image2DMem(m_height, m_width); temparra = Image2DMem(m_Re_height, m_re_width); for(i=0 ; i<m_height ; i++){ for(j=0 ; j<m_width ; j++){ m_tempimage[i][j] = (double)m_inputimage[i*m_width + j]; 31

[ 실습하기 9-4] 영상의회전기하학변환프로그램 for(i=0 ; i<m_height ; i++){ for(j=0 ; j<m_width ; j++){ // 회전변환행렬을이용하여회전하게될좌표값계산 newh = (int)((i-centerh)*cos(radian) - (j-centerw)*sin(radian) + CenterH); neww = (int)((i-centerh)*sin(radian) + (j-centerw)*sin(radian) + CenterW); if(newh < 0 newh >= m_height){ // 회전된좌표가출력영상을위한배열값을넘어갈때 Value = 0; else if(neww < 0 neww >= m_width){ else{ // 회전된좌표가출력영상을위한배열값을넘어갈때 Value = 0; Value = m_tempimage[newh][neww]; temparra[i][j] = Value; 32

[ 실습하기 9-4] 영상의회전기하학변환프로그램 for(i=0 ; i< m_re_height ; i++){ for(j=0 ; j< m_re_width ; j++){ m_outputimage[i* m_re_width + j] = (unsigned char)temparra[i][j]; delete [] m_tempimage; delete [] temparra; 33

[ 실습하기 9-4] 영상의회전기하학변환프로그램 4 View 클래스에다음프로그램추가 void CImageProcessingView::OnRotation() { CImageProcessingDoc* pdoc = GetDocument(); ASSERT_VALID(pDoc); pdoc->onrotation(); Invalidate(TRUE); 34

[ 실습하기 9-4] 영상의회전기하학변환프로그램 5 프로그램실행결과영상 출력영상의크기를계산해서회전한뒤얻은출력영상으로잘려나간부분이없음. 35

워핑 (Warping) Section 04 영상의워핑기하학적변환 비선형이나왜곡변환을수행 고무시트변환 (Rubber Sheet Transform) 이라고도함. 화소별로이동정도를달리해고무판위에그린영상을임의로구부린듯한효과를냄. 매시워핑 (Mesh Warping) 입력영상을작은삼각형이나사각형격자 (Mesh) 로나눠서변형시켜목적하는결과영상을얻음. 격자의모양인다각형의기하학적변형수행 36

영상의워핑기하학적변환 ( 계속 ) 37

모핑기술 변형 (Metamorphosis) 에서유래된모핑 (Morphing) 은한영상을서서히변화시켜다른영상으로변환하는기술 원본영상과최종영상은물론, 최종영상으로매끄럽게변할수있도록많은중간단계의영상도필요함. 38

Section 04 영상의워핑기하학적변환 중간단계의영상을생성하려면워핑과합병의두단계를거쳐야함. 영상의워핑기술 : 두영상의중요한특징을좀더가깝게정렬하는데사용 합병 : 영상이순차적으로자연스럽게융합되도록하는크로스디졸브 (Cross-dissolve) 로처리됨. 39

Section 04 영상의워핑기하학적변환 워핑과합병처리로모핑을수행하는과정 전이모핑 : 초기영상과최종영상이달라전혀다른내용으로변하는것 왜곡모핑 : 같은내용에서일부분이변하는것, 워핑의개념과비슷하나중간영상을생성하여변하는과정을보여준다는차이가있음. 40

워핑 (Warping) 비선형이나왜곡변환수행 요약 화소별로이동정도를달리해고무판위에그린영상을임의로구부린듯한효과를냄. 매시워핑 (Mesh Warping) 입력영상을작은삼각형이나사각형격자 (Mesh) 로나눠서변형시켜목적하는결과영상을얻음. 격자의모양인다각형의기하학적변형을수행 모핑 (Morphing) 변형 (Metamorphosis) 에서유래 영상을서서히변화시켜다른영상으로변환하는기술 원본영상과최종영상은물론, 최종영상으로매끄럽게변할수있도록많은중간단계의영상도필요함. 41

요약 모핑에서중간단계의영상을생성하려면워핑과합병의두단계를거쳐야함. 워핑기술 : 두영상의중요한특징을좀더가깝게정렬하는데사용 합병 : 영상이순차적으로자연스럽게융합되도록하는크로스디졸브 (Crossdissolve) 로처리됨. 전이모핑 초기영상과최종영상이달라전혀다른내용으로변하는것 왜곡모핑 같은내용에서일부분이변하는것 워핑의개념과비슷하나중간영상을생성하여변하는과정을보여준다는차이가있음. 42

Thank ou