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

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

?? codezt.c

?? 用C++語言實現的基于小波分析的源代碼,實現了小波分析的諸多算法
?? C
字號:

// <> "stop" functionality needed

//#define WRITE_ZT
#define WRITE_ZT_PLANE 7

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <crblib/inc.h>
#include <crblib/arithc.h>
#include <crblib/codeutil.h>
#include "coder.h"
#include "image.h"

#define SIGN_CONTEXTS		4

#define TOTMAX			4000
#define INC				30

#define bitModel(bit,P0,PT)		do { PT += INC; if (!(bit)) P0 += INC;  if ( PT > TOTMAX ) { PT >>= 1; P0 >>= 1; P0++; PT += 2; } } while(0)
#define bitEnc(bit,ari,P0,PT)	do { arithEncBit(ari,P0,PT,bit);	bitModel(bit,P0,PT); } while(0)
#define bitDec(bit,ari,P0,PT)	do { bit = arithDecBit(ari,P0,PT);	bitModel(bit,P0,PT); } while(0)

typedef struct {
	arithInfo *ari;
	int signs_p0[SIGN_CONTEXTS],signs_pt[SIGN_CONTEXTS];
} signInfo;

void * initSigns(arithInfo *ari);
void freeSigns(void *sign_coder);

void encodeSigns(signInfo *me,int *band,int w,int h,int fullw,int *parent);
void decodeSigns(signInfo *me,int *band,int w,int h,int fullw,int *parent);

void * initSigns(arithInfo *ari)
{
signInfo *d;
int i;

	if ( (d = new(signInfo)) == NULL )
		errexit("ozero init failed");

	d->ari = ari;

	for(i=0;i<SIGN_CONTEXTS;i++) {
		d->signs_p0[i] = 100;
		d->signs_pt[i] = 200;
	}
return d;
}

void freeSigns(signInfo *d)
{
	if ( d ) {
		free(d);
	}
}

void encodeSigns(signInfo *me,int *band,int width,int height,int fullw,int *parent)
{
int x,y,context; //,V;
int *dp;
arithInfo *ari;
int *signs_p0,*signs_pt;

	ari = me->ari;
	signs_p0 = me->signs_p0;
	signs_pt = me->signs_pt;

	dp = band;

	for(x=0;x<width;x++) {
		if ( *dp == 0 ) { dp++; continue; }
		if ( x == 0 ) context = 0;
		else context = (dp[-1]&1);
		bitEnc((*dp&1),ari,signs_p0[context],signs_pt[context]);
		dp++;
	}
	dp += fullw - width;

	for(y=1;y<height;y++) {
		if ( *dp == 0 ) dp++;
		else {
			context = ((dp[-fullw]&1)<<1);
			bitEnc((*dp&1),ari,signs_p0[context],signs_pt[context]);
			dp++;
		}

		for(x=1;x<width;x++) {
			if ( *dp == 0 ) { dp++; continue; }
			context = (dp[-1]&1) + ((dp[-fullw]&1)<<1);

			bitEnc((*dp&1),ari,signs_p0[context],signs_pt[context]);
			dp++;
		}
		dp += fullw - width;
	}
}

void decodeSigns(signInfo *me,int *band,int width,int height,int fullw,int *parent)
{
int x,y,sign,context;
int *dp;
arithInfo *ari;
int *signs_p0,*signs_pt;

	ari = me->ari;
	signs_p0 = me->signs_p0;
	signs_pt = me->signs_pt;

	dp = band;

	for(x=0;x<width;x++) {
		if ( *dp == 0 ) { dp++; continue; }
		if ( x == 0 ) context = 0;
		else context = (dp[-1]&1);
		bitDec(sign,ari,signs_p0[context],signs_pt[context]);
		*dp++ += sign;
	}
	dp += fullw - width;

	for(y=1;y<height;y++) {

		if ( *dp == 0 ) dp++;
		else {
			context = ((dp[-fullw]&1)<<1);
			bitDec(sign,ari,signs_p0[context],signs_pt[context]);
			*dp++ += sign;
		}

		for(x=1;x<width;x++) {
			if ( *dp == 0 ) { dp++; continue; }
			context = (dp[-1]&1) + ((dp[-fullw]&1)<<1);

			bitDec(sign,ari,signs_p0[context],signs_pt[context]);
			*dp++ += sign;
		}
		dp += fullw - width;
	}
}


void findZeroTrees(image *im,int bits,int levels,int offx,int offy)
{
int *fmband,*toband,*fmp,*top;
int x,y,l,w,h,wt,ht,fullw,p;
int bitmask;

	bitmask = (1<<bits) + FLAG_ISOLATED_ZERO;

	fullw = im->width;
	for(p=0;p<im->planes;p++) {

		for(l=1;l<levels;l++) {	//** don't do very top level, cuz that would use the LL as parents

			w = (im->width) >>l;
			h = (im->height)>>l;
			wt = w>>1;
			ht = h>>1;
			fmband = im->data[p][h *offy] + w *offx;
			toband = im->data[p][ht*offy] + wt*offx;

			fmp = fmband; top = toband;
			for(y=0;y<ht;y++) {
				for(x=0;x<wt;x++) {
					if ( (*top&bitmask) == 0 ) {	// *top might be a zerotree, (if not, nothing to do)
						if ( ((fmp[0]&bitmask) + (fmp[1]&bitmask) + (fmp[fullw]&bitmask) + (fmp[fullw+1]&bitmask)) == 0 ) { // all kids zero
							// if *top is zero, it can stay zero to be a zero-tree
							// change kids of zerotree roots to children
							fmp[0] |= FLAG_CHILD_ZERO;
							fmp[1] |= FLAG_CHILD_ZERO;
							fmp[fullw  ] |= FLAG_CHILD_ZERO;
							fmp[fullw+1] |= FLAG_CHILD_ZERO;
						} else {
							*top |= FLAG_ISOLATED_ZERO; // label as an isolated zero
						}
					}
					top ++;
					fmp += 2;
				}
				top += fullw - wt;
				fmp += fullw + fullw - w;
			}
		}
	}
}


void encodeImageZT(coder * encoder,image *im,int levels)
{
int top_val,top_bitpn,bits;
int *dp,x,y,**rows;
int p,l,sizeX,sizeY;
void *sign_coder;

	if ( ! encoder->encodeBandZT ) errexit("don't call imageZT unless you mean it!");

	top_val = 0;

	for(p=0;p<im->planes;p++) {
		rows = im->data[p];

		/** global pre-pass : remove signs & find top_val **/

		sizeX = (im->width) >> levels;
		sizeY = (im->height) >> levels;
		for(y=0;y<(im->height);y++) {
			dp = rows[y];
			if ( y < sizeY ) { x = sizeX; dp += sizeX; }
			else x = 0;
			for(;x<(im->width);x++) {
				if ( isneg(*dp) ) *dp = 1 - (*dp + *dp);
				else *dp += *dp;
				if ( *dp > top_val ) top_val = *dp;
				dp++;
			}
		}
	}

	for(top_bitpn=0;(1<<(top_bitpn+1))<=top_val;top_bitpn++) ;

	cu_putExpanding_ari(top_bitpn,encoder->arith,16,8);

	for(bits = top_bitpn;bits>=1;bits--) {
		findZeroTrees(im,bits,levels,1,0);
		findZeroTrees(im,bits,levels,0,1);
		findZeroTrees(im,bits,levels,1,1);

#ifdef WRITE_ZT
		if ( bits == WRITE_ZT_PLANE ) {	/** write out a zero tree map **/
			image *zt_im;
			int r,*ptr,bitmask;
			zt_im = copyImage(im);

			for(p=0;p>im->planes;p++) {
				ptr = zt_im->data[p][0][0]; bitmask = 1<<bits;
				for(r=zt_im->plane_size;r--;) {
					if ( *ptr & bitmask ) *ptr++ = 255;
					else { 
						*ptr = ((*ptr>>(CODE_MAX_BPN+1))<<6); ptr++; 
					}
					/** 256 is on
						128	is isolated
						 64 is child
						  0 is root
					****/

					ptr[-1] -= 0x80;
				}
			}

			writeImageFile("zerotree.raw",zt_im);

			freeImage(zt_im);
		}
#endif			/** end zero-tree writing **/

		for (l = levels; l > 0; l--) {
			sizeX = (im->width) >> l;
			sizeY = (im->height) >> l;

			for(p=0;p<im->planes;p++) {
				rows = im->data[p];

				encoder->encodeBandZT(encoder,rows[0] + sizeX,	sizeX, sizeY,bits,im->width,rows); 
				encoder->encodeBandZT(encoder,rows[sizeY],		sizeX, sizeY,bits,im->width,rows); 
				encoder->encodeBandZT(encoder,rows[sizeY]+sizeX,sizeX, sizeY,bits,im->width,rows); 
			}
		}
	}

	sign_coder = initSigns(encoder->arith);			
	for(p=0;p<im->planes;p++) {
		rows = im->data[p];
		for (l = levels; l > 0; l--) {
			sizeX = (im->width) >> l;
			sizeY = (im->height) >> l;
			encodeSigns(sign_coder,rows[0] + sizeX	,	sizeX, sizeY, im->width,rows[0] + (sizeX>>1));
			encodeSigns(sign_coder,rows[sizeY]		,	sizeX, sizeY, im->width,rows[(sizeY>>1)]);
			encodeSigns(sign_coder,rows[sizeY]+sizeX,	sizeX, sizeY, im->width,rows[(sizeY>>1)]+ (sizeX>>1));
		}
	}
	freeSigns(sign_coder);
}

void decodeImageZT(coder * decoder,image *im,int levels)
{
int l,sizeX,sizeY,x,y,*dp;
int **rows;
int top_bitpn,bits,p;
void *sign_coder;

	top_bitpn = cu_getExpanding_ari(decoder->arith,16,8);

	for(bits = top_bitpn;bits>=1;bits--) {
		for (l = levels; l > 0; l--) {
			for(p=0;p<im->planes;p++) {
				rows = im->data[p];

				sizeX = (im->width) >> l;
				sizeY = (im->height) >> l;

				decoder->decodeBandZT(decoder,rows[0] + sizeX,	sizeX, sizeY,bits,im->width,rows); 
				decoder->decodeBandZT(decoder,rows[sizeY],		sizeX, sizeY,bits,im->width,rows);
				decoder->decodeBandZT(decoder,rows[sizeY]+sizeX,sizeX, sizeY,bits,im->width,rows);
			}
		}
	}

	sign_coder = initSigns(decoder->arith);
	for(p=0;p<im->planes;p++) {
		rows = im->data[p];
		for (l = levels; l > 0; l--) {
			sizeX = (im->width) >> l;
			sizeY = (im->height) >> l;

			decodeSigns(sign_coder,rows[0] + sizeX	,	sizeX, sizeY, im->width,rows[0] + (sizeX>>1));
			decodeSigns(sign_coder,rows[sizeY]		,	sizeX, sizeY, im->width,rows[(sizeY>>1)]);
			decodeSigns(sign_coder,rows[sizeY]+sizeX,	sizeX, sizeY, im->width,rows[(sizeY>>1)]+ (sizeX>>1));
		}
	}
	freeSigns(sign_coder);

		/** global post-pass : restore signs 
		*	(<> decodeSigns could do this for us, but that would require him to
		*		do an if() when he builds contexts) 
		**/
	
	for(p=0;p<im->planes;p++) {
		rows = im->data[p];
		sizeX = (im->width) >> levels;
		sizeY = (im->height) >> levels;
		for(y=0;y<im->height;y++) {
			dp = rows[y];
			if ( y < sizeY ) { x = sizeX; dp += sizeX; }
			else x = 0;
			for(;x<im->width;x++) {
				if ( *dp & 1 ) *dp++ = - ((*dp)>>1);
				else *dp++ >>= 1;
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内久久精品视频| 欧美中文字幕一二三区视频| 日韩一区二区在线免费观看| 一区二区国产视频| 在线中文字幕一区| 亚洲bt欧美bt精品| 欧美一区二视频| 精久久久久久久久久久| 久久综合久色欧美综合狠狠| 国产精品一区三区| 中文字幕一区二区三区色视频| 成人aaaa免费全部观看| 亚洲精品精品亚洲| 欧美日韩一级二级| 久99久精品视频免费观看| 精品国产乱子伦一区| www.成人在线| 五月婷婷久久丁香| 久久久久国产一区二区三区四区 | 中文字幕一区二区5566日韩| 99re成人在线| 青青草原综合久久大伊人精品| 精品88久久久久88久久久| www.亚洲精品| 日韩二区三区在线观看| 国产欧美一区二区精品仙草咪| 色综合久久久久综合| 日韩av网站在线观看| 中文字幕不卡三区| 欧美曰成人黄网| 精品午夜一区二区三区在线观看| 国产精品高潮呻吟久久| 欧美精三区欧美精三区| 国产一区二区三区电影在线观看| 欧美v国产在线一区二区三区| 成人av片在线观看| 亚洲一区二区中文在线| 日韩美一区二区三区| 国产激情一区二区三区| 一区二区三区在线视频观看58| 欧美丝袜第三区| 九九在线精品视频| 亚洲欧美日韩国产手机在线| 欧美人与禽zozo性伦| 国产在线精品视频| 1区2区3区精品视频| 91在线观看地址| 午夜日韩在线电影| 国产午夜亚洲精品理论片色戒| 91视频在线观看免费| 免费成人av在线播放| |精品福利一区二区三区| 3751色影院一区二区三区| 国产大陆亚洲精品国产| 亚洲自拍偷拍av| 久久人人97超碰com| 色婷婷久久久亚洲一区二区三区| 麻豆精品在线播放| 亚洲六月丁香色婷婷综合久久 | 久久九九影视网| 欧美亚洲禁片免费| 懂色中文一区二区在线播放| 亚洲第一电影网| 久久久久久久久久久黄色| 欧美日韩中文字幕一区二区| 国产一区二区美女| 日日摸夜夜添夜夜添国产精品| 国产欧美日韩中文久久| 91精品国产综合久久精品麻豆| 99精品久久只有精品| 狠狠色丁香婷婷综合| 亚洲综合免费观看高清完整版 | 日韩小视频在线观看专区| 高潮精品一区videoshd| 天天操天天干天天综合网| 亚洲精品中文字幕乱码三区| 精品久久久久久无| 51精品秘密在线观看| 91在线国内视频| 蜜臀va亚洲va欧美va天堂| 亚洲午夜在线视频| 伊人婷婷欧美激情| 国产精品国模大尺度视频| 久久久久久久久伊人| 日韩女优av电影在线观看| 欧美日韩电影一区| 欧美唯美清纯偷拍| 色8久久精品久久久久久蜜| 成人综合在线视频| 国产精品911| 国产成人在线影院| 韩国欧美国产1区| 99精品在线观看视频| 色综合久久88色综合天天| 自拍偷拍国产精品| 日韩免费电影网站| 国产乱码精品一区二区三区忘忧草 | 91视频精品在这里| 国产原创一区二区| 视频在线观看国产精品| 日韩不卡一区二区| 日韩制服丝袜av| 日韩中文字幕一区二区三区| 亚洲一区二区精品视频| 亚洲一区日韩精品中文字幕| 一区二区高清视频在线观看| 一区二区免费看| 性做久久久久久| 午夜伊人狠狠久久| bt7086福利一区国产| 精品一区二区三区的国产在线播放| 国产精品美女久久久久久久| 精品成人一区二区| 亚洲精品一区二区三区精华液| 亚洲色图清纯唯美| 亚洲在线中文字幕| 丝瓜av网站精品一区二区| 亚洲伦理在线精品| 亚洲精品日产精品乱码不卡| 日韩av一级电影| 国产麻豆视频一区二区| 成人精品视频一区二区三区| 91视频在线观看| 欧美精品 日韩| 26uuu亚洲综合色| 中文字幕一区二区5566日韩| 亚洲精选视频在线| 免费成人在线视频观看| 国产精品99久久久久久久vr| 91麻豆文化传媒在线观看| 欧美日韩二区三区| 久久久天堂av| 亚洲欧美日韩国产综合| 日韩国产精品久久久久久亚洲| 狠狠色丁香婷婷综合| 成人18精品视频| 精品不卡在线视频| 亚洲色图都市小说| 男男gaygay亚洲| 成人禁用看黄a在线| 欧美日韩不卡在线| 国产日韩欧美高清| 亚洲第一电影网| 国产盗摄一区二区| 欧美精品亚洲一区二区在线播放| 久久女同性恋中文字幕| 亚洲自拍都市欧美小说| 国产精品白丝av| 欧美日韩第一区日日骚| 国产精品女同互慰在线看| 亚洲影视资源网| 成人一区二区视频| 欧美草草影院在线视频| 亚洲精品综合在线| 国产91精品一区二区麻豆亚洲| 欧美精品精品一区| 日韩毛片高清在线播放| 国产乱子轮精品视频| 欧美日本韩国一区二区三区视频| 国产精品久久久爽爽爽麻豆色哟哟| 日韩成人一级片| 在线精品视频免费播放| 欧美国产日韩精品免费观看| 日韩精品电影一区亚洲| 99久久精品免费看国产免费软件| 欧美一区二区美女| 久久久久久久久97黄色工厂| 日本在线不卡一区| 欧美日韩国产一区| 亚洲人精品一区| 国产盗摄一区二区| 精品国产成人在线影院| 免费日本视频一区| 欧美日韩国产综合一区二区| 亚洲视频小说图片| 成+人+亚洲+综合天堂| 久久噜噜亚洲综合| 另类小说色综合网站| 91精品麻豆日日躁夜夜躁| 一区二区视频在线| 91论坛在线播放| 成人欧美一区二区三区| eeuss鲁一区二区三区| 国产精品亲子乱子伦xxxx裸| 韩国v欧美v日本v亚洲v| 日韩一区二区不卡| 日日噜噜夜夜狠狠视频欧美人| 在线观看日韩高清av| 一区二区三区在线看| 日本道精品一区二区三区| 亚洲三级在线播放| 97精品国产97久久久久久久久久久久| 国产清纯白嫩初高生在线观看91| 精品午夜一区二区三区在线观看| 91精品国产美女浴室洗澡无遮挡| 午夜精品久久久久影视| 欧美军同video69gay| 午夜精品免费在线| 在线电影欧美成精品| 国产在线视视频有精品|