亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

cv::getOptimalDFTSize --- OpenCV代碼閱讀

系統 1837 0

在DFT中,可以使用FFT來加速,但是如果選個長度很坑爹如某個素數,那FFT就慘了,直接發揮不了作用,這個時候就可以對原始的數據長度進行擴展,最好是2^x(<--一般書上都這樣寫`不是一般性`我們假設長度是2^n,每次我都看的很郁悶),但是發現1,2,4,....中間的跨度很大,如果我的序列長度是 2^n+1 那就得選得2^(n+1)對內存來說是巨大的浪費,OpenCV中選擇的是2^x*3^y*5^z,這樣子選擇256+1時可以選擇270(3^3*2*5),沒必要一下子選擇512,來浪費內存.

當然在OpenCV中是維護了一張表optimalDFTSizeTab,屬于空間換時間的方法,沒有使用如下的方法

      
        int
      
       getMultipliers(
      
        int
      
       n, 
      
        int
      
       *n1, 
      
        int
      
       *
      
        n2)

{

    
      
      
        int
      
      
         multiplier, i;

    
      
      
        if
      
       (n == 
      
        1
      
      
        )

    {

        
      
      *n1 = 
      
        1
      
      
        ;

        
      
      *n2 = 
      
        1
      
      
        ;

        
      
      
        return
      
       FFT_ERROR; 
      
        //
      
      
         n = 1
      
      
            }

    multiplier 
      
      = n / 
      
        2
      
      
        ;

    
      
      
        for
      
       (i = multiplier; i >= 
      
        2
      
      ; i--
      
        )

    {

        
      
      
        if
      
       (n % i == 
      
        0
      
      
        )

        {

            
      
      *n1 =
      
         i;

            
      
      *n2 = n /
      
         i;

            
      
      
        return
      
       FFT_OK; 
      
        //
      
      
         n = n1 * n2
      
      
                }

    }

    
      
      *n1 = 
      
        1
      
      
        ;

    
      
      *n2 =
      
         n;

    
      
      
        return
      
       FFT_ERROR; 
      
        //
      
      
         n - prime number
      
      

}
    

當然其實上面的代碼也是在OpenCV中的.

建立表后就可以查找值了.

查找使用傳說中的二分法.

      
        int
      
       cv::getOptimalDFTSize( 
      
        int
      
      
         size0 )

{

    
      
      
        int
      
       a = 
      
        0
      
      , b = 
      
        sizeof
      
      (optimalDFTSizeTab)/
      
        sizeof
      
      (optimalDFTSizeTab[
      
        0
      
      ]) - 
      
        1
      
      
        ;

    
      
      
        if
      
      ( (unsigned)size0 >=
      
         (unsigned)optimalDFTSizeTab[b] )

        
      
      
        return
      
       -
      
        1
      
      
        ;



    
      
      
        while
      
      ( a <
      
         b )

    {

        
      
      
        int
      
       c = (a + b) >> 
      
        1
      
      
        ;

        
      
      
        if
      
      ( size0 <=
      
         optimalDFTSizeTab[c] )

            b 
      
      =
      
         c;

        
      
      
        else
      
      
        

            a 
      
      = c+
      
        1
      
      
        ;

    }



    
      
      
        return
      
      
         optimalDFTSizeTab[b];

}
      
    

開始時判斷是否在表中,如果在的話迭代搜索,速度很快.....

cv::getOptimalDFTSize --- OpenCV代碼閱讀


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色人阁在线 | 午夜精品久久久久久久99热 | 亚洲 欧美 卡通 在线 另类 | 99j久久精品久久久久久 | 俄罗斯一级在线播放 | 欧美黄色三级视频 | 一级黄色毛片 | 毛片网站在线 | 99精彩视频在线观看 | 成年黄网站免费大全毛片 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 日本欧美一区二区三区不卡视频 | 国产日产欧产美一二三区 | 久久精品一区二区 | 99热久久久久久久免费观看 | 高清在线精品一区二区 | 老司机福利精品 | 色视频国产 | 91精品国产91久久久久 | 97在线免费 | 一级黄色录像免费观看 | 亚洲综合射 | 久久99精品久久久久久水蜜桃 | 欧美日韩综合精品一区二区三区 | 不卡免费播放 | 成年女人18毛片毛片免费 | 99在线精品国产不卡在线观看 | 狠狠色噜噜噜噜狠狠狠狠狠狠奇米 | 日本另类αv欧美另类aⅴ | 欧美成人爽毛片在线视频 | 久久精品国产麻豆不卡 | 日韩久久精品一区二区三区 | 综合另类小说色区色噜噜 | 国产午夜精品尤物福利视频 | 久久久久久中文字幕 | 亚洲色妞 | 欧美性影院 | 日韩在线手机看片免费看 | 久草最新 | 全部费免一级毛片不收费 | 日本人在线看片 |