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

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

?? wtransform.c

?? 完整的ezw小波編碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Port to C from C++
 *
 * Mow-Song, Ng 2/9/2002
 * msng@mmu.edu.my
 * http://www.pesona.mmu.edu.my/~msng
 *
 * I do not claim copyright to the code, but if you use them or modify them,
 * please drop me a mail.
 *
 */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Origianl copyright info */
/*---------------------------------------------------------------------------*/
// Baseline Wavelet Transform Coder Construction Kit
//
// Geoff Davis
// gdavis@cs.dartmouth.edu
// http://www.cs.dartmouth.edu/~gdavis
//
// Copyright 1996 Geoff Davis 9/11/96
//
// Permission is granted to use this software for research purposes as
// long as this notice stays attached to this software.
//
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/

#include "wtransform.h"


/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
WTRANSFORM *WaveletTransformAlloc(WAVELET *wavelet, FIMAGE *image, int nsteps, 
											 int symmetric)
{
	WTRANSFORM *WTransform;

	if ((WTransform=(WTRANSFORM *)malloc(sizeof(WTRANSFORM)))==NULL){
		return NULL;
	}
	
	WTransform->wavelet=wavelet;
	WTransform->nsteps=nsteps;
	WTransform->symmetric=symmetric;

	WTransform->value=NULL;

	if (image!=NULL){
		WTransform->hsize=image->xsize;
		WTransform->vsize=image->ysize;
		WaveletTransformForward(WTransform, image, wavelet, nsteps, symmetric);
	}
	else{
		WTransform->hsize=WTransform->vsize=0;
	}
	return WTransform;
}

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
WTRANSFORM *WaveletTransformAllocBlank(WAVELET *wavelet, 
								int hsize, int vsize, int nsteps, int symmetric)
{	
	//int i;
	WTRANSFORM *WTransform;

	if ((WTransform=(WTRANSFORM *)malloc(sizeof(WTRANSFORM)))==NULL){
		return NULL;
	}
	
	WTransform->hsize=hsize;
	WTransform->vsize=vsize;
	WTransform->wavelet=wavelet;
	WTransform->nsteps=nsteps;
	WTransform->symmetric=symmetric;

	//- Strange, now we set them back to 0 & -1
	//WTransform->nsteps=0;
	//WTransform->symmetric=-1;
	WaveletTransformInit(WTransform);
	
	//for (i=0; i<hsize*vsize; i++){
	//	WTransform->value[i]=0;
	//}

	return WTransform;
}


/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
WTRANSFORM *WaveletTransformAllocCopy(WTRANSFORM *WTransformSrc)
{
	int i;
	WTRANSFORM *WTransform;

	if ((WTransform=(WTRANSFORM *)malloc(sizeof(WTRANSFORM)))==NULL){
		return NULL;
	}
	
	WTransform->wavelet = WTransformSrc->wavelet;
	WTransform->hsize = WTransformSrc->hsize;
	WTransform->vsize = WTransformSrc->vsize;
	WTransform->nsteps = WTransformSrc->nsteps;
	WTransform->symmetric = WTransformSrc->symmetric;
	
	if (WTransformSrc->value == NULL) {
		WTransform->value = NULL;
	} 
	else {
		WaveletTransformInit(WTransform);
		for (i = 0; i < WTransform->hsize*WTransform->vsize; i++)
			WTransform->value[i] = WTransformSrc->value[i];
	}
	
	return WTransform;

}

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
void WaveletTransformDealloc(WTRANSFORM *WTransform)
{
	WaveletTransformFreeAll(WTransform);
	free(WTransform);
}

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
Real WaveletTransformGetValue(WTRANSFORM *WaveletTransform, int scale, 
										int orientation, int x, int y)
{
	int idx;
	if (scale==0){
		/* special case */
		idx = 0;
	}
	else{
		idx = 3*scale - 2 + orientation;
	}
	
	return (WaveletTransform->subbandPtr[idx]
			[y*WaveletTransform->subbandHSize[idx] + x]);
}

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
void WaveletTransformSetValue(WTRANSFORM *WaveletTransform, int scale, 
										int orientation, int x, int y, Real val)
{
	int idx;
	if (scale==0){
		/* special case */
		idx = 0;
	}
	else{
		idx = 3*scale - 2 + orientation;
	}
	
	WaveletTransform->subbandPtr[idx]
			[y*WaveletTransform->subbandHSize[idx] + x] = val;
	
	return;
}

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
void WaveletTransformForward(WTRANSFORM *WTransform, FIMAGE *image, 
									  WAVELET *wavelet, int nsteps, int symmetric)
{
	Real *temp;

	// clear out old info and set up subband pointers
	WaveletTransformFreeAll(WTransform);
	WTransform->hsize = image->xsize;
	WTransform->vsize = image->ysize;
	WTransform->wavelet = wavelet;
	WTransform->nsteps = nsteps;
	WTransform->symmetric = symmetric;
	WaveletTransformInit (WTransform);
	
	temp = (Real *)calloc(WTransform->hsize*WTransform->vsize, sizeof(Real));

	WaveletTransform2D(WTransform->wavelet, image->pixelLinear, 
		temp, WTransform->hsize, WTransform->vsize,
		WTransform->nsteps, WTransform->symmetric);

	// linearize data
	MallatToLinear(WTransform, temp);
	free(temp);

}


/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
void WaveletTransformInvert(WTRANSFORM *WTransform, FIMAGE *invertedImage)
{
	Real *temp;
	
	temp = (Real *)calloc(WTransform->hsize*WTransform->vsize, sizeof(Real));
	
	/* put data in Mallat format*/
	/* note that the transform->value is always in linear format */
	LinearToMallat (WTransform, temp);
	
	WaveletInvert2D(WTransform->wavelet, temp, invertedImage->pixelLinear,
		WTransform->hsize, WTransform->vsize, WTransform->nsteps, WTransform->symmetric);
	free(temp);
}

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
FIMAGE *WaveletTransformInvertThis(WTRANSFORM *WTransform)
{
	FIMAGE *image;
	
	image = FImageAlloc(WTransform->hsize, WTransform->vsize);

   WaveletTransformInvert(WTransform, image);

   return image;
}


/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
void MallatToLinear(WTRANSFORM *WTransform, Real *mallat)
{
	int i, j, k;
	int *lowHSize, *lowVSize;
	
   /* arrays of top left corner coordinates for subbands */
	lowHSize = (int *) calloc(WTransform->nsteps, sizeof(int));
	lowVSize = (int *) calloc(WTransform->nsteps, sizeof(int));
	
	/* highsed scale size */
	lowHSize[WTransform->nsteps-1] = (WTransform->hsize+1)/2;
	lowVSize[WTransform->nsteps-1] = (WTransform->vsize+1)/2;
	
	for (i = WTransform->nsteps-2; i >= 0; i--) {
		lowHSize[i] = (lowHSize[i+1]+1)/2;
		lowVSize[i] = (lowVSize[i+1]+1)/2;
	}
	
	// move transformed image (in Mallat order) into linear array structure
	// special case for LL subband
	for (j = 0; j < WTransform->subbandVSize[0]; j++){
		for (i = 0; i < WTransform->subbandHSize[0]; i++){
			WTransform->subbandPtr[0][j*WTransform->subbandHSize[0]+i] 
            = mallat[j*WTransform->hsize+i];
		}
	}
		
	for (k = 0; k < WTransform->nsteps; k++) {
		for (j = 0; j < WTransform->subbandVSize[k*3+1]; j++){
			for (i = 0; i < WTransform->subbandHSize[k*3+1]; i++){
					WTransform->subbandPtr[k*3+1][j*WTransform->subbandHSize[k*3+1]+i] = 
					mallat[j*WTransform->hsize+(lowHSize[k]+i)];
			}
		}
		
		for (j = 0; j < WTransform->subbandVSize[k*3+2]; j++){
			for (i = 0; i < WTransform->subbandHSize[k*3+2]; i++){
				WTransform->subbandPtr[k*3+2][j*WTransform->subbandHSize[k*3+2]+i] = 
						mallat[(lowVSize[k]+j)*WTransform->hsize+i];
			}
		}
		
		for (j = 0; j < WTransform->subbandVSize[k*3+3]; j++){
			for (i = 0; i < WTransform->subbandHSize[k*3+3]; i++){
				WTransform->subbandPtr[k*3+3][j*WTransform->subbandHSize[k*3+3]+i] = 
					mallat[(lowVSize[k]+j)*WTransform->hsize+(lowHSize[k]+i)];
			}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频国产资源| 免费成人av在线| 国产精品嫩草影院av蜜臀| 欧美一二三在线| 欧美一区二区私人影院日本| 欧美日韩国产电影| 欧美日韩国产在线播放网站| 欧美日韩成人高清| 精品少妇一区二区三区日产乱码 | 国产欧美精品一区二区色综合| 欧美一区二区大片| 精品国产在天天线2019| 欧美mv日韩mv国产| 国产欧美日韩综合| 亚洲日本欧美天堂| 亚洲一区二区三区四区的| 亚洲精品日韩综合观看成人91| 一区二区三区中文免费| 天堂va蜜桃一区二区三区漫画版| 秋霞电影一区二区| 国产成人高清视频| 欧美最新大片在线看| 7777精品伊人久久久大香线蕉的| 日韩精品一区二区三区swag| 国产精品天干天干在观线| 亚洲欧美日韩人成在线播放| 午夜精品aaa| 国产成人精品一区二区三区四区 | 91亚洲精品一区二区乱码| 色94色欧美sute亚洲线路一ni | 亚洲欧洲在线观看av| 亚洲一区二区三区四区在线观看| 久久国产夜色精品鲁鲁99| 国产91精品在线观看| 在线亚洲精品福利网址导航| 日韩精品一区二区三区四区 | 国产在线观看一区二区| 色偷偷成人一区二区三区91| 欧美成人免费网站| 玉米视频成人免费看| 精品夜夜嗨av一区二区三区| 99精品热视频| 久久久www成人免费无遮挡大片| 亚洲乱码国产乱码精品精98午夜| 免费三级欧美电影| 欧美性猛交一区二区三区精品| 精品国产乱码久久久久久1区2区 | 亚洲三级电影网站| 黄网站免费久久| 欧美日韩免费观看一区二区三区 | 欧美一区二区三区小说| 亚洲欧洲国产日本综合| 国产一区二区三区在线观看免费| 欧美四级电影网| 18成人在线视频| 精品亚洲国产成人av制服丝袜 | 国产在线一区观看| 欧美性猛交xxxx乱大交退制版| 国产精品免费人成网站| 激情综合色播五月| 欧美一区二区三区婷婷月色| 亚洲伦在线观看| 99精品黄色片免费大全| 国产精品久久久久久久久免费桃花| 久久丁香综合五月国产三级网站 | 狠狠色狠狠色综合系列| 777午夜精品视频在线播放| 亚洲一线二线三线视频| 99riav久久精品riav| 国产精品萝li| va亚洲va日韩不卡在线观看| 中文字幕精品—区二区四季| 国产成人午夜精品影院观看视频| 久久综合久久综合久久| 国产在线麻豆精品观看| 久久久久国产一区二区三区四区| 国产精品一区三区| 国产欧美精品区一区二区三区| 国产成人av自拍| 中文字幕亚洲一区二区va在线| 成人h动漫精品一区二区| 中文文精品字幕一区二区| 国产91精品精华液一区二区三区 | 麻豆国产精品视频| 欧美电影免费提供在线观看| 久久99热国产| 国产日本欧洲亚洲| eeuss鲁片一区二区三区在线观看| 欧美高清在线一区二区| 91在线云播放| 亚洲福利视频一区二区| 欧美电影免费观看高清完整版在| 国产大片一区二区| 国产精品久久久久9999吃药| 91福利小视频| 日韩电影在线一区| 久久久久久久久一| 91视频免费观看| 秋霞午夜鲁丝一区二区老狼| 国产色产综合产在线视频| 99国内精品久久| 免费观看成人鲁鲁鲁鲁鲁视频| 久久天天做天天爱综合色| 91视频观看视频| 日韩av网站在线观看| 国产精品无码永久免费888| 91丨九色丨尤物| 青椒成人免费视频| 中文字幕不卡的av| 欧美一区二区三区免费视频| 成人深夜福利app| 日本女优在线视频一区二区| 国产欧美精品一区| 欧美一区二区三区播放老司机| 国产高清不卡二三区| 午夜久久久久久| 欧美韩日一区二区三区四区| 精品视频色一区| a美女胸又www黄视频久久| 日韩精品91亚洲二区在线观看| 久久九九99视频| 日韩欧美中文字幕制服| 色菇凉天天综合网| 粉嫩av一区二区三区| 奇米精品一区二区三区在线观看一| 自拍偷在线精品自拍偷无码专区| 久久综合999| 欧美一区二区三区在线视频| 色国产综合视频| 99久久精品久久久久久清纯| 国产一区二区三区四区五区美女| 日本伊人色综合网| 亚洲激情中文1区| 国产精品久久综合| 国产午夜精品在线观看| 久久这里只有精品6| 欧美成人精品3d动漫h| 欧美午夜片在线看| 91亚洲国产成人精品一区二区三| 国产在线播精品第三| 国产一区二区三区久久久 | 欧美色窝79yyyycom| 国产999精品久久久久久| 国产精品一区三区| 国产精品一区二区无线| 国产伦精品一区二区三区视频青涩| 强制捆绑调教一区二区| 日韩 欧美一区二区三区| 亚洲www啪成人一区二区麻豆| 一区二区高清视频在线观看| 亚洲乱码国产乱码精品精98午夜| 亚洲男人天堂一区| 成人免费在线视频| 亚洲伦在线观看| 亚洲国产精品久久一线不卡| 亚洲电影中文字幕在线观看| 一区二区三区精品视频在线| 性久久久久久久久| 欧美bbbbb| 国产成人免费视频| a亚洲天堂av| 欧美午夜一区二区三区| 欧美丰满高潮xxxx喷水动漫| 91精品国产综合久久久久久久| 日韩一区二区三免费高清| 精品粉嫩超白一线天av| 国产午夜精品一区二区| 亚洲精品久久嫩草网站秘色| 亚洲一区二区三区中文字幕在线| 午夜精品免费在线| 国产在线播放一区二区三区| 成人爱爱电影网址| 欧美日韩中文精品| 欧美电影免费观看高清完整版| 国产精品每日更新| 亚洲一卡二卡三卡四卡无卡久久| 日韩精品亚洲专区| 国产盗摄女厕一区二区三区| 色婷婷综合久久久久中文| 欧美电影一区二区| 国产情人综合久久777777| 一区二区三区加勒比av| 久久国产夜色精品鲁鲁99| av不卡免费电影| 在线不卡的av| 国产日韩欧美精品一区| 亚洲一区免费在线观看| 国产美女久久久久| 91久久线看在观草草青青| 欧美不卡一区二区| 亚洲一级二级在线| 国产精品主播直播| 欧美日韩一区二区在线观看| 国产亚洲精品超碰| 日韩av一区二| 91福利精品第一导航| 国产色一区二区| 老司机一区二区| 欧美喷潮久久久xxxxx| 亚洲国产成人私人影院tom |