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

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

?? transform.c

?? 從sourceforge下的圖像壓縮源碼
?? C
字號:
/***
 * transform.c
 ***
 * soucast knihovny libopen
 * 2007-04-29
 * xbarin02@stud.fit.vutbr.cz  
 ***
 * soubor s fcemi, kt. provadeji transformace (2D (I)DWT a 2D (I)DCT)
 */

// pomocne deklarace
void fwt(double *const_input, double *output);
void fwt_col(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH], int x);

/***
 * dopredna 2D DWT
 */ 
void fwt2D(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH])
{
	for(unsigned y=0; y<LENGTH; y++)
		fwt(const_input[y],output[y]);
	for(unsigned x=0; x<LENGTH; x++)
		fwt_col(output,output,x);
}

/***
 * dopredna 1D/sloupcova DWT (vyuziva radkovou)
 */ 
void fwt_col(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH], int x)
{
	static double var_input[LENGTH];
	for(unsigned y=0; y<LENGTH; y++)
		var_input[y] = const_input[y][x];
	static double var_output[LENGTH];
	fwt(var_input,var_output);
	for(unsigned y=0; y<LENGTH; y++)
		output[y][x] = var_output[y];
}

/***
 * dopredna 1D/radkova DWT (haarova)
 */
void fwt(double *const_input, double *output)
{
	static double input[LENGTH];
	memcpy(input,const_input,sizeof(double)*LENGTH);
	for(int length = LENGTH >> 1; ; length >>= 1)
	{
		for(int i = 0; i < length; i++)
		{
			double sum = (input[i*2]+input[i*2+1])/2;
			double difference = (input[i*2]-input[i*2+1])/2;
			output[i] = sum;
			output[length+i] = difference;
		}
		if(length == 1) 
			return;
		memcpy(input,output,sizeof(double)*length);
	}
}

// pomocne deklarace
void iwt(double *const_input, double *output);
void iwt_col(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH], int x);

/***
 * inverzni 2D DWT
 */ 
void iwt2D(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH])
{
	for(unsigned x=0; x<LENGTH; x++)
		iwt_col(const_input,output,x);
	for(unsigned y=0; y<LENGTH; y++)
		iwt(output[y],output[y]);
}

/***
 * inverzni 1D/sloupcova DWT (vyuziva radkovou)
 */ 
void iwt_col(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH], int x)
{
	static double var_input[LENGTH];
	for(unsigned y=0; y<LENGTH; y++)
		var_input[y] = const_input[y][x];
	static double var_output[LENGTH];
	iwt(var_input,var_output);
	for(unsigned y=0; y<LENGTH; y++)
		output[y][x] = var_output[y];
}

/***
 * inverzni 1D/radkova DWT (haarova)
 */ 
void iwt(double *const_input, double *output)
{
	static double input[LENGTH];
	memcpy(input,const_input,sizeof(double)*LENGTH);
	for(int length = 1; ; length <<= 1)
	{
		for(int i = 0; i < length; i++)
		{
			double a = (input[i] - input[length+i]);
			double b = (input[i] + input[length+i]);
			output[i*2] = b;
			output[i*2+1] = a;
		}
		if(length == LENGTH >> 1) 
			return;
		memcpy(input,output,sizeof(double)*length*2);
	}
}

// ----------------------------------------------------------------------------

// pomocne deklarace
void fct(double *input, double *output);
void fct_col(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH], int x);

/***
 * dopredna 2D DCT (optimalizovany posun)
 */ 
void fct2D(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH])
{
	for(unsigned y=0; y<LENGTH; y++)
		fct(const_input[y],output[y]);
	for(unsigned x=0; x<LENGTH; x++)
		fct_col(output,output,x);
	output[0][0] -= 8192.0;
}

/***
 * dopredna 1D DCT/sloupcova (vyuziva radkovou)
 */ 
void fct_col(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH], int x)
{
	static double var_input[LENGTH];
	for(unsigned y=0; y<LENGTH; y++)
		var_input[y] = const_input[y][x];
	static double var_output[LENGTH];
	fct(var_input,var_output);
	for(unsigned y=0; y<LENGTH; y++)
		output[y][x] = var_output[y];
}

// pomocna tabulka pro optimalizaci (predpocita pomocne koeficienty)
double fct_tbl[LENGTH][LENGTH];

/***
 * dopredna 1D DCT/radkova (s optimalizaci, bez posunu)
 */ 
void fct(double *input, double *output)
{
	static int first = 0;
	if(0 == first)
	{
		for(int h=0; h<LENGTH; h++)
			for(int j=0; j<LENGTH; j++)
				fct_tbl[h][j] = cos( (M_PI/LENGTH)*h*(j+0.5) );
		first++;
	}

	for(int h=0; h<LENGTH; h++)
	{
		double sum = 0;
		for(int j=0; j<LENGTH; j++)
			sum += input[j]*fct_tbl[h][j];
		output[h] = sum;
	}
}

// pomocne deklarace
void ict(double *input, double *output);
void ict_col(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH], int x);

/***
 * inverzni 2D DCT (opt. posun)
 */ 
void ict2D(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH])
{
	const_input[0][0] += 8192.0;
	double tmp_output[LENGTH][LENGTH];
	for(unsigned x=0; x<LENGTH; x++)
		ict_col(const_input,tmp_output,x);
	for(unsigned y=0; y<LENGTH; y++)
		ict(tmp_output[y],output[y]);
}

/***
 * inverzni 1D/sloupcova DCT
 */ 
void ict_col(double const_input[LENGTH][LENGTH], double output[LENGTH][LENGTH], int x)
{
	static double var_input[LENGTH];
	for(unsigned y=0; y<LENGTH; y++)
		var_input[y] = const_input[y][x];
	static double var_output[LENGTH];
	ict(var_input,var_output);
	for(unsigned y=0; y<LENGTH; y++)
		output[y][x] = var_output[y];
}

// pro predpocitane pomocne koeficienty
double ict_tbl[LENGTH][LENGTH];

/***
 * inverzni 1D DCT (opt., bez posunu)
 */ 
void ict(double *input, double *output)
{
	static int first = 0;
	if(0 == first)
	{
		for(int h=0; h<LENGTH; h++)
			for(int j=1; j<LENGTH; j++)
				ict_tbl[h][j] = cos( (M_PI/LENGTH)*j*(h+0.5) );
		first++;
	}

	for(int h=0; h<LENGTH; h++)
	{
		double sum = 0;
		for(int j=1; j<LENGTH; j++)
			sum += input[j]*ict_tbl[h][j];
		sum += 0.5*input[0];
		sum *= 2/(double)LENGTH;
		output[h] = sum;
	}
}

/***
 * ladici fce pro hromadny posun matice
 */ 
void shift2D(double input2D[LENGTH][LENGTH], double output2D[LENGTH][LENGTH], double shift)
{
	for(unsigned y=0; y<LENGTH; y++)
	{
		for(unsigned x=0; x<LENGTH; x++)
			output2D[y][x] = input2D[y][x] + shift;
	}
}

/***
 * ladici fce pro vypis matice (printf)
 */ 
void print(double a[LENGTH][LENGTH])
{
	for(unsigned y=0; y<LENGTH; y++)
	{
		for(unsigned x=0; x<LENGTH; x++)
			printf("%8.3f ",a[y][x]);
		printf("\n");
	}
	printf("\n");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩另类视频免费观看| 国产精品理论在线观看| 亚洲欧洲精品天堂一级| 天堂va蜜桃一区二区三区| 高清久久久久久| 欧美精品xxxxbbbb| 亚洲欧美日韩中文字幕一区二区三区| 蜜桃视频在线观看一区| 欧美色精品在线视频| 综合久久久久综合| 成人午夜av影视| 国产色产综合产在线视频| 免播放器亚洲一区| 欧美丰满少妇xxxbbb| 一区二区三区成人| 99久久99久久精品免费观看| 久久久久高清精品| 精品一区二区免费| 欧美成人猛片aaaaaaa| 婷婷国产v国产偷v亚洲高清| 91看片淫黄大片一级| 日本一区二区综合亚洲| 国产精品一区二区三区99| 精品国产乱码久久| 久久99久久精品| 精品国产凹凸成av人导航| 蜜臀国产一区二区三区在线播放| 欧美日韩二区三区| 五月天激情综合| 欧美日韩国产一级片| 亚洲va国产天堂va久久en| 欧美综合色免费| 午夜婷婷国产麻豆精品| 91精品福利在线一区二区三区| 亚洲va韩国va欧美va精品| 欧美精品一二三四| 日韩经典中文字幕一区| 欧美一区二区三区四区久久| 青青草精品视频| 精品国产三级电影在线观看| 狠狠色丁香婷综合久久| 久久嫩草精品久久久精品 | 久久免费看少妇高潮| 美女一区二区三区在线观看| 精品久久久久99| 国产成人精品一区二区三区网站观看| 国产精品入口麻豆九色| 色综合久久综合中文综合网| 亚洲成人精品一区| 欧美videos大乳护士334| 国产综合色精品一区二区三区| 久久久久久久久一| 91网上在线视频| 午夜精品影院在线观看| 2023国产精品自拍| 成人激情文学综合网| 亚洲综合激情另类小说区| 在线不卡中文字幕| 国产成人av资源| 亚洲午夜电影网| 精品国一区二区三区| 99视频有精品| 青娱乐精品视频| 中文字幕亚洲综合久久菠萝蜜| 欧美三级中文字幕在线观看| 久久99精品国产麻豆不卡| 综合欧美一区二区三区| 日韩一级完整毛片| 99国产精品久久久久久久久久久| 天天色综合天天| 国产精品天干天干在观线| 91麻豆精品国产91久久久久 | 亚洲二区在线观看| 久久久美女毛片| 欧美精品日韩一区| 丰满亚洲少妇av| 免费一级片91| 亚洲乱码国产乱码精品精98午夜 | 日韩欧美国产午夜精品| 99re视频精品| 国产在线视视频有精品| 一区二区免费在线| 国产欧美一区二区三区在线看蜜臀 | 国模无码大尺度一区二区三区| 亚洲图片另类小说| 26uuu色噜噜精品一区二区| 欧美日韩一区二区电影| av福利精品导航| 九九九久久久精品| 日韩中文字幕麻豆| 亚洲美女偷拍久久| 国产精品美女视频| 久久精品日韩一区二区三区| 日韩一区国产二区欧美三区| 欧美视频第二页| 91麻豆精品一区二区三区| 国产成人丝袜美腿| 国产一区二区三区精品视频| 日本视频免费一区| 午夜电影一区二区三区| 一区二区三区不卡视频| 日韩毛片一二三区| 国产精品第13页| 国产精品欧美精品| 中文字幕免费观看一区| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩欧美的一区二区| 欧美蜜桃一区二区三区| 欧美午夜在线一二页| 欧美日韩色综合| 欧美色中文字幕| 欧美视频在线一区二区三区 | 欧美国产亚洲另类动漫| 国产视频一区二区三区在线观看| 欧美大胆人体bbbb| 精品国产乱码久久久久久图片 | 亚洲综合一区二区| 一区二区三区四区在线| 一区二区三区**美女毛片| 亚洲国产毛片aaaaa无费看 | 一区二区不卡在线视频 午夜欧美不卡在 | 国产网站一区二区| 国产偷国产偷精品高清尤物 | 免费成人在线观看| 国产一区视频网站| 高潮精品一区videoshd| 97久久久精品综合88久久| 色先锋资源久久综合| 欧美亚洲国产bt| 日韩小视频在线观看专区| 精品久久久网站| 国产精品天天摸av网| 一区二区不卡在线播放| 免费久久99精品国产| 国产精品伊人色| 97精品国产97久久久久久久久久久久| 色偷偷一区二区三区| 欧美高清精品3d| 久久午夜色播影院免费高清| 亚洲天堂网中文字| 调教+趴+乳夹+国产+精品| 国产一区二区三区久久久| 99re视频精品| 精品精品国产高清a毛片牛牛| 亚洲成人动漫在线免费观看| 国产精品午夜久久| 国产精品视频一二三| 亚洲人成小说网站色在线| 亚洲成人福利片| 国产a视频精品免费观看| 日本精品裸体写真集在线观看| 欧美久久久久久蜜桃| 久久精品视频免费观看| 亚洲国产精品一区二区久久恐怖片 | 欧美精品一区二区三区在线播放| 中国色在线观看另类| 午夜视频一区二区| 懂色av一区二区在线播放| 欧美日本韩国一区二区三区视频 | 在线综合视频播放| 国产欧美精品一区二区色综合 | 香蕉影视欧美成人| 日韩美女视频在线| 日本一区二区三区电影| 亚洲国产日韩一级| 99久久免费视频.com| 日韩欧美一区二区在线视频| 亚洲精品自拍动漫在线| 国产一区二区三区高清播放| 3d成人动漫网站| 夜夜揉揉日日人人青青一国产精品 | 国产在线国偷精品免费看| 欧美日韩国产首页| 亚洲男人的天堂网| 国产高清不卡二三区| 日韩一区二区三区在线| 洋洋av久久久久久久一区| av午夜一区麻豆| 欧美国产视频在线| 国产经典欧美精品| 欧美成人国产一区二区| 日韩av成人高清| 欧美日韩视频在线观看一区二区三区 | 国产精品丝袜黑色高跟| 国产成人午夜精品5599| 日本中文字幕不卡| 91在线视频免费观看| 久久久久久电影| 国内精品伊人久久久久影院对白| 欧美日韩一级二级三级| 亚洲精品国产精华液| 91丨九色丨蝌蚪富婆spa| 国产午夜精品一区二区三区视频| 韩国精品久久久| 精品国产亚洲在线| 国内精品久久久久影院色| 精品国产电影一区二区| 久久www免费人成看片高清| 精品国产青草久久久久福利| 激情深爱一区二区|