PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

통신이론 2 장주파수해석 성공회대학교 정보통신공학과 1

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

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

Microsoft PowerPoint - C++ 5 .pptx

<B9CCB5F0BEEE20C1A4BAB8C3B3B8AE2E687770>

PowerPoint Presentation

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-2pointer.ppt

제 장의구성. 통신의개요. 전파의특성.3 변조의목적.4 주파수대역과채널.5 통신신호의해석

설계란 무엇인가?

슬라이드 1

Microsoft PowerPoint - additional01.ppt [호환 모드]

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

이미지 워핑과 모핑

설계란 무엇인가?

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

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

% Rectangular Value 입력 t = -50 : 1 : 50; % 시간영역 for i = 1 : 101 if abs ( t ( i ) ) < 10 x ( i ) = 1; else x ( i ) = 0; % 화면을 2 열 1 행으로나눈후 % 2 열 1 행에 R

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

adfasdfasfdasfasfadf

그룹웨어와 XXXXX 제목 예제

11장 포인터

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

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

슬라이드 1

PowerPoint 프레젠테이션

OCW_C언어 기초

PowerPoint 프레젠테이션

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

실험 5

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

Microsoft PowerPoint - chap03-변수와데이터형.pptx

중간고사

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint 프레젠테이션

Microsoft PowerPoint - Java7.pptx

PowerPoint 프레젠테이션

슬라이드 1

Data Structure

윈도우시스템프로그래밍

실험 5

Microsoft PowerPoint - chap10-함수의활용.pptx

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

Microsoft Word - LAB_OPamp_Application.doc

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

KNK_C_05_Pointers_Arrays_structures_summary_v02

윈도우시스템프로그래밍

chap x: G입력

chap 5: Trees

<B4EBC7D0BCF6C7D02DBBEFB0A2C7D4BCF62E687770>

윤성우의 열혈 TCP/IP 소켓 프로그래밍

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

OCW_C언어 기초

C++ Programming

PowerPoint 프레젠테이션

PowerPoint Template

untitled

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Microsoft PowerPoint - chap06-5 [호환 모드]

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

TEST BANK & SOLUTION

쉽게 풀어쓴 C 프로그래밍

(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

Microsoft PowerPoint - 제11장 포인터

슬라이드 1

03_queue

Microsoft PowerPoint - Ch15-1

소성해석

Microsoft PowerPoint - ch12ysk2015x [호환 모드]

3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로

슬라이드 1

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

PowerPoint Template

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

PowerPoint Presentation

슬라이드 1

Microsoft PowerPoint - chap-11.pptx

PowerPoint 프레젠테이션

Chapter 4. LISTS

C 프로그래밊 개요

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

PowerPoint 프레젠테이션

C# Programming Guide - Types

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

C 언어 프로그래밊 과제 풀이

PowerPoint Presentation

Microsoft PowerPoint - 06-Pointer and Memory.pptx

슬라이드 1

Transcription:

13 장영상변환 ㅎㅎ 영상변환의개요 주파수변환 주파수영역에서의필터링 웨이브렛변환 한빛미디어 주 )

13 장. 영상변환 학습목표 주파수의개념을이해한다. 푸리에변환과고속푸리에변환을소개한다. 이산코사인변환의특징을이해한다. 주파수영역에서필터링의특징을공부한다. 웨이브렛변환의개념을소개한다. 2

Section 01 영상변환의개요 주파수영상에서화소밝기의변화정도를나타내는것은화소값의변화율주파수는밝기가얼마나빨리변화하는가에따라서고주파와저주파로분류 3

영상변환의개요 계속 ) 영상을공간주파수영역으로변환하면저주파와고주파성분으로분리됨 높은주파수성분을낮추면섬세한부분이사라지고, 부드럽고엉성한영상으로변함. 낮은주파수성분을낮추면엉성한부분이사라지면서섬세한부분에해당하는경계가강조됨. 4

주파수변환 Section 02 주파수변환 공간영역형태의영상을주파수영역형태의기본주파수로분리하는것 정규적인변환이성립하려면역변환도성립되어야함 주파수변환에는주파수형태의영상을공간형식으로변환하는역주파수변환이반드시있어야함. 5

푸리에변환 Fourier Transorm) 푸리에변환 Fourier Transorm) 주파수영역으로변환하는가장일반적인방법주기성이있는신호는연속된정현파의조합으로표현 신호를구성하는세가지요소주기 T: 반복되는시간진폭 A: 파형의크기. 0 에서양의최대높이까지의거리위상 Φ : 파형의시작이얼만큼지연되고선행되었는지를나타내는시간차이 6

푸리에변환 변환 ) 7

8 푸리에변환 계속 ) 연속푸리에변환연속적인시간영역의신호를주파수영역으로변환하는것. 2 차원연속푸리에변환공식 dt e t g G t g j t 2 ) ) ) { dxdy e y x g G y x g y x j y x y x ) 2 ), ), ), { y x y x j y x y x d d e G y x g G y x ) 2 1 ), ), ), { d e G t g G j t 2 1 ) ) ) {

9 푸리에변환 계속 ) 이산푸리에변환디지털영상은아날로그신호가아니고디지털데이터이므로, 연속푸리에변환에직접적으로적용할수없음. 이산푸리에변환 Discrete Fourier Transormation) 은디지털신호를주파수영역으로변환해줌. 이산푸리에변환공식 : 연속푸리에변환의적분을합 Sum) 으로변경 1 0 ˆ 2 ] [ 1 ˆ) n n j e n g G 1 0 ˆ ˆ 2 ˆ) ] [ n j e G n g 1 0 ˆ 1 0 ˆ ) ˆ ˆ 2 1 0 1 0 ) ˆ ˆ 2 ) ˆ, ˆ 1 ], [ ], [ 1 ) ˆ, ˆ M M m n j m n n M m M m n j m n n m m n m n e G M m n g m e n g M G

10 고속푸리에변환 Fast Fourier Transormation: FFT) 이산푸리에변환은복잡하고연산량이많아하드웨어를구현할때처리속도가늦어진다는단점이있음고속의푸리에변환 Fast Fourier Transormation: FFT) 은이산푸리에변환공식에서반복계산을제거하면변환을빠르게수행할수있음. 1 차원 DFT 를두번수행하는 DFT 의분리성을이용하여 2 차원 DFT 를수행분리성을이용하면 1 차원푸리에변환이두단계적용됨 1 0 1 0 ˆ 2 ˆ 2 ], [ 1 ) ˆ, ˆ n M m M n j m j m n n m e m n g e M G 1 0 ˆ 2 ], [ 1 ) ˆ, M m M n j m n m e n g M n G 1 0 ˆ 2 ) ˆ, 1 ) ˆ, ˆ n m j m m n m e n G G

고속푸리에변환 계속 ) 분리성때문에 1 차원 DFT 는효과적으로 1 차원 FFT 를적용할수있어계산량을크게줄일수있고, 하드웨어구현이용이해짐. 결국, 2 차원 FFT 가수행되는것 11

순방향고속푸리에변환 FFT 를영상에적용하려면필수적으로영상의크기도 2 의지수승이어야함 예를들어, =2 j, M=2 k ). 영상의크기가 2 의지수승이아니라면 0 의값을삽입하여강제적으로 2 의지수승을만듦. 1 차원 FFT 는두단계로구현됨. 첫번째단계 : 스크램블링 재귀적인 DFT 계산주기와맞추려고데이터를적절히재배치 X k) n x n) W 두번째단계 : 버터플라이함수적용 데이터를점 Pointer) 의집합으로나눠이웃한점의 DFT 변환수행 결국, 다음과같이정리할수있음. 1 0 nk nk j2 nk/ ) W e k X k) G k) W H k), k 0,1, 1 12

스펙트럼 Spectrum) 영상 영상스펙트럼 디지털영상이이산푸리에변환으로주파수영역영상으로변환되는것 스펙트럼영상을나타낼때구한주파수데이터의동적범위가너무넓음 스펙트럼의상용대수식 D u, v) clog[1 G ˆ, ˆ n m ) ] 1 을더하는이유는화소값이 0 일때를고려한것임 스펙트럼영상에는푸리에변환의켤레대칭성으로대칭성분이발생하여사각형의네구석에직류성분이있게됨. 샤플링 Shuling) 은푸리에변환의주기성을이용하여주파수 4 분면을영상의가운데로이동시키는것으로, 좀더쉽게해석해주는역할함. 13

영상스펙트럼 계속 ) 14

역방향고속푸리에변환 푸리에변환은가역변환이므로스펙트럼영상에푸리에역변환을적용하면원래공간영역의영상을다시얻을수있음., X k) 1 n 0 x n) nk W x n) 1 1 n0 X k) nk W 역방향은순방향에서과 xn) 과 Xk) 의위치를바꾸고, W n 을 W -1 로바꾸면같게됨. 스크램블링과버터플라이함수를순방향과같게생성하고이를수행 15

역방향고속푸리에변환 계속 ) 16

[ 실습하기 13-1] FFT 프로그램 1 ResourceView 창에서 [Menu]-[IDR_IMAGETYPE] 더블클릭 메뉴추가 2 [MFC ClassWizard] 대화상자를이용해추가된메뉴에서 2 차원 FFT 를실행하는함수추가 17

[ 실습하기 13-1] FFT 프로그램 3 Doc 클래스의헤더파일에 Complex 구조체선언 struct Complex{ double Re; // 실수를위한변수 double Im; // 허수를위한변수 ; 4 Doc 클래스에 FFT 를위한변수추가 5 Doc 클래스에다음프로그램추가 18

➊ OnFt2d 함수추가하기 void CImageProcessingDoc::OnFt2d) { int i, j, row, col, Log2, um; Complex *Data; unsigned char **temp; double Value, Absol; um = m_width; Log2 = 0; whileum >= 2) // 영상의너비계산 { um >>= 1; Log2++; [ 실습하기 13-1] FFT 프로그램 m_tempimage = Image2DMemm_height, m_width); // 기억장소할당 Data = new Complex [m_width]; m_fft = new Complex * [m_height]; // 주파수영역변환영상을저장하기위한배열 temp = new unsigned char * [m_height]; ori=0 ; i<m_height; i++){ m_fft[i] = new Complex [m_width]; temp[i] = new unsigned char [m_width]; 19

➊ OnFt2d 함수추가하기 계속 ) ori=0 ; i<m_height ; i++){ orj=0 ; j<m_width ; j++){ Data[j].Re = double)m_inputimage[i*m_width+j]; // 입력의한행을복사, 실수성분값은영상의값 Data[j].Im = 0.0; // 복소성분값은 0 OnFt1dData, m_width, Log2); // 1 차원 FFT orj=0 ; j<m_width ; j++){ // 결과저장 m_fft[i][j].re = Data[j].Re; m_fft[i][j].im = Data[j].Im; um = m_height; Log2 = 0; whileum >= 2) // 영상의높이계산 { um >>= 1; Log2++; Data = new Complex [m_height]; [ 실습하기 13-1] FFT 프로그램 20

➊ OnFt2d 함수추가하기 계속 ) [ 실습하기 13-1] FFT 프로그램 ori=0 ; i<m_width ; i++){ orj=0 ; j<m_height ; j++){ Data[j].Re = m_fft[j][i].re; // 영상의한열을복사 Data[j].Im = m_fft[j][i].im; OnFt1dData, m_height, Log2); // 1 차원 FFT orj=0 ; j<m_height ; j++){ // 결과저장 m_fft[j][i].re = Data[j].Re; m_fft[j][i].im = Data[j].Im; // FFT 실행결과를영상으로출력하기위한연산 ori=0 ; i<m_height ; i++){ orj=0 ; j<m_width ; j++){ Value = sqrtm_fft[i][j].re * m_fft[i][j].re)+ m_fft[i][j].im * m_fft[i][j].im)); Absol = 20 * logvalue); iabsol > 255.0) Absol = 255.0; iabsol < 0.0) Absol = 0.0; m_tempimage[i][j] = Absol; 21

[ 실습하기 13-1] FFT 프로그램 ➊ OnFt2d 함수추가하기 계속 ) // 셔플링과정 : 영상을 4 등분하고분할된영상을상하대칭및좌우대칭 ori=0 ; i<m_height; i += m_height / 2){ orint j=0 ; j<m_width; j += m_width / 2){ orrow=0 ; row<m_height / 2 ; row++){ orcol=0 ; col<m_width / 2 ; col++){ temp[m_height/2-1) - row + i][m_width/2-1) - col + j] = unsigned char)m_tempimage[i + row][j + col]; ori = 0; i < m_height; i++){ orj = 0; j < m_width; j++){ m_outputimage[i*m_width+j] = temp[i][j]; delete [] Data, **temp; 22

[ 실습하기 13-1] FFT 프로그램 ➋ OnFt1d 함수추가하기 void CImageProcessingDoc::OnFt1dComplex *X, int, int Log2) { // 1차원 t를위한함수 OnShuleX,, Log2); // 함수호출 OnButterlyX,, Log2, 1); // 함수호출 23

[ 실습하기 13-1] FFT 프로그램 ➌ OnShule 함수추가하기 void CImageProcessingDoc::OnShuleComplex *X, int, int Log2) { // 입력데이터의순서를바구기위한함수 int i; Complex *temp; temp = new Complex []; or i=0 ; i< ; i++) { temp[i].re = X[OnReverseBitOrderi, Log2)].Re; temp[i].im = X[OnReverseBitOrderi, Log2)].Im; or i=0 ; i< ; i++) { X[i].Re = temp[i].re; X[i].Im = temp[i].im; delete [] temp; 24

[ 실습하기 13-1] FFT 프로그램 ➍ OnButterly 함수추가하기 void CImageProcessingDoc::OnButterlyComplex *X, int, int Log2, int mode) { // 나비 Butterly) 구조를위한함수 int i, j, k, m; int start; double Value; double PI = 3.14159265358979; Complex *Y, temp; Y = new Complex [/2]; ori=0 ; i<log2 ; i++){ Value = pow2, i+1); imode == 1){ orj=0 ; j<int)value/2) ; j++){ Y[j].Re = cosj*2.0*pi / Value); Y[j].Im = -sinj*2.0*pi / Value); 25

➍ OnButterly 함수추가하기 계속 ) imode == 2){ orj=0 ; j<int)value/2) ; j++){ Y[j].Re = cosj*2.0*pi / Value); Y[j].Im = sinj*2.0*pi / Value); start = 0; [ 실습하기 13-1] FFT 프로그램 ork=0 ; k</int)value ; k++){ orj=start ; j<start+int)value/2) ; j++){ m = j + int)value/2); temp.re = Y[j-start].Re * X[m].Re - Y[j-start].Im * X[m].Im; temp.im = Y[j-start].Im * X[m].Re + Y[j-start].Re * X[m].Im; X[m].Re = X[j].Re - temp.re; X[m].Im = X[j].Im - temp.im; X[j].Re = X[j].Re + temp.re; X[j].Im = X[j].Im + temp.im; start = start + int)value; 26

[ 실습하기 13-1] FFT 프로그램 ➍ OnButterly 함수추가하기 계속 ) imode == 2){ ori=0 ; i< ; i++){ X[i].Re = X[i].Re / ; X[i].Im = X[i].Im / ; delete [] Y; 27

➎ OnReverseBitOrder 함수추가하기 int CImageProcessingDoc::OnReverseBitOrderint index, int Log2) { int i, X, Y; Y = 0; ori=0 ; i<log2 ; i++){ X = index & 1<< i)) >> i; Y = Y << 1) X; [ 실습하기 13-1] FFT 프로그램 return Y; 13-1 VIEW void CImageProcessingView::OnIt2d) { CImageProcessingDoc* pdoc = GetDocument); ASSERT_VALIDpDoc); pdoc->onit2d); InvalidateTRUE); 28

6 View 클래스에다음프로그램추가 [ 실습하기 13-1] FFT 프로그램 void CImageProcessingView::Onearest) { CImageProcessingDoc* pdoc = GetDocument); ASSERT_VALIDpDoc); pdoc->onearest); InvalidateTRUE); 29

[ 실습하기 13-2] IFFT 프로그램 1 ResourceView 창에서 [Menu]-[IDR_IMAGETYPE] 더블클릭 메뉴추가 2 [MFC ClassWizard] 대화상자를이용해추가된메뉴에서 2 차원 IFFT 를실행하는함수추가 3 Doc 클래스에 FFT 를위한변수추가 4 Doc 클래스에다음프로그램추가 30

[ 실습하기 13-2] IFFT 프로그램 ➊ OnIt2d 함수추가하기 void CImageProcessingDoc::OnIt2d) { int i, j, um, Log2; Complex *Data; um = m_width; Log2 = 0; whileum >= 2) // 주파수변환된영상의너비계산 { um >>= 1; Log2++; Data = new Complex [m_height]; m_ifft = new Complex *[m_height]; // 역변환된영상을위한배열 ori=0 ; i<m_height ; i++){ m_ifft[i] = new Complex [m_width]; 31

➊ OnIt2d 함수추가하기 계속 ) [ 실습하기 13-2] IFFT 프로그램 ori=0 ; i< m_height ; i++){ orj=0 ; j<m_width ; j++){ // 한행을복사 Data[j].Re = m_fft[i][j].re; Data[j].Im = m_fft[i][j].im; OnIt1dData, m_width, Log2); // 1 차원 IFFT orj=0 ; j<m_width ; j++){ m_ifft[i][j].re = Data[j].Re; // 결과저장 m_ifft[i][j].im = Data[j].Im; um = m_height; Log2 = 0; whileum >= 2) // 주파수변환된영상의높이계산 { um >>= 1; Log2++; Data = new Complex [m_height]; 32

➊ OnIt2d 함수추가하기 계속 ) [ 실습하기 13-2] IFFT 프로그램 ori=0 ; i<m_width ; i++){ orj=0 ; j<m_height ; j++){ Data[j].Re = m_ifft[j][i].re; // 한열을복사 Data[j].Im = m_ifft[j][i].im; OnIt1dData, m_height, Log2); // 1 차원 IFFT orj=0 ; j<m_height ; j++){ m_ifft[j][i].re = Data[j].Re; // 결과저장 m_ifft[j][i].im = Data[j].Im; ori=0 ; i<m_width ; i++){ orj=0 ; j<m_height ; j++){ m_outputimage[i*m_width+j] = unsigned char)m_ifft[i][j].re; // 결과출력 delete [] Data; 33

[ 실습하기 13-2] IFFT 프로그램 ➋ OnIt1d 함수추가하기 void CImageProcessingDoc::OnIt1dComplex *X, int, int Log2) { OnShuleX,, Log2); OnButterlyX,, Log2, 2); 13-2 VIEW void CImageProcessingView::OnLpFrequency) { CImageProcessingDoc* pdoc = GetDocument); ASSERT_VALIDpDoc); pdoc->onlpfrequency); InvalidateTRUE); 34

4 View 클래스에다음프로그램추가 [ 실습하기 13-2] IFFT 프로그램 void CImageProcessingView::Onearest) { CImageProcessingDoc* pdoc = GetDocument); ASSERT_VALIDpDoc); pdoc->onearest); InvalidateTRUE); 35

36 이산코사인변환 Discrete Cosine Transorm: DCT) 영상을압축하는가장효과적인방법임이검증이산코사인변환은푸리에변환의실수부분의코사인과매우비슷기저함수가코사인함수가됨. 실수부만다루므로신호처리를효과적으로수행할수있음. 1 차원이산코사인변환쌍영상에적용하는 2 차원이산코사인변환쌍 1, 0,1,, 2 1) 2 )cos ) ) 1 0 u u x x u k u F x 1, 0,1,, 2 1) 2 )cos ) ) 1 0 x u x u F u k x x v y u x y x v k u k v u F y x 2 1) 2 cos 2 1) 2 )cos, ) ) ), 1 0 1 0 v y u x v u F v k u k y x v u 2 1) 2 cos 2 1) 2 )cos, ) ) ), 1 0 1 0

이산코사인변환 계속 ) 37

이산코사인변환 계속 ) 38

Section 03 주파수영역에서의필터링 영상의푸리에변환을수행하는목적중하나는주파수영역에서필터링을수행하기위해서임. 푸리에변환뒤주파수영역에서의필터링은영상에포함된주파수성분을파악하여이를토대로영상에포함된주파수성분을필터링하는것 39

Section 03 주파수영역에서의필터링 40

주파수영역에서필터링수행방법 주파수영역에서필터링의수행은공간영역에서의필터링보다쉬움. 공간영역에서의필터링은컨볼루션으로수행하지만, 주파수영역에서는영상의주파수성분과필터의주파수성분을곱해서해결 컨벌루션정리 Convolution Teorem) 컨벌루션연산의기호를 * 로표시 x, y)*hx, y) Fu, v) Hu, v) Fu, v)*hu, v) x, y) hx, y) x, y) 와 hx, y) 는공간영역에서의영상데이터와필터계수 Fu, v) 와 Hu, v) 는주파수영역에서영상주파수데이터와필터계수의주파수데이터 u 와 v 는 x 와 y 방향의주파수성분 41

주파수영역에서필터링수행방법 계속 ) 42

주파수영역에서필터링수행방법 계속 ) 필터에주파수영역의마스크가주어진다면주파수영역에서필터링은다음순서를따름. 1 영상의푸리에변환을구한다. 2 푸리에변환된영상과필터마스크를곱한다. 3 2 의결과에역푸리에변환을구한다. 43

주파수영역에서저주파와고주파필터링 주파수영역에서필터링을수행하려면, 먼저주파수영역의필터마스크를만들어야함. 첫번째생성방법 : 공간영역필터마스크를주파수영역필터마스크로변환하는것. 저주파와고주파필터마스크를푸리에변환으로얻을수있음 12 장에 서소개 ) 두번째생성방법 : 주파수영역에서직접마스크를계산하여얻는것 이상적인저주파통과필터의생성 고주파성분을감쇄시켜영상을흐릿하게만드는이상적인저주파통과필터 Ideal Low Pass Filter) 는원점에서어느거리내의저주파성분은 1 을곱해통과시키고, 거리밖의고주파성분은 0 을곱해차단하도록주파수영역을설계 이상적인저주파통과필터수식 1, H u, v) 0, r u, v) r u, v) r 0 는필터의반경이며, 차단주파수라고함. r 0 r 0 44

주파수영역에서저주파와고주파필터링 계속 ) 45

[ 실습하기 13-3] 주파수영역에서저주파통과필터링프로그램 1 ResourceView 창에서 [Menu]-[IDR_IMAGETYPE] 더블클릭 메뉴추가 2 [MFC ClassWizard] 대화상자를이용해추가된메뉴에서저주파필터링 주파수영역 ) 을실행하는함수추가 3 Doc 클래스에다음프로그램추가 46

[ 실습하기 13-3] 주파수영역에서저주파통과필터링프로그램 void CImageProcessingDoc::OnLpFrequency) { int i, j, x, y; double temp, D, ; D = 32.0; = 4.0; OnFt2d); // 주파수변환 // 주파수변환된값에서고주파성분제거 ori=0 ; i<m_height ; i++) { orj=0 ; j<m_width ; j++){ x = i; y = j; ix > m_height / 2) x = x - m_height; iy > m_width / 2) y = y - m_width; temp = 1.0 / 1.0 + powsqrtdouble) x * x + y * y)) / D, 2*)); m_fft[i][j].re = m_fft[i][j].re * temp; m_fft[i][j].im = m_fft[i][j].im * temp; OnIt2d); // 주파수역변환 47

[ 실습하기 13-3] 주파수영역에서저주파통과필터링프로그램 4 View 클래스에다음프로그램추가 void CImageProcessingView::OnLpFrequency) { CImageProcessingDoc* pdoc = GetDocument); ASSERT_VALIDpDoc); pdoc->onlpfrequency); InvalidateTRUE); 48

[ 실습하기 13-3] 주파수영역에서저주파통과필터링프로그램 5 프로그램실행결과영상 49

이상적인고주파통과필터의생성 저주파성분을감쇄시켜영상을선명하게만드는이상적인고주파필터 Ideal High Pass Filter) 의생성은저주파통과필터에서다음수식으로얻을수있음. H u, v) 1 H u, v) high low 50

[ 실습하기 13-4] 주파수영역에서고주파통과필터링프로그램 1 ResourceView 창에서 [Menu]-[IDR_IMAGETYPE] 더블클릭 메뉴추가 2 [MFC ClassWizard] 대화상자를이용해추가된메뉴에서인접한이웃화소보간법을실행하는함수추가 3 Doc 클래스에다음프로그램추가 51

[ 실습하기 13-4] 주파수영역에서고주파통과필터링프로그램 void CImageProcessingDoc::OnHpFrequency) { int i, j, x, y; double temp, D, ; D = 128.0; = 4.0; OnFt2d); // 주파수변환 // 주파수변환된값에서저주파성분제거 ori=0 ; i<m_height ; i++) { orj=0 ; j<m_width ; j++){ x = i; y = j; ix > m_height / 2) x = x - m_height; iy > m_width / 2) y = y - m_width; temp = 1.0 / 1.0 + powd / sqrtdouble) x * x + y * y)), 2*)); m_fft[i][j].re = m_fft[i][j].re * temp; m_fft[i][j].im = m_fft[i][j].im * temp; OnIt2d); // 주파수역변환 52

[ 실습하기 13-4] 주파수영역에서고주파통과필터링프로그램 4 View 클래스에다음프로그램추가 void CImageProcessingView::OnHpFrequency) { CImageProcessingDoc* pdoc = GetDocument); ASSERT_VALIDpDoc); pdoc->onhpfrequency); InvalidateTRUE); 53

[ 실습하기 13-4] 주파수영역에서고주파통과필터링프로그램 5 프로그램실행결과영상 54

웨이브렛이론 Section 04 웨이브렛변환 - 웨이브렛이론 웨이브렛은기본함수로 sine, cosine 함수외에웨이브렛모함수를사용 각주파수영역에따라변화하는다양한기저함수를생성하여사용 시간 - 주파수에국부적인성질이있음. 푸리에변환에서는시간과주파수정보를동시에파악할수없지만, 웨이브렛에서는이둘을동시에파악가능 55

웨이브렛이론 계속 ) 56

필터뱅크를이용한이산웨이브렛변환수행 이산웨이브렛변환은저주파통과필터와고주파통과필터로구성된필터뱅크로수행 사용되는필터는특수하게설계된것으로, 직교특성, 선형특성, 고주파와저주파부분을정확하게분할하는특성이있음. 더비쉬에 Daubechies) 가제안한계수의길이가 4 인웨이브렛필터계수 57

필터뱅크를이용한이산웨이브렛변환수행 계속 ) 58

필터뱅크를이용한이산웨이브렛변환수행 계속 ) 59

필터뱅크를이용한이산웨이브렛변환수행 계속 ) 60

필터뱅크를이용한이산웨이브렛변환수행 계속 ) 61

필터뱅크를이용한이산웨이브렛변환수행 계속 ) 웨이브렛변환의결과로형성된부영상의대역별배치를옥타브나무 Octave Tree Structure) 분할이라고함. 62

필터뱅크를이용한이산웨이브렛변환수행 계속 ) 실제영상을삼단계옥타브나무분할구조로배치한것 여러가지주파성분이있고, 여러부영상의크기합은원래영상과같음. 63

영상변환 주파수 요약 영상데이터를다른형태의데이터로변환하는것으로, 데이터를바라보는관점을변경하여새로운정보를얻는것 영상의개선, 복원, 압축, 해석등다양한영상처리작업을공간에서처리하는것보다더쉽고효율적으로수행할수있게함. 영상에서밝기의변화정도를나타내는것으로, 화소값의변화율을뜻함. 밝기가얼마나빨리변화하는가에따라서고주파와저주파로분류 영상에서높은주파수성분을낮추면 섬세한부분이사라지고, 부드럽고엉성한영상으로변함. 낮은주파수성분을낮추면 엉성한부분이사라지면서섬세한부분에해당하는경계가강조됨. 주파수변환 공간영역형태의영상을주파수영역형태의기본주파수로분리하는것 정규적인변환이성립하려면역변환도성립되어야함. 64

푸리에변환 요약 주파수영역으로변환하는가장일반적인방법 고속의푸리에변환 FFT) 이산푸리에변환공식에서반복계산을제거하면변환을빠르게수행할수있는장점이있음. 1 차원 FFT 는두단계로구현됨 1 단계 : 스크램블링단계 재귀적인 DFT 계산주기와맞추려고데이터를적절히재배치함. 2 단계 : 버터플라이함수적용단계 데이터를점의집합으로나눠이웃한점의 DFT 변환을수행함. 스펙트럼영상 디지털영상이이산푸리에변환으로주파수영역영상으로변환되는것 스펙트럼의상용대수식을이용하여스펙트럼영상을생성함. 65

Thank you