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

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

?? wtransform.c

?? ezw程序
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* 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)];
			}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产成人自拍| 欧美精品黑人性xxxx| 欧美在线观看一区| 日韩一区二区三区视频| 久久久精品综合| 一区2区3区在线看| 麻豆久久久久久久| 成人丝袜视频网| 欧美私人免费视频| 久久久夜色精品亚洲| 玉足女爽爽91| 国产一二三精品| 色婷婷国产精品综合在线观看| 777久久久精品| 国产精品欧美一区二区三区| 亚洲国产日韩在线一区模特| 精品影视av免费| 91在线观看美女| 欧美v亚洲v综合ⅴ国产v| 国产精品久久看| 日本伊人色综合网| 成人av动漫网站| 日韩欧美一级精品久久| 综合欧美亚洲日本| 麻豆成人久久精品二区三区红 | 欧美日韩国产一区| 久久九九久精品国产免费直播| 亚洲精品成人悠悠色影视| 麻豆91免费观看| 91久久精品国产91性色tv| 久久综合色8888| 日韩高清欧美激情| 91美女精品福利| 国产午夜精品一区二区| 五月天久久比比资源色| 一本色道久久综合狠狠躁的推荐 | 国产一区在线观看麻豆| 欧美色偷偷大香| 国产精品视频一二| 九九国产精品视频| 欧美精品一卡两卡| 一区二区欧美国产| 99久久精品免费看| 久久精品一区二区三区不卡牛牛| 日韩国产欧美视频| 欧美中文字幕久久| 亚洲精品自拍动漫在线| 国产 日韩 欧美大片| 精品国产乱码久久久久久图片| 亚洲成人黄色影院| 99精品视频中文字幕| 久久精品夜色噜噜亚洲a∨| 麻豆精品精品国产自在97香蕉| 欧美综合一区二区| 亚洲日本中文字幕区| 成人一区二区三区| xvideos.蜜桃一区二区| 美国欧美日韩国产在线播放| 在线综合视频播放| 日韩国产精品91| 欧美日韩国产在线观看| 亚欧色一区w666天堂| 欧美色倩网站大全免费| 一区二区三区欧美亚洲| 91色综合久久久久婷婷| 专区另类欧美日韩| 91麻豆精东视频| 亚洲三级在线免费观看| 91碰在线视频| 一区二区三区日韩在线观看| 91豆麻精品91久久久久久| 亚洲伊人色欲综合网| 在线观看亚洲精品视频| 一区二区三区不卡视频| 在线精品视频小说1| 亚洲综合久久久久| 欧美日韩精品专区| 偷窥少妇高潮呻吟av久久免费| 欧美四级电影网| 日韩主播视频在线| 欧美一区二区三区爱爱| 免费精品视频在线| 日韩久久久久久| 国产一区二三区| 国产免费观看久久| 99久久久无码国产精品| 一区二区免费视频| 欧美一区中文字幕| 久久99国产精品久久99果冻传媒| 欧美精品一区二区三区一线天视频| 国内精品视频一区二区三区八戒| 久久久国产综合精品女国产盗摄| 成人午夜激情视频| 亚洲精品五月天| 欧美日韩精品一区二区三区四区| 日本午夜精品视频在线观看| 26uuu国产一区二区三区| 成人av在线资源网站| 亚洲免费观看高清完整版在线 | 中文字幕一区二区视频| 在线观看视频欧美| 日本大胆欧美人术艺术动态| 日韩天堂在线观看| 大白屁股一区二区视频| 亚洲综合色在线| 日韩精品一区二区三区视频播放| 狠狠色2019综合网| 中文字幕一区二区在线观看| 欧美日韩国产精品成人| 国产一区二区三区高清播放| 中文字幕在线不卡一区| 91精品视频网| 懂色一区二区三区免费观看| 亚洲一区二区三区视频在线| 日韩亚洲欧美一区二区三区| 成人午夜视频在线| 午夜精品免费在线观看| 国产午夜精品福利| 欧美少妇一区二区| 国产乱码精品一区二区三区av | 色激情天天射综合网| 裸体一区二区三区| 国产精品久久久久一区二区三区| 在线国产电影不卡| 激情六月婷婷久久| 一区二区三区精品视频在线| 久久综合九色欧美综合狠狠| 在线观看视频91| 国产麻豆精品久久一二三| 亚洲午夜av在线| 欧美国产日韩a欧美在线观看| 欧美男女性生活在线直播观看 | 亚洲欧美日韩中文字幕一区二区三区 | 日韩欧美专区在线| 91丨porny丨中文| 国产一区二区在线观看视频| 亚洲综合色自拍一区| 中文字幕欧美激情| 欧美一区二区网站| 色激情天天射综合网| 国产成人精品www牛牛影视| 图片区小说区区亚洲影院| 国产精品久久久久久福利一牛影视| 在线综合视频播放| 91免费看片在线观看| 国产精品白丝jk黑袜喷水| 日本不卡不码高清免费观看| 亚洲人一二三区| 国产情人综合久久777777| 欧美一级xxx| 在线视频综合导航| 99视频精品在线| 国产一区二区不卡| 蜜臀av性久久久久蜜臀aⅴ| 亚洲一级二级三级| 中文字幕日韩一区二区| 久久久亚洲国产美女国产盗摄| 欧美精品九九99久久| 欧洲中文字幕精品| va亚洲va日韩不卡在线观看| 国产精品伊人色| 秋霞电影网一区二区| 亚洲va欧美va国产va天堂影院| 亚洲另类一区二区| 亚洲三级在线播放| 综合久久综合久久| 中文字幕一区三区| 国产精品无人区| 国产精品婷婷午夜在线观看| 国产丝袜在线精品| 久久日一线二线三线suv| 精品国产乱码久久久久久闺蜜 | 精品一区二区三区在线播放| 日韩专区中文字幕一区二区| 性做久久久久久免费观看| 亚洲最快最全在线视频| 亚洲欧美电影一区二区| 亚洲欧洲成人自拍| 亚洲欧美在线另类| 17c精品麻豆一区二区免费| 亚洲欧洲美洲综合色网| 中文字幕一区二区在线播放 | 日本丶国产丶欧美色综合| 97精品久久久久中文字幕| 99综合电影在线视频| av高清不卡在线| www.日韩精品| 91蜜桃视频在线| 色婷婷久久久亚洲一区二区三区 | 亚洲美女精品一区| 一区二区三区四区不卡视频| 亚洲一区国产视频| 天堂精品中文字幕在线| 日产精品久久久久久久性色| 免费观看日韩av| 极品少妇xxxx精品少妇| 国产精品一区二区久久精品爱涩| 东方欧美亚洲色图在线| 99国产精品久| 欧美偷拍一区二区|