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

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

?? wpacket.c

?? 小波變換算法
?? C
字號:
/*********************

	the activity measure for deciding whether to transform a level
	is critical.  The ideal measure is of course actually packing	
	it (that's a hassle cuz you've got to correctly assign parents
	and whatnot).

	In particular, we need to take the 'quantizer' into account.

************************/

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <crblib/inc.h>

#include <wtlib/subbands.h>
#include <wtlib/image.h>
#include <wtlib/coder.h>
#include <wtlib/quantim.h>

subband_node *new_subband_node();
subband_node *new_subband_node_foliated();
subband_leaf *new_subband_leaf();

void transLeafToQuadMaybe(subband ** sb_ptr,int levels,int trans)
{
subband_leaf *sbl;
subband *sb;
int oldact;

	sbl = *sb_ptr;
	if ( sbl->width < 4 ) return;

	activitySubbands(sbl);
	oldact = sbl->activity;

	transQuad(sbl->band,sbl->width,sbl->height,sbl->width+sbl->rowpad,0,trans);

	activitySubbands(sbl);
	/**
	*	the details of the "activity" measurement are critical for this decision
	*	mse & rmse seem quite poor
	*	the percentage of nonzeros seems to be best
	***/
#if 0
	if ( sbl->activity <= oldact ) {
		// on images where WP helps, this helps more, but on images
		//	where it hurts, this hurts even more
#else
	if ( sbl->activity <  oldact ) {
#endif
		// buono

		sb = makeSubbandQuad(sbl->band,sbl->width,sbl->height,sbl->width+sbl->rowpad,0,sbl->prev);
	
		free(sbl);

		*sb_ptr = sb;

		if ( levels ) {
			transLeafToQuadMaybe(&(sb->LL),levels-1,trans);
			transLeafToQuadMaybe(&(sb->LH),levels-1,trans);
			transLeafToQuadMaybe(&(sb->HL),levels-1,trans);
			transLeafToQuadMaybe(&(sb->HH),levels-1,trans);
		}
	} else {
		// undo it
		transQuad(sbl->band,sbl->width,sbl->height,sbl->width+sbl->rowpad,1,trans);
	}
}

subband * transLeafToQuad(subband_leaf *sbl,int levels,bool doWP,int trans)
{
subband *sb;

	transQuad(sbl->band,sbl->width,sbl->height,sbl->width+sbl->rowpad,0,trans);

	sb = makeSubbandQuad(sbl->band,sbl->width,sbl->height,sbl->width+sbl->rowpad,0,sbl->prev);
	
	free(sbl);

	if ( levels ) {
		sb->LL = transLeafToQuad(sb->LL,levels-1,doWP,trans);
		if ( doWP && levels > 1 ) {
			/** makes sure that wavelet packets have proper parents **/
			transLeafToQuadMaybe(&(sb->LH),levels-2,trans);
			transLeafToQuadMaybe(&(sb->HL),levels-2,trans);
			transLeafToQuadMaybe(&(sb->HH),levels-2,trans);
		}
	}

return sb;
}

void detransSubbands(subband *sb,int trans)
{
	if ( !sb || sb->leaf ) return;
	detransSubbands(sb->LL,trans);
	detransSubbands(sb->LH,trans);
	detransSubbands(sb->HL,trans);
	detransSubbands(sb->HH,trans);
	if ( sb->width ) {
		int w,h,fw;
		w = sb->width; fw = sb->width + sb->rowpad;
		h = sb->height;
		while( ! sb->leaf ) sb = sb->LL;
		
		transQuad(((subband_leaf *)sb)->band,w,h,fw,1,trans);
	}
}

subband * transPlaneSubbands(image *im,int plane,int levels,bool doWP,int trans)
{
subband_leaf * sbl;
	sbl = new_subband_leaf();
	sbl->band = im->data[plane][0];
	sbl->width = im->width;
	sbl->height= im->height;
	sbl->rowpad = 0;
	if ( levels )
		return transLeafToQuad(sbl,levels-1,doWP,trans);
	else
		return sbl;
}


subband * transImageSubbands(image *im,int levels,bool doWP,int trans)
{
	if ( im->planes <= 1 ) return transPlaneSubbands(im,0,levels,doWP,trans);
	else {
		subband_node * sb;
		sb = new_subband_node();
		if ( im->planes >= 1 ) sb->LL = transPlaneSubbands(im,0,levels,doWP,trans);
		if ( im->planes >= 2 ) sb->LH = transPlaneSubbands(im,1,levels,doWP,trans);
		if ( im->planes >= 3 ) sb->HL = transPlaneSubbands(im,2,levels,doWP,trans);
		if ( im->planes >= 4 ) sb->HH = transPlaneSubbands(im,3,levels,doWP,trans);
		if ( im->planes >= 5 ) errexit("too many planes for my cheezy ass");
		return sb;
	}
}

wavelet * makeSubband(image *im,int levels,double q,
	int stoplen,const coder *coder_template,
	bool doWP,int transformN)
{
wavelet * w;

	if ( (w = newWavelet(im,levels)) == NULL )
		return NULL;

	w->stoplen = stoplen;
	w->coder_template = coder_template;
	w->transform = transformN;

	w->qi = findQuantizers(0,0,q, NULL,levels,0,NULL);

	w->subband_root = transImageSubbands(im,levels,doWP,transformN);

	transposeSubbandLHs(w->subband_root);

	if ( q != 1.0 ) quantizeImage(im,levels,w->qi);

	activitySubbands(w->subband_root);

return w;
}


void unSubband(wavelet * w)
{

	if ( w->qi && w->qi->nquants > 0 ) dequantizeImage(w->im,w->levels,w->qi);

	transposeSubbandLHs(w->subband_root);

	detransSubbands(w->subband_root,w->transform);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草伊人久久| 成人午夜视频免费看| 国产一区999| 欧美日韩电影在线| 国产精品沙发午睡系列990531| 日本女人一区二区三区| 91麻豆精品视频| 日本一区二区三区免费乱视频 | 亚洲国产精品成人久久综合一区 | 亚洲五码中文字幕| 国产一区二区三区国产| 91精品国产色综合久久ai换脸| 中文字幕亚洲区| 国产精品一二三四五| 3d成人h动漫网站入口| 亚洲精品第一国产综合野| 成人免费精品视频| 久久精品男人的天堂| 久久国内精品视频| 欧美电影一区二区三区| 亚洲国产成人porn| 欧美网站大全在线观看| 亚洲欧美日韩国产一区二区三区| 国产suv精品一区二区883| 精品国产免费久久| 久久精品国产77777蜜臀| 日韩一区二区麻豆国产| 琪琪一区二区三区| 91精品午夜视频| 日本一不卡视频| 欧美一区二区三区免费| 琪琪久久久久日韩精品| 欧美一区二区人人喊爽| 美腿丝袜亚洲色图| 精品国产青草久久久久福利| 韩国欧美一区二区| 国产亚洲欧美日韩在线一区| 国产成人av在线影院| 欧美激情一区二区三区在线| 成人av在线网| 洋洋成人永久网站入口| 欧美三级三级三级爽爽爽| 爽爽淫人综合网网站| 日韩一级大片在线观看| 国产精品一品二品| 国产精品白丝在线| 欧美日韩综合不卡| 麻豆成人久久精品二区三区小说| 久久先锋资源网| 99久久婷婷国产综合精品| 亚洲日本在线天堂| 欧美色综合天天久久综合精品| 婷婷六月综合网| 久久免费看少妇高潮| 岛国一区二区三区| 樱花草国产18久久久久| 日韩午夜中文字幕| 国产成人精品免费网站| 亚洲va国产天堂va久久en| 欧美成人一区二区三区在线观看| 国产成人在线影院| 狠狠狠色丁香婷婷综合激情| 欧美国产欧美亚州国产日韩mv天天看完整 | 黄色日韩网站视频| 最新成人av在线| 日韩欧美第一区| 91在线视频播放地址| 日本va欧美va精品发布| 欧美国产精品一区| 欧美精品久久天天躁| 成人久久18免费网站麻豆 | 一区二区成人在线视频| 欧美一区二区二区| 97精品电影院| 精品一区二区三区欧美| 一二三四社区欧美黄| 欧美精品一区二区久久久| 色视频成人在线观看免| 国产一区三区三区| 亚洲成人黄色小说| 国产精品看片你懂得| 日韩欧美卡一卡二| 欧美日韩国产三级| av动漫一区二区| 国产一区二区美女诱惑| 日韩福利电影在线观看| 亚洲天堂a在线| 欧美韩国日本综合| 日韩一卡二卡三卡国产欧美| 色吊一区二区三区| 高清不卡在线观看| 韩国中文字幕2020精品| 日韩精品一卡二卡三卡四卡无卡| 自拍偷拍国产精品| 欧美国产日韩一二三区| 亚洲精品一区二区在线观看| 在线播放中文一区| 欧洲精品中文字幕| 日本道免费精品一区二区三区| 国产91精品一区二区| 国产精品69毛片高清亚洲| 久久精品国产精品青草| 三级亚洲高清视频| 国产一区二区主播在线| 免费观看在线综合色| 亚洲超碰精品一区二区| 亚洲午夜久久久久久久久久久| 亚洲三级在线免费| 自拍偷拍亚洲欧美日韩| 国产精品久久久久久久久免费相片| 久久久久一区二区三区四区| 精品国产一二三| 精品av久久707| 欧美大肚乱孕交hd孕妇| 欧美哺乳videos| 2020国产精品| 国产欧美日韩综合精品一区二区| 久久久综合视频| 欧美韩日一区二区三区| 国产精品福利一区二区三区| 国产精品激情偷乱一区二区∴| 国产午夜精品一区二区三区四区| 国产日韩三级在线| 国产精品久久久久久久久久久免费看 | 欧美午夜电影一区| 欧美日韩高清一区二区不卡| 884aa四虎影成人精品一区| 制服丝袜在线91| 日韩欧美一区在线| 久久九九影视网| 国产精品久久久久久久久快鸭 | 中文字幕av一区二区三区免费看 | 欧美电视剧免费全集观看| 日韩精品中文字幕一区 | 国产一区二区三区日韩| 国产99久久久国产精品免费看| 成人黄色片在线观看| 91精品91久久久中77777| 欧美日韩久久久久久| 日韩一二在线观看| 欧美国产成人在线| 玉足女爽爽91| 久久99久久精品| av综合在线播放| 欧美日韩高清一区二区不卡| 精品国产乱码91久久久久久网站| 国产婷婷色一区二区三区在线| 综合久久给合久久狠狠狠97色| 无码av中文一区二区三区桃花岛| 免费观看一级特黄欧美大片| 国产成人精品一区二区三区四区| 91蝌蚪porny| 日韩欧美一二三区| 亚洲人快播电影网| 精品无人区卡一卡二卡三乱码免费卡 | 久久精品国产精品亚洲综合| 成人av第一页| 日韩美女在线视频 | 色综合久久综合| 精品日韩一区二区| 一区二区三区色| 久色婷婷小香蕉久久| 91视视频在线观看入口直接观看www| 91精品国产91综合久久蜜臀| 中文字幕第一区综合| 日韩电影在线观看一区| 91社区在线播放| 久久网站最新地址| 亚洲成av人**亚洲成av**| 成人黄色小视频| 精品国产网站在线观看| 亚洲自拍偷拍综合| 国产sm精品调教视频网站| 欧美日韩免费观看一区三区| 中文在线免费一区三区高中清不卡| 日韩精品三区四区| 在线亚洲欧美专区二区| 国产精品网站一区| 黑人巨大精品欧美一区| 国产精品美女久久久久久久久久久| 日本在线播放一区二区三区| 日本丰满少妇一区二区三区| 中文字幕免费观看一区| 黄色精品一二区| 日韩精品一区二区三区蜜臀 | 精品一区免费av| 欧美丰满嫩嫩电影| 亚洲一区二区三区国产| 99精品一区二区| 国产精品污网站| 成人免费视频一区| 国产欧美一区二区精品久导航 | 婷婷激情综合网| 日本精品视频一区二区| 亚洲欧洲一区二区在线播放| 国产a精品视频| 国产精品亲子乱子伦xxxx裸| 国产高清精品网站| 久久久99精品免费观看不卡| 麻豆国产精品官网|