DCT演算法C 實現原始碼

2021-09-25 23:04:58 字數 1344 閱讀 7835

宣告:此**並非原創,參照網路上一位前輩的**,但是測試發現他的**有bug,修改後貼出已做記錄;

#include

#include

#include

#include

#define pi acos(-1)//定義圓周率

using namespace std;

void dct(vector>& ori, vector>& dct, float n);

int main(void)

;//二維陣列的初始值,可以自己任意設定

float start[n][n] = ;//二維陣列的初始值,可以自己任意設定

/*float start[n][n] = ,,,

,,,,

};*/

vector> orimatrix;//原始的二維陣列,用容器的方法來定義,方便除錯

vector> dctmatrix;//用來儲存經過dct變換後的二維陣列

vectortemp;//temp僅僅是為了用來填充orimatrix

//填充orimatrix

for (int i = 0; i < n; i++)

for (int i = 0; i < n; i++)

dctmatrix = orimatrix;//初始化dctmatrix

//初始化orimatrix

for (int i = 0; i < n; i++)

}//輸出orimatrix

cout << "原始二維陣列矩陣:" << endl;

for (int i = 0; i < n; i++)

cout << endl;

}cout << endl;

dct(orimatrix, dctmatrix, n);//呼叫自己定義的函式

//輸出dctmatrix

cout << "經過dct變換後的二維陣列矩陣:" << endl;

for (int i = 0; i < n; i++)

cout << endl;

}getchar();

return 0;

}void dct(vector>& ori, vector>& dct, float n)//第乙個形參是原始二維陣列的引用,第二個形參矩陣是經過dct變換的二維陣列的引用,第三個形參是階數

else if ((k == 0)||(l == 0))

else

dct[k][l] += pd*(2 / n) * (ori[m][n]) * (cos((2 * m + 1) * k * pi / (2 * n))) * (cos((2 * n + 1) * l * pi / (2 * n)));}}}}}

C 實現列印原始碼

列印的原理是 生成mdi檔案,系統碰到mdi的時候會自動以列印的方式處理。所以,不管用什麼模板,什麼方式 能在printpage事件處理中,生成一張要列印內容的就ok了 c 實現列印原始碼如下 region 列印 private void btnprint click object sender,e...

基於的DCT水印演算法實現

上學期幫同校本科的同學做了畢業設計的實驗部分,用matlab實現dct水印演算法,並且包含了攻擊測試。先講乙個大體概念,然後放出具體 dct 離散余弦變換 這裡只以二維dct為例。訊號經過dct後,從空間域變換到頻域。是一種正交變換的方法。是影象處理中應用即為廣泛的傅氏變換中一種特殊的情況 被展開函...

C 實現敏感詞過濾演算法(含原始碼)

將所有敏感詞庫按模組聚合構建成乙個詞樹 所謂聚合,就是將相同字開頭的部分進行聚合,以減少對詞的查詢範圍,相當於建立敏感詞索引,如 他奶奶的 他媽的 他娘的,這三個詞,聚合構建成詞樹時,他 字就是這三個詞的索引,同時每個詞的結尾都有乙個結束標誌和該詞的一些描述,如敏感級別等 然後從頭到尾掃瞄一遍目標文...