日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

离散余弦变换和C语言实现-win32版本

發(fā)布時(shí)間:2025/4/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 离散余弦变换和C语言实现-win32版本 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

離散余弦變換,DCT for Discrete Cosine Transform。
是與傅里葉變換相關(guān)的一種變換,它類似于離散傅里葉變換(DFT for Discrete Fourier Transform),但是只使用實(shí)數(shù)。
離散余弦變換相當(dāng)于一個(gè)長度大概是它兩倍的離散傅里葉變換,這個(gè)離散傅里葉變換是對(duì)一個(gè)實(shí)偶函數(shù)進(jìn)行的(因?yàn)橐粋€(gè)實(shí)偶函數(shù)的傅里葉變換仍然是一個(gè)實(shí)偶函數(shù)),在有些變形里面需要將輸入或者輸出的位置移動(dòng)半個(gè)單位(DCT有8種標(biāo)準(zhǔn)類型,其中4種是常見的)。

離散余弦變換DCT具有信號(hào)譜分量豐富、能量集中,且不需要對(duì)語音相位進(jìn)行估算等優(yōu)點(diǎn),能在較低的運(yùn)算復(fù)雜度下取得較好的語音增強(qiáng)效果。

離散余弦變換,尤其是它的第二種類型,經(jīng)常被信號(hào)處理和圖像處理使用,用于對(duì)信號(hào)和圖像(包括靜止圖像和運(yùn)動(dòng)圖像)進(jìn)行有損數(shù)據(jù)壓縮。這是由于離散余弦變換具有很強(qiáng)的"能量集中"特性:大多數(shù)的自然信號(hào)(包括聲音和圖像)的能量都集中在離散余弦變換后的低頻部分;

在mpeg協(xié)議或jpeg格式的編碼中包含離散余弦變換,記不太清,可以自己查;

下面來看C語言實(shí)現(xiàn);

#include <windows.h> #include <math.h> #include "resource.h"LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);HINSTANCE hInst; TCHAR szClassName[] = TEXT("dctDemo"); #define PI 3.141593 #define N 4void dct(int x[4], HDC ); int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil) {HWND hwnd;MSG messages;WNDCLASSEX wincl;hInst = hThisInstance;wincl.hInstance = hThisInstance;wincl.lpszClassName = szClassName;wincl.lpfnWndProc = WindowProcedure;wincl.style = CS_DBLCLKS;wincl.cbSize = sizeof (WNDCLASSEX);wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);wincl.hCursor = LoadCursor (NULL, IDC_ARROW);wincl.lpszMenuName = MAKEINTRESOURCE (IDC_DCTDEMO);wincl.cbClsExtra = 0;wincl.cbWndExtra = 0;wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);if (!RegisterClassEx (&wincl))return 0;hwnd = CreateWindowEx (0,szClassName,TEXT("離散余弦變換 Demo"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,300,300,HWND_DESKTOP,NULL,hThisInstance,NULL);ShowWindow (hwnd, nFunsterStil);while (GetMessage (&messages, NULL, 0, 0)){TranslateMessage(&messages);DispatchMessage(&messages);}return messages.wParam; }LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {PAINTSTRUCT ps;HDC hdc;RECT rt; char szBuffer[100]; int x1[] = {2,3,3,2};switch (message){case WM_COMMAND:switch (LOWORD(wParam)){case IDM_dct: hdc=GetDC(hwnd);dct(x1,hdc);break;case IDM_ABOUT:MessageBox (hwnd, TEXT ("dctDemo v1.0\nCopyright (C) 2020\n by bo"),TEXT ("離散余弦變換Demo"), MB_OK | MB_ICONINFORMATION);break;case IDM_EXIT:DestroyWindow(hwnd);break;default:return DefWindowProc(hwnd, message, wParam, lParam); }break;case WM_CREATE:break;case WM_PAINT:hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rt); EndPaint(hwnd, &ps);break;case WM_DESTROY:PostQuitMessage (0);break;default:return DefWindowProc (hwnd, message, wParam, lParam);}return 0; }void dct(int x[4], HDC hdc) {int row=0;char szBuffer[20];int k,n;double A,s,X[4];for(k = 0; k < N; k++){s = 0;if(k==0)A = sqrt(1.0/N); //計(jì)算k=0時(shí)的系數(shù)elseA = sqrt(2.0/N); //計(jì)算k!=0時(shí)的系數(shù)for(n = 0; n < N; n++){double tmp = x[n]*cos((PI*(2*n+1)*k)/(2*N));s = s + tmp; //累加求和}X[k] = A * s; //X[k]等于累和結(jié)果s乘以系數(shù)A}for(k = 0; k < N; k++) {sprintf(szBuffer,"%.7lf",X[k]);TextOut(hdc,10,10+row*25,szBuffer,lstrlen(szBuffer));row=row+1;}}

這是計(jì)算4個(gè)點(diǎn)的DCT;要計(jì)算的值序列作為數(shù)組傳給DCT函數(shù);然后輸出;

控制臺(tái)的版本輸出如下;?

控制臺(tái)版本代碼;

?

#include<stdio.h> #include<math.h> #define PI 3.141593 #define N 4 int main() {int k, n;int x[] = {2,3,3,2};double A, s, X[4];for(k = 0; k < N; k++){s = 0;if(k==0)A = sqrt(1.0/N); //計(jì)算k=0時(shí)的系數(shù)elseA = sqrt(2.0/N); //計(jì)算k!=0時(shí)的系數(shù)for(n = 0; n < N; n++){double tmp = x[n]*cos((PI*(2*n+1)*k)/(2*N));s = s + tmp; //累加求和}X[k] = A * s; //X[k]等于累和結(jié)果s乘以系數(shù)A}for(k = 0; k < N; k++) printf("%f\n", X[k]); }

輸出的時(shí)候如果小數(shù)點(diǎn)格式化不對(duì)就會(huì)出現(xiàn)問題;正確的應(yīng)該是,

sprintf(szBuffer,"%.6lf",X[k]);?

工程;?

資源和頭文件;

#include "resource.h" #include <windows.h>/ // // Menu //IDC_DCTDEMO MENU BEGINPOPUP "&File"BEGINMENUITEM "離散余弦變換Demo", IDM_dctMENUITEM "E&xit", IDM_EXITENDPOPUP "&Help"BEGINMENUITEM "&About ...", IDM_ABOUTEND END #define IDM_EXIT 10001 #define IDM_ABOUT 10002#define IDC_DCTDEMO 10101 #define IDD_ABOUTBOX 10102 #define IDM_dct 40001

?

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的离散余弦变换和C语言实现-win32版本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品国产乱码一区二区三 | 国产精品久久久久久免费 | 午夜做爰xxxⅹ性高湖视频美国 | 超碰xxx| 91九色偷拍 | 已满十八岁免费观看 | 欧美日韩国产在线 | 九久久| 性色av无码久久一区二区三区 | 国产一区二区三区四 | 影音先锋成人资源站 | 在线观看xxxx | 亚洲婷婷久久综合 | 久草资源在线播放 | 337p粉嫩大胆噜噜噜噜69影视 | 99re6在线视频 | 国产又粗又猛又爽又黄的网站 | 永久免费不卡在线观看黄网站 | 色播激情网 | brazzers欧美一区二区 | 视频在线免费观看 | 欧美射射射 | 久久久久久久久久综合 | 国产高清亚洲 | 久久国产精品99久久人人澡 | 一区二区精品区 | 欧美极品少妇×xxxbbb | 在线午夜视频 | 午夜国产一级 | 手机看片福利在线 | 国产免费av观看 | 青娱乐自拍视频 | 国产综合精品久久久久成人影 | 人妻系列一区 | 少妇高潮一区二区三区喷水 | 欧美黑人精品 | 中文字幕在线观看一区二区 | 九草网| 日韩成人免费在线视频 | 国产高清视频在线观看 | 色中文网 | 欧洲天堂网 | 成人欧美一区二区三区 | 国产偷v国产偷v亚洲高清 | free欧美性69护士呻吟 | 丰满人妻一区二区三区53号 | 黄色三级三级 | 欧美综合自拍亚洲综合图片区 | 久久99精品久久久久久噜噜 | 天天想你免费观看完整版高清电影 | 国产一区二区三区在线观看视频 | 三级小视频在线观看 | 羞羞的视频在线观看 | 99精品在线免费视频 | 日本中文字幕在线免费观看 | 日本三级午夜理伦三级三 | 黄色网一级片 | 巨物撞击尤物少妇呻吟 | 欧美日韩理论 | 亚洲成人av电影网站 | 女生扒开腿让男生操 | 国产精品国产三级国产aⅴ无密码 | 小箩莉末发育娇小性色xxxx | 手机看片亚洲 | 国产九色在线 | 欧美性生交大片免费看app麻豆 | 黄a视频 | 亚洲大尺度视频 | 欧美日韩国产一级片 | 亚洲综合大片69999 | 99无码熟妇丰满人妻啪啪 | 国产毛片毛片毛片 | 中午字幕在线观看 | 国产乱女淫av麻豆国产 | 久久艹综合| 亚洲制服丝袜一区 | 天堂色区 | 8x8ⅹ成人永久免费视频 | 黄色在线免费观看 | 欧美v在线 | 中文字幕在线播放 | 国产欧美视频一区二区三区 | 台湾佬成人中文网222vvv | 国产精品嫩 | 国产又黄又猛又粗 | 农村寡妇一区二区三区 | 成人污污视频在线观看 | 女大学生的家政保姆初体验 | 综合xx网 | 蜜臀久久精品久久久久 | 日韩天堂在线 | 亚洲图片在线播放 | 手机在线一区二区 | 欧美性受xxxx狂喷水 | 色悠悠在线视频 | 亚洲国产精品区 | 欧美乱码视频 | 国产一级在线免费观看 | 亚洲精品2 |