最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

opencv3/C++ 離散余弦變換DCT方式

 更新時間:2019年12月11日 09:53:19   作者:阿卡蒂奧  
今天小編就為大家分享一篇opencv3/C++ 離散余弦變換DCT方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

離散余弦變換/Discrete cosine transform,

根據(jù)離散傅里葉變換的性質(zhì),實偶函數(shù)的傅里葉變換只含實的余弦項,而數(shù)字圖像都是實數(shù)矩陣,因此構(gòu)造了一種實數(shù)域的變換——離散余弦變換(DCT)。

離散余弦變換具有很強(qiáng)的”能量集中”特性,左上方稱為低頻數(shù)據(jù),右下方稱為高頻數(shù)據(jù)。而大多數(shù)的自然信號(包括聲音和圖像)的能量都集中在離散余弦變換后的低頻部分。因此也可以在圖像壓縮算法中用來進(jìn)行有損壓縮。(如JPEG壓縮編碼)

OpenCV中dct()

在OpenCV中有專門進(jìn)行離散余弦變換的函數(shù)dct()。

dct()函數(shù)執(zhí)行1D或2D浮點(diǎn)數(shù)組的正向或反向離散余弦變換(DCT):

N個元素的一維向量的正余弦變換:

該函數(shù)通過查看輸入數(shù)組的標(biāo)志和大小來選擇操作模式:

如果(flags&DCT_INVERSE)== 0,則函數(shù)執(zhí)行向前的1D或2D變換。否則是一個逆1D或2D變換。

如果(flags&DCT_ROWS)!= 0,則函數(shù)執(zhí)行每行的一維變換。

如果數(shù)組是單列或單行,則該函數(shù)執(zhí)行一維變換。

如果以上都不是,則該函數(shù)執(zhí)行2D變換。

目前dct支持偶數(shù)大小的數(shù)組(2,4,6 …)。對于數(shù)據(jù)分析和逼近,可以在必要時填充數(shù)組。另外,函數(shù)性能對數(shù)組大小的依賴性非常大,而不是單調(diào)的。在當(dāng)前實現(xiàn)中,大小為N的矢量的DCT通過大小為N / 2的矢量的DFT來計算。因此,最佳DCT大小N1 > = N可以計算為:

size_t getOptimalDCTSize(size_t N){return 2 * getOptimalDFTSize((N + 1)/ 2); }
N1 = getOptimalDCTSize(N);

dct()參數(shù)

src 輸入浮點(diǎn)數(shù)組。

dst 輸出與src大小和類型相同的數(shù)組。

flags 轉(zhuǎn)換標(biāo)志

opencv示例

#include <opencv2\opencv.hpp> 
#include <opencv2\core\core.hpp>
#include <opencv2\core\mat.hpp>
#include <iostream> 
using namespace std; 
using namespace cv; 
int main()
{
 Mat src = imread("E:\\image\\sophie.jpg", 0); 
 if(src.empty())
 {
  cout << "the image is not exist" << endl; 
  return -1;
 }
 resize(src, src, Size(512, 512));
 src.convertTo(src, CV_32F, 1.0/255);
 Mat srcDCT; 
 dct(src, srcDCT);

 imshow("src", src);
 imshow("dct", srcDCT);
 waitKey();
 return 0;
}

可以看到因為第一幅圖像的細(xì)節(jié)較少,因此DFT變換數(shù)據(jù)主要集中在左上方(低頻區(qū)域),高頻區(qū)域大部分為0:

而第二幅圖像相對而言具有較為豐富的細(xì)節(jié),因此相對于第一幅圖像中間區(qū)域出現(xiàn)了大量的非0值:

以上這篇opencv3/C++ 離散余弦變換DCT方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++中vector的實現(xiàn)方法示例詳解

    C++中vector的實現(xiàn)方法示例詳解

    這篇文章主要介紹了C++中vector實現(xiàn)的相關(guān)資料,vector是C++中重要的容器之一,底層通過三個迭代器實現(xiàn),分別是_start,?_finish,?和_end_of_storage,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • C語言小項目計時器的實現(xiàn)思路(倒計時+報警提示)

    C語言小項目計時器的實現(xiàn)思路(倒計時+報警提示)

    這篇文章主要介紹了C語言小項目計時器(倒計時+報警提示)的實現(xiàn)思路,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • C語言中的指針以及二級指針代碼詳解

    C語言中的指針以及二級指針代碼詳解

    這篇文章主要介紹了C語言中的指針以及二級指針代碼詳解,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • C/C++?string.h庫中memcpy()和memmove()的使用

    C/C++?string.h庫中memcpy()和memmove()的使用

    memcpy與memmove的目的都是將N個字節(jié)的源內(nèi)存地址的內(nèi)容拷貝到目標(biāo)內(nèi)存地址中,本文主要介紹了C/C++?string.h庫中memcpy()和memmove()的使用,感興趣的可以了解一下
    2023-12-12
  • Qt 使用 canon edsdk 實現(xiàn)實時預(yù)覽的示例代碼

    Qt 使用 canon edsdk 實現(xiàn)實時預(yù)覽的示例代碼

    這篇文章主要介紹了Qt 使用 canon edsdk 實現(xiàn)實時預(yù)覽的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • OpenCV實現(xiàn)人臉檢測

    OpenCV實現(xiàn)人臉檢測

    這篇文章主要為大家詳細(xì)介紹了OpenCV實現(xiàn)人臉檢測的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 深入分析Visual C++進(jìn)行串口通信編程的詳解

    深入分析Visual C++進(jìn)行串口通信編程的詳解

    本篇文章是對Visual C++進(jìn)行串口通信編程進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言操作符基礎(chǔ)知識圖文詳解

    C語言操作符基礎(chǔ)知識圖文詳解

    這篇文章主要以圖文結(jié)合的方式為大家詳細(xì)介紹了C語言位運(yùn)算基礎(chǔ)知識,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-08-08
  • 使用C語言實現(xiàn)本地socke通訊的方法

    使用C語言實現(xiàn)本地socke通訊的方法

    這篇文章主要介紹了?使用C語言實現(xiàn)本地socke通訊,代碼分為服務(wù)器代碼和客戶端代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C語言之通訊錄的模擬實現(xiàn)代碼

    C語言之通訊錄的模擬實現(xiàn)代碼

    這篇文章主要介紹了C語言之通訊錄的模擬實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論

兖州市| 神木县| 颍上县| 贵溪市| 安宁市| 定西市| 青冈县| 鄢陵县| 莱阳市| 长沙市| 故城县| 大化| 德保县| 囊谦县| 兴文县| 镇江市| 肇庆市| 喀喇沁旗| 黄浦区| 西藏| 新闻| 澎湖县| 邢台市| 仪陇县| 壶关县| 乐山市| 固镇县| 睢宁县| 勐海县| 上栗县| 弥渡县| 东乌珠穆沁旗| 文化| 阳曲县| 昌邑市| 察雅县| 平乐县| 嘉定区| 宜阳县| 邢台县| 平湖市|