亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩经典一区二区| 国产精品进线69影院| 亚洲成人动漫在线观看| 91久久免费观看| 一区二区三区在线视频观看58| 色综合天天综合在线视频| 一区二区三区四区不卡在线| 一本一道综合狠狠老| 亚洲一级电影视频| 欧美一区二区日韩一区二区| 黑人巨大精品欧美一区| 欧美高清在线一区二区| 91在线观看高清| 日韩在线a电影| 精品久久久久久综合日本欧美| 国产美女在线观看一区| 国产精品国模大尺度视频| 91一区在线观看| 人人爽香蕉精品| 欧美激情在线看| 91福利在线免费观看| 美女视频黄 久久| 欧美激情一区二区三区| 欧美亚洲综合久久| 久久精品国产在热久久| 亚洲国产高清不卡| 欧美丝袜丝交足nylons图片| 麻豆免费看一区二区三区| 国产精品视频九色porn| 欧美性受xxxx| 国产精品一区专区| 一区二区三区欧美| 精品国免费一区二区三区| 91麻豆123| 国产精品自拍网站| 99久久99久久综合| 日本午夜精品视频在线观看| 中文字幕精品在线不卡| 8x8x8国产精品| 成人app在线| 久久99久久精品欧美| 亚洲免费成人av| 精品剧情v国产在线观看在线| 91久久精品一区二区三| 国产一区二区美女| 亚洲影院理伦片| 国产精品九色蝌蚪自拍| 2023国产精华国产精品| 欧美亚洲动漫制服丝袜| 国产91丝袜在线18| 蜜臀av一级做a爰片久久| 亚洲精品v日韩精品| 国产精品―色哟哟| 精品国产免费人成电影在线观看四季| 欧美在线观看视频一区二区三区| 国产黄色精品视频| 美国十次综合导航| 五月激情六月综合| 亚洲综合丝袜美腿| 成人欧美一区二区三区白人| xfplay精品久久| 日韩视频一区二区三区 | 日本不卡一区二区| 亚洲精品午夜久久久| 国产精品视频一二| 国产色产综合产在线视频| 欧美一区二区三区男人的天堂| 色综合天天性综合| 91片在线免费观看| 99久久久精品| 成人一道本在线| 成人黄色大片在线观看| 国产成人一区在线| 国产一区二区三区在线看麻豆| 久久99精品一区二区三区三区| 首页国产欧美久久| 天天操天天综合网| 天堂av在线一区| 香蕉影视欧美成人| 日韩影院在线观看| 五月激情综合色| 人人狠狠综合久久亚洲| 日本中文字幕一区二区视频| 天天综合天天综合色| 青青草97国产精品免费观看无弹窗版| 日韩有码一区二区三区| 麻豆91小视频| 国产乱码精品一区二区三区忘忧草| 国产一区二区调教| 成人av资源下载| 在线免费一区三区| 7777女厕盗摄久久久| 91精品久久久久久久99蜜桃| 亚洲午夜免费视频| 午夜精品久久久| 蜜桃在线一区二区三区| 国产成人免费xxxxxxxx| 91亚洲国产成人精品一区二三| 欧洲精品中文字幕| 日韩一级成人av| 欧美极品xxx| 亚洲一区二区三区四区在线观看| 午夜精品久久久久久久久久| 激情久久久久久久久久久久久久久久| 高清在线成人网| 欧美中文字幕一区二区三区 | 国产精品系列在线| 亚洲一区二区四区蜜桃| 免费高清在线一区| 成人手机电影网| 欧美性猛交xxxxxxxx| 日韩久久久久久| 日韩毛片一二三区| 性欧美疯狂xxxxbbbb| 精油按摩中文字幕久久| 成人激情视频网站| 欧美日本乱大交xxxxx| 久久午夜羞羞影院免费观看| 国产精品久久久久久久久晋中 | 欧美三级视频在线观看| 精品国产91亚洲一区二区三区婷婷| 欧美国产精品久久| 亚洲成人av在线电影| 懂色av一区二区三区免费看| 在线免费观看不卡av| 欧美变态tickle挠乳网站| 日韩理论在线观看| 精品夜夜嗨av一区二区三区| 91香蕉视频在线| 久久综合九色综合欧美就去吻| 亚洲欧美色图小说| 国产资源在线一区| 91精品国产高清一区二区三区| 欧美极品aⅴ影院| 麻豆高清免费国产一区| 在线观看精品一区| 一区在线播放视频| 国产一区二区三区免费看| 欧美性三三影院| 国产精品久久久久久久久快鸭 | 麻豆国产欧美日韩综合精品二区 | 日韩一区二区精品| 亚洲激情自拍视频| 成人激情视频网站| 精品欧美一区二区久久| 91免费观看在线| 久久看人人爽人人| 青青草原综合久久大伊人精品优势| 99国产精品久久久久久久久久久| 欧美成人精品二区三区99精品| 亚洲国产日韩综合久久精品| 成人国产精品免费观看视频| 欧美va亚洲va香蕉在线| 午夜视频一区在线观看| 色综合一区二区| 中文字幕在线观看一区二区| 国产乱码精品一品二品| 日韩欧美国产系列| 香蕉成人啪国产精品视频综合网| 91在线观看美女| 亚洲欧洲国产日本综合| 成人午夜在线播放| 国产日韩欧美综合一区| 国产精品正在播放| 久久精品人人做| 高清不卡一区二区| 欧美激情一区不卡| 国产aⅴ精品一区二区三区色成熟| 8v天堂国产在线一区二区| 亚洲男同性恋视频| 色综合久久中文字幕综合网| 久久久久国产精品麻豆ai换脸| 久久99久国产精品黄毛片色诱| 欧美一级免费大片| 免费在线观看视频一区| 制服丝袜亚洲精品中文字幕| 秋霞午夜av一区二区三区| 91精品一区二区三区久久久久久| 亚洲高清视频中文字幕| 91麻豆精品国产无毒不卡在线观看| 亚洲成人午夜电影| 91精品国产乱| 国产老肥熟一区二区三区| 国产亚洲一二三区| 97久久精品人人做人人爽50路| 亚洲美女淫视频| 91精品国产品国语在线不卡| 狠狠网亚洲精品| 日本一区二区三区在线观看| 成人网在线播放| 一区二区在线观看视频| 欧美婷婷六月丁香综合色| 秋霞午夜鲁丝一区二区老狼| 2020国产成人综合网| 国产乱子轮精品视频| 亚洲图片欧美激情| 欧美丰满美乳xxx高潮www| 六月丁香婷婷色狠狠久久| 国产欧美视频一区二区| 99久久综合99久久综合网站|