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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fourier.h

?? 實現(xiàn)jpeg的壓縮編碼功能 在demo2的工程文件中即可查看
?? H
字號:
/*************************************************************
Filename:	Fourier.h.
Writer:		Dai Zhiheng.
Time:		2005-3-27.
**************************************************************/
#include <math.h>
#include "myComplex.h"
#define PI	3.141593
/*************************************************************
函數(shù)功能:	產(chǎn)生倒序序列
			case inout r = 3; this function will format *a as
			{0、4、2、6、1、5、3、7}
**************************************************************/
void reverseOrder(int *a, int r)
{
	int count = 1 << r ;
	for(int j = 0; j < count; j++)
	{
		int p=0;
		for(int i = 0; i < r; i++)
		{
			if (j & (1<<i))
			{
					p += 1 << (r-i-1);
			}
		}
		*(a+j) = p;
	}
}
/*************************************************************
函數(shù)功能:	求矩陣的轉(zhuǎn)置
parameter:
			*f		數(shù)據(jù)指針
			m,n		矩陣維數(shù)
**************************************************************/
void complexArrayT( double *f, long m, long n)
{
	double *X = new  double [m*n*2];
	for(int i=0; i<m; i++)
		for(int j=0; j<n; j++)
		{
			*(X + i*2 + m*j*2) = *(f + i*n*2 +j*2);
			*(X + i*2 + m*j*2 +1) = *(f + i*n*2 +j*2 +1);
		}
	for(long t=0; t<m*n*2; t++)
		*(f+t) = *(X+t);
	delete [] X;
}
/*************************************************************
函數(shù)功能:	1-D,count行,r階Fourier變換
parameter:
			*f		時域數(shù)據(jù)的指針
			*F		頻域數(shù)據(jù)的指針
			 r		Fourier變換的階數(shù)基數(shù)
**************************************************************/
void DLineFourier(double *f, double *F, long r)
{
	int count = 1 << r ;
	int bfSize;
	int p;
	int *order = new int [count];
	double *W  = new double [count];
	double *X  = new double [count*count*2];
	double *X1 = new double [count*count*2];
	double *X2 = new double [count*count*2];
	//計算變換基W
	for(int i=0; i<count/2; i++)
	{
		double angle =-i*2*PI/count;
		*(W + i*2) = cos( angle ) ;
		*(W + i*2 + 1) = sin( angle ) ;
	}

	//產(chǎn)生倒序序列
	reverseOrder(order, r);
	//數(shù)據(jù)從 f (按每行)倒序到 X1
	for(int m=0; m< count; m++)
		for(int n=0; n< count; n++)
		{
			*(X1 + count*m*2 + n*2) = *(f + count*m*2 + (*(order+n))*2 );
			*(X1 + count*m*2 + n*2 + 1) = *(f + count*m*2 + (*(order+n))*2 +1 );
		}
		
	//Butterfly algorithm
	for(int l=0; l< count; l++)
	{
		for(int k=0; k<r; k++ )
		{	
			for(int j=0; j< 1<<(r-k-1); j++)
			{
				bfSize = 1<<k;
				for(int i=0; i<bfSize; i++)
				{
					p = j*bfSize*2;
					double *A  = new double[2];
					complexMUL(A, X1 + count*l*2 + i*2 + p*2 + bfSize*2, W + i*(1<<(r-k)) );
					complexADD(X2 + count*l*2 + i*2 + p*2 , X1 + count*l*2 + i*2 + p*2 , A);
					
					complexDEC(X2 + count*l*2 + i*2 + p*2 + bfSize*2, X1 + count*l*2 + i*2 + p*2, A);
					delete [] A;
				}
			}
			//交換數(shù)據(jù)
			for( int m=0; m< count*2; m++)
			{
				*(X + count*l*2 + m)	= *(X1 + count*l*2 + m);
			}
			for( m=0; m< count*2; m++)
			{
				*(X1 + count*l*2 + m)	= *(X2 + count*l*2 + m);
			}
			for( m=0; m< count*2; m++)
			{
				*(X2 + count*l*2 + m)	= *(X  + count*l*2 + m);
			}
		}
	}

	for(long t=0; t<count*count*2; t++)
	{
		*(F+t) = *(X1 + t);
	}
	delete [] W;
	delete [] order;
	delete [] X;
	delete [] X1;
	delete [] X2;
}
/*************************************************************
函數(shù)功能:	2-D,count行,count列,r階Fourier變換
parameter:
			*f		時域數(shù)據(jù)的指針
			*F		頻域數(shù)據(jù)的指針
			 r		Fourier變換的階數(shù)基數(shù)
**************************************************************/
void D2Fourier( double *f,  double *F, long r)
{
	int count = 1 << r ;
	double *X1 = new  double [count*count*2];
	double *X2 = new  double [count*count*2];
	//行的Fourier變換
	DLineFourier(f, X1, r);
	//轉(zhuǎn)置
	complexArrayT(X1, count, count);
	//列的Fourier變換
	DLineFourier(X1, X2, r);
	//轉(zhuǎn)置
	complexArrayT(X2, count, count);
	for(long m=0; m< count*count*2; m++)
		{
			*(F + m) = *(X2 + m);
		}
	delete [] X1;
	delete [] X2;
}
/*************************************************************
函數(shù)功能:	2-D圖象的r階Fourier變換
parameter:
			*f		時域數(shù)據(jù)的指針
			*F		頻域數(shù)據(jù)的指針
			 height	圖片的長度
			 width	圖片的寬度
			 r		Fourier變換的階數(shù)基數(shù)
**************************************************************/
void D2BMPFourier( double *f,  double *F, long height, long width, long r)
{
	int count = 1 << r ;
	double *X1 = new  double [count*count*2];
	double *X2 = new  double [count*count*2];
	for(int i=0; i<(height/count); i++)
		for(int j=0; j<(width/count); j++)
		{
			//對于每個count * count 塊
			for(int m=0; m< count; m++)
				for(int n=0; n< count*2; n++)
				{
					*(X1 + m*count*2 +n) = *(f + width*i*count*2 + width*m*2 + count*j*2 + n);
				}
			//塊的Fourier變換
			D2Fourier(X1, X2, r);
			//將數(shù)據(jù)輸出到頻域
			for(m=0; m< count; m++)
				for(int n=0; n< count*2; n++)
				{
					*(F + width*i*count*2 + width*m*2 + count*j*2 + n) = *(X2 + m*count*2 +n);
				}
		}
	delete [] X1;
	delete [] X2;
}
/*************************************************************
函數(shù)功能:	2-D,count行,count列,r階Fourier變換
parameter:
			*f		時域數(shù)據(jù)的指針
			*F		頻域數(shù)據(jù)的指針
			 r		Fourier變換的階數(shù)基數(shù)
**************************************************************/
void ID2Fourier( double *f,  double *F, long r)
{
	int count = 1 << r ;
	double *X1 = new  double [count*count*2];
	double *X2 = new  double [count*count*2];

	//行的Fourier變換
	//求復(fù)共軛
	for(int m=0; m< count; m++)
		for(int n=0; n< count; n++)
			{
				*(X1 + m*count*2 + n*2 ) = *(f + m*count*2 + n*2 );
				*(X1 + m*count*2 + n*2 +1) = -*(f + m*count*2 + n*2 +1);
			}
	DLineFourier(X1, X2, r);
	//求復(fù)共軛
	for(m=0; m< count; m++)
		for(int n=0; n< count; n++)
			{
				*(X1 + m*count*2 + n*2 ) = *(X2 + m*count*2 + n*2 )/count;
				*(X1 + m*count*2 + n*2 +1) = -*(X2 + m*count*2 + n*2 +1)/count;
			}

	//轉(zhuǎn)置
	complexArrayT(X1, count, count);

	//列的Fourier變換
	//求復(fù)共軛
	for(m=0; m< count; m++)
		for(int n=0; n< count; n++)
			{
				*(X2 + m*count*2 + n*2 ) = *(X1 + m*count*2 + n*2 );
				*(X2 + m*count*2 + n*2 +1) = -*(X1 + m*count*2 + n*2 +1);
			}
	DLineFourier(X2, X1, r);
	//求復(fù)共軛
	for(m=0; m< count; m++)
		for(int n=0; n< count; n++)
			{
				*(X2 + m*count*2 + n*2 ) = *(X1 + m*count*2 + n*2 )/count;
				*(X2 + m*count*2 + n*2 +1) = -*(X1 + m*count*2 + n*2 +1)/count;
			}	
	//轉(zhuǎn)置
	complexArrayT(X2, count, count);
	for(long t=0; t< count*count*2; t++)
		{
			*(F + t) = *(X2 + t);
		}
	delete [] X1;
	delete [] X2;
}
/*************************************************************
函數(shù)功能:	2-D圖象的r階Fourier逆變換
parameter:
			*F		頻域數(shù)據(jù)的指針
			*f		時域數(shù)據(jù)的指針
			 height	圖片的長度
			 width	圖片的寬度
			 r		Fourier變換的階數(shù)基數(shù)
**************************************************************/
void ID2BMPFourier( double *F,  double *f, long height, long width, long r)
{
	int count = 1 << r ;
	double *X1 = new double [count*count*2];
	double *X2 = new double [count*count*2];
	for(int i=0; i<(height/count); i++)
		for(int j=0; j<(width/count); j++)
		{
			//對于每個count * count 塊
			for(int m=0; m< count; m++)
				for(int n=0; n< count*2; n++)
				{
					*(X1 + m*count*2 + n)
						= *(F + width*i*count*2 + width*m*2 + count*j*2 + n);
				}

			//塊的Fourier變換
			ID2Fourier(X1, X2, r);

			//將數(shù)據(jù)輸出至?xí)r域
			for(m=0; m< count; m++)
				for(int n=0; n< count*2; n++)
				{
					*(f + width*i*count*2 + width*m*2 + count*j*2 + n)
						= (*(X2 + m*count*2 + n));
				}
		}
	delete [] X1;
	delete [] X2;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区按摩在线观看| 亚洲精品久久久蜜桃| 最新中文字幕一区二区三区| 一级特黄大欧美久久久| 男女男精品视频| 国产成人精品影视| 在线影院国内精品| 26uuu色噜噜精品一区| 亚洲日穴在线视频| 久热成人在线视频| 99在线精品视频| 日韩亚洲欧美高清| 亚洲美女精品一区| 久久99精品久久久| 色综合久久久久综合体| 欧美mv日韩mv亚洲| 亚洲乱码精品一二三四区日韩在线| 日本中文字幕一区二区视频 | 欧美日韩dvd在线观看| 精品国产91乱码一区二区三区 | 欧美专区日韩专区| 精品国产一区二区三区久久影院| 1区2区3区欧美| 精品一区二区综合| 欧美系列亚洲系列| 国产欧美日韩亚州综合| 日韩av不卡在线观看| 一本到三区不卡视频| 精品国产一区二区三区不卡 | 欧美日韩成人综合天天影院| 国产区在线观看成人精品| 日产国产欧美视频一区精品 | 视频一区在线播放| 99精品久久免费看蜜臀剧情介绍| 精品国产自在久精品国产| 亚洲成av人片| 色噜噜久久综合| 国产亚洲精品久| 轻轻草成人在线| 欧洲精品视频在线观看| 欧美国产精品专区| 国产在线视频一区二区三区| 欧美福利一区二区| 一区二区在线观看免费| 成人免费的视频| 久久精品亚洲乱码伦伦中文| 男女男精品视频网| 337p亚洲精品色噜噜| 一区二区视频在线| 91色九色蝌蚪| 国产精品乱码一区二三区小蝌蚪| 激情综合色综合久久| 欧美一区二区三区在线视频| 亚洲妇女屁股眼交7| 色综合久久天天| 亚洲三级在线免费| 成人精品视频一区二区三区尤物| 欧美精品一区二区三区很污很色的 | 韩国欧美国产1区| 制服丝袜亚洲精品中文字幕| 亚洲国产精品视频| 欧美性大战久久久久久久蜜臀| 亚洲日本va在线观看| 成人精品鲁一区一区二区| 久久久久9999亚洲精品| 国产一区91精品张津瑜| 久久精品欧美一区二区三区麻豆| 久88久久88久久久| 精品国产一区二区三区四区四| 久热成人在线视频| 精品成人私密视频| 国产成人8x视频一区二区| 亚洲国产成人自拍| 99在线热播精品免费| 亚洲欧美色一区| 在线观看国产91| 亚洲国产日韩精品| 欧美剧情电影在线观看完整版免费励志电影| 一区二区欧美在线观看| 色婷婷av一区二区三区软件| 亚洲一区在线电影| 欧美日韩精品免费| 秋霞午夜鲁丝一区二区老狼| 日韩欧美国产一区在线观看| 久久99精品国产麻豆婷婷洗澡| 久久麻豆一区二区| 成人福利电影精品一区二区在线观看 | 日韩电影一区二区三区四区| 欧美一级一级性生活免费录像| 久久精品国产精品亚洲红杏| 久久婷婷一区二区三区| 国产v日产∨综合v精品视频| 国产精品不卡一区二区三区| 91黄视频在线| 午夜欧美大尺度福利影院在线看| 日韩美女视频在线| 成人性视频免费网站| 亚洲精品第1页| 91精品国产麻豆国产自产在线| 国内成人自拍视频| 成人欧美一区二区三区白人| 欧美探花视频资源| 久久99国产精品尤物| 国产精品久久久久久久久搜平片| 91久久一区二区| 奇米精品一区二区三区四区 | 成人免费视频免费观看| 亚洲国产成人高清精品| 日韩欧美国产三级| 99精品国产视频| 日本人妖一区二区| 亚洲国产高清不卡| 欧美理论在线播放| 粉嫩一区二区三区性色av| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩视频一区二区| 国产美女精品在线| 亚洲一区视频在线| 国产亚洲va综合人人澡精品 | 亚洲超碰精品一区二区| 久久精品一区四区| 91成人在线精品| 国产传媒欧美日韩成人| 亚洲欧美一区二区三区极速播放| 欧美一级高清片在线观看| av在线不卡免费看| 美女诱惑一区二区| 亚洲裸体在线观看| 精品福利一区二区三区| 99久久免费精品高清特色大片| 人人精品人人爱| 亚洲激情男女视频| 久久久午夜精品理论片中文字幕| 欧美午夜一区二区三区免费大片| 国产精品性做久久久久久| 亚洲成av人片观看| 日韩一区日韩二区| 国产午夜精品一区二区三区视频 | 免费精品视频在线| 依依成人综合视频| 国产精品青草久久| 日韩免费在线观看| 欧美在线综合视频| 成人免费福利片| 国产一区二区美女| 日韩高清不卡在线| 亚洲一区成人在线| 国产精品黄色在线观看| 欧美精品一区二区三区视频| 欧美精品在欧美一区二区少妇| 91麻豆国产在线观看| 国产黄色91视频| 精品一区二区三区影院在线午夜 | 日韩一级片在线观看| 在线影院国内精品| 91毛片在线观看| 成人激情av网| 国产91丝袜在线播放| 久久99国产精品尤物| 日韩福利视频导航| 亚洲一卡二卡三卡四卡 | 欧美日韩一级视频| 日本电影欧美片| 99精品国产热久久91蜜凸| 国产黑丝在线一区二区三区| 国产一区二区在线看| 久久福利资源站| 秋霞成人午夜伦在线观看| 日韩专区一卡二卡| 天天av天天翘天天综合网色鬼国产| 一区二区三区在线播| 一区二区三区四区不卡视频| 中文字幕视频一区二区三区久| 欧美激情一区二区三区蜜桃视频| 久久亚洲一级片| 久久天堂av综合合色蜜桃网| 精品国免费一区二区三区| 日韩欧美aaaaaa| 久久综合久久鬼色中文字| 久久久久久免费| 欧美激情一区二区三区四区| 国产精品三级电影| 国产精品二区一区二区aⅴ污介绍| 国产精品灌醉下药二区| 国产精品理论片在线观看| 国产精品久久网站| 亚洲欧美在线视频观看| 亚洲裸体在线观看| 亚洲图片欧美色图| 日韩成人av影视| 久久99国产精品久久99 | 日本一区二区综合亚洲| 中文字幕成人在线观看| 中文字幕一区二区三区四区| 亚洲女女做受ⅹxx高潮| 一区二区三区高清| 日韩中文字幕麻豆| 经典三级一区二区| 成人免费视频免费观看| 91福利区一区二区三区|