フーリエ変換は、低周波フィルタOpenCVの変換します

する#include <opencv2 \コア\ core.hpp> 
の#include <opencv2 \のHighGUI \ highgui.hpp> 
の#include <opencv2 \ imgproc \ imgproc.hpp>
 使用して 名前空間STD;
 使用 名前空間CV;
 int型のmain()
{ 
    文字列のパス= " 1.png " ; 
    マットSRC =関数imread(パス、0 );
     // [1]の複素行列、フーリエ変換を記憶するマトリクスは、変換作成する
    INT R&LT = getOptimalDFTSize(src.rows);
     int型 C = getOptimalDFTSize(SRCを。 colsの); // 最適なサイズの取得
    マットパディングを;
     //( - src.rows、0、R画像のSRC拡張エッジが大きくなる - 、C src.cols) それぞれ垂直及び水平、 
    copyMakeBorder(SRC、パッド入り、0、R&LT - src.rows、0、C - SRC .cols、BORDER_CONSTANTは、スカラー:: ::すべて(0 ));
     // 複雑なマトリックス、[0]、平面の虚部が[1] 0充填平面の実数部作成 
    マット面[] = {Mat_ < フロート > (パディング)、マット::ゼロ(padded.size()、CV_32F)}; 
     // [2]フーリエ変換
    マットcomplexImgを、
    マージ(プレーン、2、complexImgは); // 固体(2つのチャンネルに組み合わせとして理解することができます+虚数部)画像 
    DFT(complexImg、complexImg); //は、元のDFTは、追加のメモリ、それにデータをコピー、complexImgは複素行列である
    
    INT CX = complexImg.cols / 2 INT CY = complexImg.rows / 2 ; 
    マットM1(complexImg、CV ::のRect(00、CX、CY)); // 左上部分 
    マットM2(complexImg、CV ::のRect(CX、0、CX、CY )); // 右上部 
    マットM3(complexImg、CV ::のRect(0、CY、CX、CY)); // 左下部分 
    マットM4(complexImg、CV ::のRect (CX、CY、CX、CY)) ; // 右下部の
    マットTEMP; 
    m1.copyTo(TEMP); 
    m4.copyTo(M1); 
    temp.copyTo(M4); 
    m2.copyTo(TEMP); 
    m3.copyTo(M2); 
    temp.copyTo(M3) ; 
    マットpartFrequencyImg。
    complexImg.copyTo(partFrequencyImg)。
    // 变换频率
    int型 NX1 = INT0.5F * padded.cols)。
    int型 NX2 = INT0.5F * padded.cols)。
    int型 NY1 = INT0.5F * padded.rows)。
    int型 NY2 = INT0.5F * padded.rows)。
    // 逆变换 
    partFrequencyImg.colRange(NX1、NX2 + 1).setTo(スカラー::全て(0 ))。
    partFrequencyImg.rowRange(NY1、NY2 + 1).setTo(スカラー::全て(0 ))。
    マットiPartDft [] = {マット::ゼロ(padded.size()、CV_32F)、マット::ゼロ(padded.size()、CV_32F)}。
    IDFT(partFrequencyImg、partFrequencyImg)。
    スプリット(partFrequencyImg、iPartDft)。
    マグニチュード(iPartDft [ 0 ]、iPartDft [ 1 ]、iPartDft [ 0 ])。
    CV ::正規化(iPartDft [ 0 ]、iPartDft [ 0 ]、10 、CV_MINMAX)。
    マットL = iPartDft [ 0 ]。
    関数imshow(" L " 、L)。
    waitKey(0 )。
}

 

おすすめ

転載: www.cnblogs.com/hsy1941/p/11361655.html