請問如何實現離散餘弦轉換 |
尚未結案
|
jim006
一般會員 發表:22 回覆:25 積分:9 註冊:2004-01-14 發送簡訊給我 |
在之前小弟就有在版上找到了有關小波轉換的資料其中也有包含程式碼,但可能是小弟的功力還不夠,還無法看懂網友熱心所附的程式碼,所以我想自己去寫看看,當中也出現了一些問題,希望知道的人可以給小弟我一些建議...Tks 在撰寫程式中,我所遇到的問題是,>>>>>>>>>>>>>> src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=15318546&CC=342594"> 發表人 - jim006 於 2004/04/24 21:19:48
|
johnjohn
一般會員 發表:6 回覆:59 積分:13 註冊:2004-04-20 發送簡訊給我 |
|
plihui
初階會員 發表:88 回覆:96 積分:41 註冊:2003-07-03 發送簡訊給我 |
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
jim006 你好:
以下是根據你所附的公式寫出來的DCT演算法,變數我儘量對應。基本上,DCT轉換好像只適用於正方形區域,因此一般都是將大圖切割成8*8或16*ㄶ的區塊後再各自轉換(像是JPEG的壓縮就是用8*8,N=8)
// 傳入:(正方形)區塊大小 N,區塊資料陣列(一維)的指標 f // 傳出:寫入指標 D 的陣列(一維) #define PI 3.1415926535897932384626433832795 void DCT(int N, Byte *f, Byte *D) { int x, y; // 指示空間域陣列(f)的位置 int i, j; // 指示頻率域陣列(D)的位置 double Ci, Cj; // 對應公式中的係數 double coefficient; // 加總後欲乘上的係數 double sum; double M = 2 * N; // 先計算 2*N (cos() 中會用到) for(j = 0; j < N; j ) { for(i = 0; i < N; i ) { // 計算加總後欲乘上的係數 Ci = (i == 0) ? 1 / sqrt(2) : 1; Cj = (j == 0) ? 1 / sqrt(2) : 1; coefficient = Ci * Cj / (sqrt(2) * N); // 計算 DCT sum = 0.0; for(y = 0; y < N; y ) for(x = 0; x < N; x ) sum = f[y*N x] * cos((2*x 1) * i * PI / M) * cos((2*y 1) * j * PI / M); D[j*N i] = coefficient * sum; } } }參考看看吧~ 發表人 - arisaka_matsuri 於 2004/04/25 17:48:58 |
johnjohn
一般會員 發表:6 回覆:59 積分:13 註冊:2004-04-20 發送簡訊給我 |
|
jim006
一般會員 發表:22 回覆:25 積分:9 註冊:2004-01-14 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
大家好:
DCT的程式碼可以參考下面連結
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33309
MilesWamg前輩的作品【發表】影像處理轉換篇
引言: 一灰階圖,(Lena.bmp 256*256),以下五種轉換執行結果、轉換後圖形、能量分佈、總誤差、PSNR與SNR。含DFT(Discrete Fourier Transform運算)運算 、Discrete Hartly Transform 運算、Discrete Consin Transform 運算 、Walsh運算與Hadaman運算。以Bolrad C 實作,其功能如下。 1 . 開啟檔案;載入一bmp圖檔。 2. 儲存檔案將輸出或輸入圖區的圖形純程bmp檔。 3. 轉換方式選擇;有五種方式提供圖形轉換。 4.轉換方式選擇:可選擇轉換與轉換加反轉換,結果輸出於”輸出結果” 。 5.灰階化/載入:將輸入之圖形載入記憶體並將彩色圖形灰階化。 6.執行:執行轉換功能,score bar為轉換後保留元素N*N範圍。(8*8中留下N*N) 7.Error: 計算:總誤差,PSNR,SNR。 8.proof:計算轉換矩陣與其轉置矩陣之乘積是否為單位矩陣。 9.plus:轉換結果(不含反向運算)將小於0大於255之值濾除。順心 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |