소스 10-10 [FFT] 메뉴 이벤트 처리 함수(ImageToolDoc.cpp)
    void CImageToolDoc::OnFourierFft()
    {
        int w = m_Dib.GetWidth();
        int h = m_Dib.GetHeight();
    
        if (!IsPowerOf2(w) || !IsPowerOf2(h))
        {
            AfxMessageBox(_T("가로 또는 세로의 크기가 2의 승수가 아닙니다."));
            return;
        }
    
        CWaitCursor wait;
    
        CONVERT_DIB_TO_BYTEIMAGE(m_Dib, img)
    
        IppFourier fourier;
        fourier.SetImage(img);
    
        DWORD t1 = timeGetTime();
        fourier.FFT(1);
    
    #ifdef SHOW_SPECTRUM_PHASE_IMAGE
        IppByteImage imgSpec;
        fourier.GetSpectrumImage(imgSpec);
    
        CONVERT_IMAGE_TO_DIB(imgSpec, dibSpec)
        AfxNewBitmap(dibSpec);
    
        IppByteImage imgPhase;
        fourier.GetPhaseImage(imgPhase);
    
        CONVERT_IMAGE_TO_DIB(imgPhase, dibPhase)
        AfxNewBitmap(dibPhase);
    #endif
    
        fourier.FFT(-1);
        DWORD t2 = timeGetTime();
    
        IppByteImage img2;
        fourier.GetImage(img2);
    
        CONVERT_IMAGE_TO_DIB(img2, dib)
    
        AfxPrintInfo(_T("[푸리에변환/FFT] 입력 영상: %s, 입력 영상 크기: %dx%d, 처리 시간: %dmsec"),
                  GetTitle(), w, h, t2 - t1);
    
        AfxNewBitmap(dib);
    
    }
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.