亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fretrans.cpp

?? vc++數字圖像處理 ,是一本很不錯的介紹數字圖像方面的書籍,這里有本書的全部源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/************************************************************************** *  文件名:FreTrans.cpp * *  正交變換API函數庫: * *  FFT()				- 快速付立葉變換 *  IFFT()				- 快速付立葉反變換 *  DCT()				- 離散余弦變換 *  WALSH()				- 沃爾什-哈達瑪變換 * *  Fourier()			- 圖像的付立葉變換 *  DIBDct()			- 圖像的離散余弦變換 *  DIBWalsh()			- 圖像的沃爾什-哈達瑪變換 * *************************************************************************/#include "FreTrans.h"#include "stdafx.h"#include "DIBAPI.h"#include <math.h>#include <direct.h>#include <complex>using namespace std;// 常數π#define PI 3.1415926535/************************************************************************* * * 函數名稱: *   FFT() * * 參數: *   complex<double> * TD	- 指向時域數組的指針 *   complex<double> * FD	- 指向頻域數組的指針 *   r						-2的冪數,即迭代次數 * * 返回值: *   無。 * * 說明: *   該函數用來實現快速付立葉變換。 * ************************************************************************/VOID WINAPI FFT(complex<double> * TD, complex<double> * FD, int r){	// 付立葉變換點數	LONG	count;		// 循環變量	int		i,j,k;		// 中間變量	int		bfsize,p;		// 角度	double	angle;		complex<double> *W,*X1,*X2,*X;		// 計算付立葉變換點數	count = 1 << r;		// 分配運算所需存儲器	W  = new complex<double>[count / 2];	X1 = new complex<double>[count];	X2 = new complex<double>[count];		// 計算加權系數	for(i = 0; i < count / 2; i++)	{		angle = -i * PI * 2 / count;		W[i] = complex<double> (cos(angle), sin(angle));	}		// 將時域點寫入X1	memcpy(X1, TD, sizeof(complex<double>) * count);		// 采用蝶形算法進行快速付立葉變換	for(k = 0; k < r; k++)	{		for(j = 0; j < 1 << k; j++)		{			bfsize = 1 << (r-k);			for(i = 0; i < bfsize / 2; i++)			{				p = j * bfsize;				X2[i + p] = X1[i + p] + X1[i + p + bfsize / 2];				X2[i + p + bfsize / 2] = (X1[i + p] - X1[i + p + bfsize / 2]) * W[i * (1<<k)];			}		}		X  = X1;		X1 = X2;		X2 = X;	}		// 重新排序	for(j = 0; j < count; j++)	{		p = 0;		for(i = 0; i < r; i++)		{			if (j&(1<<i))			{				p+=1<<(r-i-1);			}		}		FD[j]=X1[p];	}		// 釋放內存	delete W;	delete X1;	delete X2;}/************************************************************************* * * 函數名稱: *   IFFT() * * 參數: *   complex<double> * FD	- 指向頻域值的指針 *   complex<double> * TD	- 指向時域值的指針 *   r						-2的冪數 * * 返回值: *   無。 * * 說明: *   該函數用來實現快速付立葉反變換。 * ************************************************************************/VOID WINAPI IFFT(complex<double> * FD, complex<double> * TD, int r){	// 付立葉變換點數	LONG	count;		// 循環變量	int		i;		complex<double> *X;		// 計算付立葉變換點數	count = 1 << r;		// 分配運算所需存儲器	X = new complex<double>[count];		// 將頻域點寫入X	memcpy(X, FD, sizeof(complex<double>) * count);		// 求共軛	for(i = 0; i < count; i++)	{		X[i] = complex<double> (X[i].real(), -X[i].imag());	}		// 調用快速付立葉變換	FFT(X, TD, r);		// 求時域點的共軛	for(i = 0; i < count; i++)	{		TD[i] = complex<double> (TD[i].real() / count, -TD[i].imag() / count);	}		// 釋放內存	delete X;}/************************************************************************* * * 函數名稱: *   Fourier() * * 參數: *   LPSTR lpDIBBits    - 指向源DIB圖像指針 *   LONG  lWidth       - 源圖像寬度(象素數) *   LONG  lHeight      - 源圖像高度(象素數) * * 返回值: *   BOOL               - 成功返回TRUE,否則返回FALSE。 * * 說明: *   該函數用來對圖像進行付立葉變換。 * ************************************************************************/BOOL WINAPI Fourier(LPSTR lpDIBBits, LONG lWidth, LONG lHeight){		// 指向源圖像的指針	unsigned char*	lpSrc;		// 中間變量	double	dTemp;		// 循環變量	LONG	i;	LONG	j;		// 進行付立葉變換的寬度和高度(2的整數次方)	LONG	w;	LONG	h;		int		wp;	int		hp;		// 圖像每行的字節數	LONG	lLineBytes;		// 計算圖像每行的字節數	lLineBytes = WIDTHBYTES(lWidth * 8);		// 賦初值	w = 1;	h = 1;	wp = 0;	hp = 0;		// 計算進行付立葉變換的寬度和高度(2的整數次方)	while(w * 2 <= lWidth)	{		w *= 2;		wp++;	}		while(h * 2 <= lHeight)	{		h *= 2;		hp++;	}		// 分配內存	complex<double> *TD = new complex<double>[w * h];	complex<double> *FD = new complex<double>[w * h];		// 行	for(i = 0; i < h; i++)	{		// 列		for(j = 0; j < w; j++)		{			// 指向DIB第i行,第j個象素的指針			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;						// 給時域賦值			TD[j + w * i] = complex<double>(*(lpSrc), 0);		}	}		for(i = 0; i < h; i++)	{		// 對y方向進行快速付立葉變換		FFT(&TD[w * i], &FD[w * i], wp);	}		// 保存變換結果	for(i = 0; i < h; i++)	{		for(j = 0; j < w; j++)		{			TD[i + h * j] = FD[j + w * i];		}	}		for(i = 0; i < w; i++)	{		// 對x方向進行快速付立葉變換		FFT(&TD[i * h], &FD[i * h], hp);	}		// 行	for(i = 0; i < h; i++)	{		// 列		for(j = 0; j < w; j++)		{			// 計算頻譜			dTemp = sqrt(FD[j * h + i].real() * FD[j * h + i].real() + 				         FD[j * h + i].imag() * FD[j * h + i].imag()) / 100;						// 判斷是否超過255			if (dTemp > 255)			{				// 對于超過的,直接設置為255				dTemp = 255;			}						// 指向DIB第(i<h/2 ? i+h/2 : i-h/2)行,第(j<w/2 ? j+w/2 : j-w/2)個象素的指針			// 此處不直接取i和j,是為了將變換后的原點移到中心			//lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * 				(lHeight - 1 - (i<h/2 ? i+h/2 : i-h/2)) + (j<w/2 ? j+w/2 : j-w/2);						// 更新源圖像			* (lpSrc) = (BYTE)(dTemp);		}	}		// 刪除臨時變量	delete TD;	delete FD;		// 返回	return TRUE;}/************************************************************************* * * 函數名稱: *   DCT() * * 參數: *   double * f				- 指向時域值的指針 *   double * F				- 指向頻域值的指針 *   r						-2的冪數 * * 返回值: *   無。 * * 說明: *   該函數用來實現快速離散余弦變換。該函數利用2N點的快速付立葉變換 * 來實現離散余弦變換。 * ************************************************************************/VOID WINAPI DCT(double *f, double *F, int r){	// 離散余弦變換點數	LONG	count;		// 循環變量	int		i;		// 中間變量	double	dTemp;		complex<double> *X;		// 計算離散余弦變換點數	count = 1<<r;		// 分配內存	X = new complex<double>[count*2];		// 賦初值為0	memset(X, 0, sizeof(complex<double>) * count * 2);		// 將時域點寫入數組X	for(i=0;i<count;i++)	{		X[i] = complex<double> (f[i], 0);	}		// 調用快速付立葉變換	FFT(X,X,r+1);		// 調整系數	dTemp = 1/sqrt(count);		// 求F[0]	F[0] = X[0].real() * dTemp;		dTemp *= sqrt(2);		// 求F[u]		for(i = 1; i < count; i++)	{		F[i]=(X[i].real() * cos(i*PI/(count*2)) + X[i].imag() * sin(i*PI/(count*2))) * dTemp;	}		// 釋放內存	delete X;}/************************************************************************* * * 函數名稱: *   IDCT() * * 參數: *   double * F				- 指向頻域值的指針 *   double * f				- 指向時域值的指針 *   r						-2的冪數 * * 返回值: *   無。 * * 說明: *   該函數用來實現快速離散余弦反變換。該函數也利用2N點的快速付立葉變換 * 來實現離散余弦反變換。 * ************************************************************************/VOID WINAPI IDCT(double *F, double *f, int r){	// 離散余弦反變換點數	LONG	count;		// 循環變量	int		i;		// 中間變量	double	dTemp, d0;		complex<double> *X;		// 計算離散余弦變換點數	count = 1<<r;		// 分配內存	X = new complex<double>[count*2];		// 賦初值為0	memset(X, 0, sizeof(complex<double>) * count * 2);		// 將頻域變換后點寫入數組X	for(i=0;i<count;i++)	{		X[i] = complex<double> (F[i] * cos(i*PI/(count*2)), F[i] * sin(i*PI/(count*2)));	}		// 調用快速付立葉反變換	IFFT(X,X,r+1);		// 調整系數	dTemp = sqrt(2.0/count);	d0 = (sqrt(1.0/count) - dTemp) * F[0];		// 計算f(x)	for(i = 0; i < count; i++)	{		f[i] = d0 + X[i].real()* dTemp * 2 * count;	}		// 釋放內存	delete X;}/************************************************************************* * * 函數名稱: *   DIBDct() * * 參數: *   LPSTR lpDIBBits    - 指向源DIB圖像指針 *   LONG  lWidth       - 源圖像寬度(象素數) *   LONG  lHeight      - 源圖像高度(象素數) * * 返回值: *   BOOL               - 成功返回TRUE,否則返回FALSE。 * * 說明: *   該函數用來對圖像進行離散余弦變換。 * ************************************************************************/BOOL WINAPI DIBDct(LPSTR lpDIBBits, LONG lWidth, LONG lHeight){		// 指向源圖像的指針	unsigned char*	lpSrc;		// 循環變量	LONG	i;	LONG	j;		// 進行付立葉變換的寬度和高度(2的整數次方)	LONG	w;	LONG	h;		// 中間變量	double	dTemp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区免费播放| 日韩三级高清在线| 欧美一区二区视频在线观看2020 | 伊人开心综合网| 久草在线在线精品观看| 在线精品视频一区二区| 国产精品视频免费| 青青草成人在线观看| 中文字幕中文字幕一区二区| 日本sm残虐另类| 色天使久久综合网天天| 国产精品久久毛片| 国产激情视频一区二区三区欧美 | 国产亚洲综合色| 免费观看91视频大全| 欧美日韩aaaaaa| 一区二区三区成人| 成人av资源下载| 国产亚洲欧美激情| 国产精品综合久久| 久久综合色一综合色88| 麻豆成人av在线| 欧美一区二区三区精品| 亚洲亚洲人成综合网络| 欧美亚洲一区二区在线| 亚洲摸摸操操av| 色婷婷综合久色| 一区二区视频免费在线观看| 91女人视频在线观看| 亚洲欧洲日本在线| 色吧成人激情小说| 一区二区三区丝袜| 欧美性欧美巨大黑白大战| 亚洲一区精品在线| 91精品国产综合久久久蜜臀图片| 日韩综合在线视频| 日韩午夜精品电影| 精品影视av免费| 久久蜜臀精品av| 成人18精品视频| 亚洲一区在线播放| 在线观看91精品国产麻豆| 欧美aⅴ一区二区三区视频| 欧美精品成人一区二区三区四区| 三级欧美韩日大片在线看| 日韩一区二区在线免费观看| 精一区二区三区| 日本一区二区电影| 欧洲一区二区三区在线| 日韩激情一区二区| 国产亚洲欧洲997久久综合| 波多野结衣欧美| 午夜精品久久久久久久蜜桃app| 欧美肥大bbwbbw高潮| 国产精品一二二区| 亚洲狼人国产精品| 欧美电影免费提供在线观看| 成人免费观看男女羞羞视频| 亚洲午夜久久久久| 久久久91精品国产一区二区精品| 97精品视频在线观看自产线路二| 亚洲国产美国国产综合一区二区| 午夜国产不卡在线观看视频| 欧美区视频在线观看| 国产麻豆日韩欧美久久| 亚洲黄色免费网站| 精品av综合导航| 91丨九色丨蝌蚪富婆spa| 美国三级日本三级久久99| 欧美国产禁国产网站cc| 91精品国产综合久久久久久久久久 | 精品视频999| 国产精品影音先锋| 亚洲国产精品久久一线不卡| 久久久激情视频| 91麻豆精品国产91久久久使用方法 | 欧美性大战久久| 国产精品主播直播| 偷拍自拍另类欧美| 综合精品久久久| 欧美精品一区二区久久婷婷 | 亚洲免费av高清| 精品久久久三级丝袜| 欧美性大战xxxxx久久久| 国产精品中文字幕日韩精品| 日本午夜一区二区| 亚洲靠逼com| ...xxx性欧美| 日本一区二区三区在线不卡| 日韩欧美一区二区视频| 欧美久久久久中文字幕| 91玉足脚交白嫩脚丫在线播放| 精品一区二区三区影院在线午夜| 亚洲午夜免费福利视频| 日韩理论片在线| 国产精品欧美一级免费| 国产无人区一区二区三区| 日韩一区二区不卡| 这里只有精品99re| 欧美日韩免费高清一区色橹橹 | 欧美四级电影网| av一区二区三区| 国产精品88av| 国产一区久久久| 精品一区二区免费在线观看| 日韩精品一二三| 日韩精品乱码av一区二区| 亚洲精品乱码久久久久久久久| 欧美高清在线视频| 国产午夜精品理论片a级大结局| 精品电影一区二区三区| 欧美tickle裸体挠脚心vk| 欧美一区二区久久| 欧美成人a在线| 欧美xxx久久| 久久亚洲影视婷婷| 国产免费成人在线视频| 欧美国产综合一区二区| 高清在线不卡av| 狠狠色狠狠色综合系列| 国产综合色在线| 粉嫩欧美一区二区三区高清影视 | 日韩网站在线看片你懂的| 69堂精品视频| www欧美成人18+| 日本一区二区免费在线观看视频| 亚洲国产激情av| 一区二区在线看| 美女诱惑一区二区| 国产另类ts人妖一区二区| 成年人午夜久久久| 欧美日韩一级片网站| 欧美电影免费观看高清完整版在 | 一区二区三区中文字幕精品精品| 亚洲一二三专区| 麻豆精品久久精品色综合| 国产一区二区网址| 99视频超级精品| 欧美日韩精品一区二区三区四区| 日韩欧美一级精品久久| 国产情人综合久久777777| 亚洲欧洲美洲综合色网| 日韩国产在线一| 欧美日韩免费高清一区色橹橹 | 久久精品国产亚洲5555| 国产不卡视频在线观看| 一本大道综合伊人精品热热| 51精品国自产在线| 日本一区免费视频| 日韩电影在线免费看| 国产jizzjizz一区二区| 欧美性色黄大片| 国产欧美视频在线观看| 五月天激情综合| 成人免费视频一区二区| 欧美福利视频一区| 中文字幕一区二区三区不卡| 午夜精品视频在线观看| 成人一区二区三区视频在线观看| 欧美日韩国产另类一区| 日本一区二区成人在线| 美日韩一区二区| 欧美主播一区二区三区美女| 国产亚洲欧美在线| 青青青伊人色综合久久| 91国产免费观看| 日本一二三不卡| 精品一区二区免费| 在线精品观看国产| 中文字幕在线免费不卡| 加勒比av一区二区| 欧美久久久久免费| 一区二区三区欧美久久| 不卡的电视剧免费网站有什么| 欧美一级爆毛片| 亚洲不卡一区二区三区| 91麻豆.com| 中文字幕在线一区二区三区| 国产一区二区视频在线播放| 91精品免费在线| 亚洲成av人片在线| 欧美性大战xxxxx久久久| 亚洲欧美电影一区二区| 成人午夜视频网站| 国产欧美日韩精品一区| 国产一区二区三区四| 日韩免费一区二区| 麻豆精品国产91久久久久久| 欧美日韩国产影片| 午夜精品影院在线观看| 欧美男人的天堂一二区| 亚洲国产aⅴ成人精品无吗| 国产精品久久久久久久裸模| 精品一区二区在线看| 日韩一级免费一区| 美美哒免费高清在线观看视频一区二区 | 色综合色综合色综合| 国产精品久久久久久久久免费丝袜 | 99久久久久久| 国产精品沙发午睡系列990531|