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