亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
精品国产一区久久| 久久综合网色—综合色88| 美女视频黄久久| 中文字幕 久热精品 视频在线 | 日韩国产欧美三级| 亚洲国产精品99久久久久久久久| 在线观看日韩av先锋影音电影院| 国产一区二区三区免费看| 亚洲国产精品久久人人爱| 国产女人18水真多18精品一级做| 91麻豆精品国产自产在线观看一区| 成人av网站在线| 麻豆久久一区二区| 亚洲高清免费视频| 亚洲欧洲精品天堂一级| 精品国产乱码91久久久久久网站| 欧美喷水一区二区| 日本高清无吗v一区| 国产成人午夜视频| 国产美女主播视频一区| 精品一区二区日韩| 免费观看30秒视频久久| 性做久久久久久免费观看欧美| 日本一区二区综合亚洲| 欧美成人video| 51久久夜色精品国产麻豆| 在线观看国产日韩| 在线视频一区二区三区| 日本韩国欧美国产| 日本福利一区二区| 欧美在线视频不卡| 欧美日韩一区中文字幕| 欧美吞精做爰啪啪高潮| 在线观看91精品国产入口| 色香蕉成人二区免费| 97国产一区二区| 91麻豆文化传媒在线观看| 成人免费看片app下载| 风流少妇一区二区| 波多野结衣精品在线| 91视频在线观看免费| 91网站在线播放| 色婷婷激情久久| 在线观看av一区二区| 欧美视频完全免费看| 欧美性猛交xxxx黑人交| 欧美色区777第一页| 欧美日本乱大交xxxxx| 在线观看91av| 欧美岛国在线观看| 久久蜜桃香蕉精品一区二区三区| 精品av久久707| 欧美国产精品久久| 亚洲视频你懂的| 亚洲国产一区视频| 美日韩一区二区| 国产一区二区在线影院| 成人国产视频在线观看| 91美女福利视频| 欧美高清你懂得| 久久精品在这里| 国产精品成人午夜| 亚洲午夜激情网站| 激情综合一区二区三区| 成人精品免费视频| 在线视频中文字幕一区二区| 日韩一区二区视频| 中文字幕一区二区三区色视频| 亚洲精品免费在线观看| 日韩电影在线免费看| 国产成a人亚洲| 欧美日韩亚洲高清一区二区| 亚洲精品在线观看视频| 成人免费视频在线观看| 免费高清在线一区| 国产精品一卡二| 欧美在线观看一区二区| 精品国产一区二区亚洲人成毛片| ●精品国产综合乱码久久久久| 亚洲sss视频在线视频| 国产精品中文字幕日韩精品| 色噜噜狠狠成人中文综合| 欧美一二三区在线观看| 亚洲色欲色欲www| 国内精品视频666| 在线视频综合导航| 国产欧美久久久精品影院| 午夜视频久久久久久| 懂色av一区二区在线播放| 欧美另类一区二区三区| 国产精品久久久久久久久久免费看| 午夜a成v人精品| 99久久精品国产网站| 日韩欧美二区三区| 一区二区三区在线观看国产| 国产原创一区二区| 欧美挠脚心视频网站| 国产欧美一区二区精品秋霞影院 | 激情小说亚洲一区| 色婷婷av一区| 国产欧美日产一区| 青草av.久久免费一区| 色94色欧美sute亚洲13| 欧美高清在线精品一区| 麻豆91精品视频| 欧美亚洲动漫另类| 国产精品久久久久国产精品日日| 蜜桃视频免费观看一区| 欧美视频中文字幕| 成人欧美一区二区三区在线播放| 精品在线播放午夜| 欧美一二三四区在线| 午夜欧美一区二区三区在线播放| 99久久99久久综合| 中文字幕不卡在线| 国产白丝精品91爽爽久久| 精品国产精品一区二区夜夜嗨| 日日欢夜夜爽一区| 欧美综合在线视频| 亚洲人成电影网站色mp4| 欧美性受xxxx| 欧美国产一区在线| 日本欧美在线观看| 在线免费亚洲电影| 亚洲女同女同女同女同女同69| 国产乱码精品一区二区三区av| 欧美日韩大陆在线| 91亚洲精品久久久蜜桃网站 | 日韩欧美国产精品| 亚洲欧美色综合| 黑人巨大精品欧美一区| 91福利小视频| 欧美激情综合五月色丁香小说| 亚洲电影欧美电影有声小说| 国产大陆精品国产| 日韩美女视频一区二区| 久国产精品韩国三级视频| 91成人免费电影| 国产精品三级在线观看| 九九国产精品视频| 欧美高清www午色夜在线视频| 亚洲日本va午夜在线电影| 国产一区啦啦啦在线观看| 91精品国产色综合久久不卡蜜臀 | 婷婷夜色潮精品综合在线| jlzzjlzz欧美大全| 久久久久久免费网| 美女在线视频一区| 在线不卡a资源高清| 亚洲综合色婷婷| 色综合久久久久综合体| 中文子幕无线码一区tr| 国产精品99久久久久久宅男| 日韩一区二区三区高清免费看看| 亚洲国产精品久久久久婷婷884| 91同城在线观看| 国产精品国产三级国产三级人妇| 国产精品正在播放| 欧美精品一区二区三区视频| 日本不卡一二三区黄网| 欧美日韩精品一区二区三区四区 | 在线亚洲精品福利网址导航| 中文字幕亚洲在| 成人app在线| 亚洲欧洲精品成人久久奇米网| 成人av集中营| 亚洲视频网在线直播| 色综合色狠狠综合色| 亚洲人精品午夜| 91久久一区二区| 亚洲国产视频在线| 91精品婷婷国产综合久久| 丝袜美腿一区二区三区| 欧美一区二区免费观在线| 免费人成在线不卡| wwwwww.欧美系列| 国产福利电影一区二区三区| 久久久91精品国产一区二区三区| 国产中文一区二区三区| 国产日本亚洲高清| 不卡在线视频中文字幕| 一区二区三区.www| 91精品国产欧美一区二区成人| 蜜臂av日日欢夜夜爽一区| 久久久噜噜噜久久人人看| 国产91在线观看丝袜| 亚洲美女在线国产| 欧美美女bb生活片| 激情成人综合网| 国产精品乱子久久久久| 91福利在线免费观看| 奇米精品一区二区三区在线观看| 久久影院电视剧免费观看| 成人午夜大片免费观看| 亚洲欧美一区二区三区极速播放 | 国产高清精品在线| 日韩美女视频一区| 欧美一区在线视频| 国产精品888| 亚洲福利国产精品|