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

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

?? wavelet.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.
 *
 */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Original 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 "wavelet.h"

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
WAVELET *WaveletAlloc(FILTERSET *filterset)
{
	WAVELET *wavelet;

	if((wavelet=(WAVELET *)malloc(sizeof(WAVELET)))==NULL){
		return NULL;
	}

	wavelet->analysisLow=filterset->analysisLow;
	wavelet->analysisHigh=filterset->analysisHigh;
	wavelet->synthesisLow=filterset->synthesisLow;
	wavelet->synthesisHigh=filterset->synthesisHigh;
	wavelet->symmetric=filterset->symmetric;

	// amount of space to leave for padding vectors for symmetric extensions
	wavelet->npad = max(wavelet->analysisLow->size, wavelet->analysisHigh->size);

	return wavelet;
}


/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
void WaveletDealloc(WAVELET *wavelet)
{
	free(wavelet);
}


/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
void WaveletTransform1D(WAVELET *wavelet, Real *input, Real *output, int size,
								int nsteps, int symExt)
{
	int i, currentIndex=0;
	Real *data[2];
	int lowSize=size, highSize;
	
	// If form of extension unspecified, default to symmetric
   // extensions for symmetrical filters and periodic extensions for
   // asymmetrical filters
	
	//- Explicitly set symExt = -1
   if (symExt == -1){
		symExt = wavelet->symmetric;
	}
	
	// data[0] and data[1] are padded with npad entries on each end
   data [0] = (Real *)calloc(2*wavelet->npad+size, sizeof(Real));
   data [1] = (Real *)calloc(2*wavelet->npad+size, sizeof(Real));
	
	
   for (i = 0; i < size; i++){
		data[currentIndex][wavelet->npad+i] = input[i];
	}
	
	while(nsteps--){
		if (lowSize<=2 && wavelet->symmetric == 1){
			WaveletWarning("Reduce # of transform steps or increase signal size.\n");
			WaveletWarning("or switch to periodic extension.\n");
			WaveletError("Low pass subband is too small\n");
		}
		
		// Transform
		WaveletTransformStep(wavelet, data[currentIndex], data[1-currentIndex], 
			lowSize, symExt);
		
		highSize = lowSize/2;
		lowSize = (lowSize+1)/2;
		
		// Copy high-pass data to output signal
		copy (data[1-currentIndex] + wavelet->npad + lowSize, 
			output+lowSize, highSize);
		
		// Now pass low-pass data (first 1/2 of signal) back to
		// transform routine
		currentIndex = 1 - currentIndex;
   }
	
	// Copy low-pass data to output signal
   copy (data[currentIndex] + wavelet->npad, output, lowSize);
   
   free(data[1]);
   free(data[0]);
}


/*----------------------------------------------------------------------------*/	
/*----------------------------------------------------------------------------*/
void WaveletInvert1D(WAVELET *wavelet, Real *input, Real *output, int size,
							int nsteps, int symExt)
{
   int i;
   int currentIndex = 0;
   Real *data[2];
	int *lowSize, *highSize;
	
   // If form of extension unspecified, default to symmetric
   // extensions for symmetrical filters and periodic extensions for
   // asymmetrical filters
   if (symExt == -1){
		symExt = wavelet->symmetric;
	}
	
	lowSize = (int *)calloc(nsteps, sizeof(int));
   highSize = (int *)calloc(nsteps, sizeof(int));
	
   lowSize[0] = (size+1)/2;
   highSize[0] = size/2;
	
   for (i = 1; i < nsteps; i++) {
		lowSize[i] = (lowSize[i-1]+1)/2;
		highSize[i] = lowSize[i-1]/2;
   }
	
   data [0] = (Real*)calloc(2*wavelet->npad+size, sizeof(Real));
   data [1] = (Real*)calloc(2*wavelet->npad+size, sizeof(Real));
		
		copy (input, data[currentIndex]+wavelet->npad, lowSize[nsteps-1]);
	
   while (nsteps--)  {
		
		// grab the next high-pass component
		copy (input + lowSize[nsteps], data[currentIndex]+wavelet->npad+lowSize[nsteps], 
			highSize[nsteps]);
		
		// Combine low-pass data (first 1/2^n of signal) with high-pass
		// data (next 1/2^n of signal) to get higher resolution low-pass data
		WaveletInvertStep(wavelet, data[currentIndex], data[1-currentIndex], 
			lowSize[nsteps]+highSize[nsteps], symExt);
		
		// Now pass low-pass data (first 1/2 of signal) back to
		// transform routine
		currentIndex = 1 - currentIndex;
   }
	
   // Copy inverted signal to output signal
   copy (data[currentIndex]+wavelet->npad, output, size);
	
   free(highSize);
   free(lowSize);
	
   free(data[1]);
   free(data[0]);
}


/*----------------------------------------------------------------------------*/	
/*----------------------------------------------------------------------------*/
void WaveletTransform2D(WAVELET *wavelet, Real *input, Real *output, int hsize, int vsize,
								int nsteps, int symExt)
{
   int j;
   int hLowSize = hsize, hHighSize;
   int vLowSize = vsize, vHighSize;
	Real *temp_in, *temp_out;
	
   // If form of extension unspecified, default to symmetric
   // extensions for symmetrical filters and periodic extensions for
   // asymmetrical filters
   if (symExt == -1)
		symExt = wavelet->symmetric;
	
   temp_in = (Real*)calloc(2*wavelet->npad+MAX(hsize,vsize), sizeof(Real));
   temp_out = (Real*)calloc(2*wavelet->npad+MAX(hsize,vsize), sizeof(Real));
	
   copy (input, output, hsize*vsize);
	
   while (nsteps--){
		if ((hLowSize <= 2 || vLowSize <= 2) && symExt == 1) {
			WaveletWarning ("Reduce # of transform steps or increase signal size.\n");
			WaveletWarning ("or switch to periodic extension\n");
			WaveletError ("Low pass subband is too small\n");
      }
		
      // Do a convolution on the low pass portion of each row
      for (j = 0; j < vLowSize; j++)  {
			// Copy row j to data array
			copy (output+(j*hsize), temp_in+wavelet->npad, hLowSize);
			
			// Convolve with low and high pass filters
			WaveletTransformStep (wavelet, temp_in, temp_out, hLowSize, symExt);
			
			// Copy back to image
			copy (temp_out+wavelet->npad, output+(j*hsize), hLowSize);
      }
		
      // Now do a convolution on the low pass portion of  each column
      for (j = 0; j < hLowSize; j++)  {
			// Copy column j to data array
			copy_p1_skip (output+j, hsize, temp_in+wavelet->npad, vLowSize);
			
			// Convolve with low and high pass filters
			WaveletTransformStep (wavelet, temp_in, temp_out, vLowSize, symExt);
			
			// Copy back to image
			copy_p2_skip (temp_out+wavelet->npad, output+j, hsize, vLowSize);
      }
		
      // Now convolve low-pass portion again
      hHighSize = hLowSize/2;
      hLowSize = (hLowSize+1)/2;
      vHighSize = vLowSize/2;
      vLowSize = (vLowSize+1)/2;
   }
	
   free(temp_out);
   free(temp_in);
	
}


/*----------------------------------------------------------------------------*/	
/*----------------------------------------------------------------------------*/
void WaveletInvert2D(WAVELET *wavelet, Real *input, Real *output, int hsize, int vsize,
							int nsteps, int symExt)
{   
	int i, j;
	int *hLowSize, *hHighSize, *vLowSize, *vHighSize;
	Real *temp_in, *temp_out;
	
   // If form of extension unspecified, default to symmetric
   // extensions for symmetrical filters and periodic extensions for
   // asymmetrical filters
   if (symExt == -1)
		symExt = wavelet->symmetric;
	
   hLowSize = (int *) calloc(nsteps, sizeof(int));
   hHighSize = (int *) calloc(nsteps, sizeof(int));
   vLowSize =(int *) calloc(nsteps, sizeof(int));
   vHighSize =(int *) calloc(nsteps, sizeof(int));
	
   hLowSize[0] = (hsize+1)/2;
   hHighSize[0] = hsize/2;
   vLowSize[0] = (vsize+1)/2;
   vHighSize[0] = vsize/2;
	
   for (i = 1; i < nsteps; i++) {
		hLowSize[i] = (hLowSize[i-1]+1)/2;
		hHighSize[i] = hLowSize[i-1]/2;
		vLowSize[i] = (vLowSize[i-1]+1)/2;
		vHighSize[i] = vLowSize[i-1]/2;
   }
	
   temp_in = (Real *)calloc(2*wavelet->npad+MAX(hsize,vsize), sizeof(Real));
   temp_out = (Real *)calloc(2*wavelet->npad+MAX(hsize,vsize), sizeof(Real));
	
   copy (input, output, hsize*vsize);
	
   while (nsteps--)  {
      // Do a reconstruction for each of the columns
      for (j = 0; j < hLowSize[nsteps]+hHighSize[nsteps]; j++)  {
			// Copy column j to data array
			copy_p1_skip (output+j, hsize, temp_in+wavelet->npad, 
				vLowSize[nsteps]+vHighSize[nsteps]);
			
			// Combine low-pass data (first 1/2^n of signal) with high-pass
			// data (next 1/2^n of signal) to get higher resolution low-pass data
			WaveletInvertStep (wavelet, temp_in, temp_out,
				vLowSize[nsteps]+vHighSize[nsteps], symExt);
			
			// Copy back to image
			copy_p2_skip (temp_out+wavelet->npad, output+j, hsize,
				vLowSize[nsteps]+vHighSize[nsteps]);
      }
		
      // Now do a reconstruction pass for each row
      for (j = 0; j < vLowSize[nsteps]+vHighSize[nsteps]; j++)  {
			// Copy row j to data array
			copy (output + (j*hsize), temp_in+wavelet->npad, 
				hLowSize[nsteps]+hHighSize[nsteps]);
			
			// Combine low-pass data (first 1/2^n of signal) with high-pass
			// data (next 1/2^n of signal) to get higher resolution low-pass data

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区在线电影| 99在线精品免费| 欧美日韩一区小说| 亚洲精品国久久99热| 国产精品一二三区| 久久久精品影视| 国产一区二区三区在线观看免费| 欧美一区欧美二区| 精品一区二区三区在线播放| 日韩欧美视频在线| 激情五月婷婷综合| 久久众筹精品私拍模特| 国产精品18久久久久久久网站| 欧美一区二区三区性视频| 免费精品99久久国产综合精品| 欧美一卡2卡三卡4卡5免费| 激情六月婷婷久久| 久久久不卡影院| 91视频免费播放| 日本中文字幕一区二区视频| 欧美videossexotv100| 色婷婷国产精品| 激情综合色播激情啊| 17c精品麻豆一区二区免费| 欧美日韩在线播| 九色porny丨国产精品| 国产精品视频观看| 欧美丰满嫩嫩电影| 波多野洁衣一区| 午夜日韩在线电影| 亚洲同性同志一二三专区| 欧美精品在欧美一区二区少妇| 麻豆精品视频在线| 亚洲一区视频在线| 国产片一区二区三区| 欧美日韩精品一区二区三区| 国产另类ts人妖一区二区| 亚洲自拍偷拍欧美| 中文字幕一区二区日韩精品绯色| 在线成人av网站| 91成人免费在线视频| 国产成a人亚洲精| 精品一区二区三区免费毛片爱| 一区二区日韩av| 专区另类欧美日韩| 中文字幕不卡一区| 久久精品夜夜夜夜久久| 精品美女一区二区| 日韩欧美激情在线| 欧美大白屁股肥臀xxxxxx| 日本成人中文字幕在线视频| 亚洲精品一区二区三区香蕉 | 亚洲最大成人网4388xx| 亚洲国产岛国毛片在线| 国产欧美一区二区精品忘忧草| 欧美一二三在线| 精品电影一区二区| 国产精品午夜久久| 亚洲精品你懂的| 午夜欧美2019年伦理| 首页亚洲欧美制服丝腿| 日韩电影在线一区二区三区| 日韩av一二三| 国产一区高清在线| 北条麻妃一区二区三区| 91丨国产丨九色丨pron| 欧美三区在线观看| 精品国产乱码久久久久久免费| 国产日产欧美一区| 亚洲男人天堂av| 免费欧美在线视频| 成人美女视频在线看| 欧美亚洲国产怡红院影院| 日韩天堂在线观看| 国产欧美一区二区三区在线老狼| 中文字幕一区二区三区四区不卡| 亚洲一区二区三区激情| 精品一区二区在线看| 欧洲亚洲国产日韩| 精品精品国产高清一毛片一天堂| 国产精品国产a| 久久精品国产一区二区三| 91视频精品在这里| 久久蜜桃av一区精品变态类天堂| 国产精品的网站| 黄色精品一二区| 制服丝袜成人动漫| 亚洲在线视频一区| 91猫先生在线| 国产精品私人自拍| 国产精选一区二区三区| 欧美日韩免费视频| 亚洲一级不卡视频| 99国产精品久久| 中文字幕在线免费不卡| 韩国v欧美v日本v亚洲v| 日韩一区二区免费电影| 日韩avvvv在线播放| 91精品国产全国免费观看| 亚洲国产综合在线| 欧美三级乱人伦电影| 亚洲成a人片在线观看中文| 色系网站成人免费| 亚洲二区视频在线| 91国产免费看| 91精品国产91久久久久久一区二区 | 国产69精品久久99不卡| 国产亚洲欧美激情| 91美女片黄在线观看91美女| 亚洲乱码国产乱码精品精可以看| 在线观看av一区| 亚洲成人av一区二区| 日韩一区二区三区视频在线| 麻豆精品一区二区综合av| 久久精品一二三| 日韩一区二区免费在线电影| 日本三级韩国三级欧美三级| 精品av综合导航| 91视频.com| 精品无人码麻豆乱码1区2区| 国产婷婷色一区二区三区四区| 97久久精品人人做人人爽50路| 亚洲乱码日产精品bd| 日韩欧美一二三| 一本到三区不卡视频| 国产综合色在线| 亚洲小说欧美激情另类| 欧美电影免费观看高清完整版在线观看 | 成人avav在线| 精品亚洲欧美一区| 亚洲精品日韩综合观看成人91| 亚洲精品在线电影| 欧美精品一卡二卡| 欧美综合一区二区| www.日韩av| 成人一道本在线| 国产福利不卡视频| 免费久久99精品国产| 樱花影视一区二区| 综合久久一区二区三区| 久久久三级国产网站| 日韩精品最新网址| 欧美精品乱人伦久久久久久| 91免费视频网| a4yy欧美一区二区三区| 成人精品鲁一区一区二区| 精品夜夜嗨av一区二区三区| 免费观看久久久4p| 另类成人小视频在线| 免费的国产精品| 国内精品免费**视频| 国产乱码精品一区二区三区忘忧草| 麻豆成人在线观看| 成人一区二区三区视频| 丁香激情综合国产| av亚洲精华国产精华精| 日本高清不卡视频| 欧美日韩一区小说| 久久日一线二线三线suv| 91国产成人在线| 国内成人免费视频| 另类小说一区二区三区| 国产一区二区三区在线看麻豆| 国产乱人伦精品一区二区在线观看| 国内外精品视频| 91丨porny丨中文| 欧美一区二区三区思思人| 欧美mv日韩mv| 亚洲品质自拍视频| 美日韩一级片在线观看| 国产jizzjizz一区二区| 欧美色网站导航| 国产亚洲成年网址在线观看| 亚洲婷婷综合久久一本伊一区| 亚洲在线中文字幕| 国产成人午夜精品5599| 色噜噜狠狠色综合欧洲selulu | 五月天国产精品| 国产一区二区女| 91麻豆精品国产91久久久使用方法 | 久久99国产精品免费| 色婷婷综合视频在线观看| 久久青草国产手机看片福利盒子 | 亚洲二区视频在线| 91在线国内视频| 欧美大黄免费观看| 婷婷夜色潮精品综合在线| 波多野结衣中文字幕一区 | 亚洲国产成人自拍| 韩国精品久久久| www精品美女久久久tv| 日韩电影在线免费看| 7777精品伊人久久久大香线蕉的 | 精品乱人伦小说| 精品一区二区三区蜜桃| 日韩欧美国产三级电影视频| 亚洲成人福利片| 欧美日韩你懂得| 日本中文字幕一区二区视频| 69成人精品免费视频|