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

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

?? no list spiht.txt

?? 無鏈表SPIHT算法
?? TXT
字號:
圖像壓縮 無鏈表SPIHT算法,需要較小的內存
//input,輸入小波系數矩陣;levels小波分解層數;wide圖像寬 high 圖像高
NLSPIHT(short *input, unsigned char *outbit, int levels, int wide,int high)

{   
    int index,i,j,indexlen,d,c,Idc, t;
	int skip[16],isskip[16];
	indexlen=wide*high;
	short *dmax, *gmax, *val,*sign;
    unsigned char *mark;
	sign=new short[indexlen];
    dmax=new short[indexlen/4];
    gmax=new short[indexlen/16];
    mark=new unsigned char[indexlen*16];
	
	val=new short[indexlen];
 
    //初始化
	this->SPIHTheight=high;	this->SPIHTwidth=wide;
	for (i=0;i<indexlen*16;i++) mark[i]=0;
	for (i=0;i<high;i++)
		for (j=0;j<wide;j++)
		{sign[i*wide+j]=0;}
	for (i=0;i<high;i++)
		for (j=0;j<wide;j++)
		{ index=SPIHTindex(i,j);
		  val[index]=abs(input[i*wide+j]);
		  if  (input[i*wide+j]<0) sign[index]=1;
		  else sign[index]=0;
		}
  /*/////程序調試
		CString QFile="c:\\blockcoding.txt";
       CString Signfile="c:\\blocksign.txt";
  FILE *stream1,*signstream1;
  int No=0;
  stream1 = fopen( QFile, "w" );
  signstream1=fopen( Signfile, "w" );
  for (i=0;i<high;i++)
   { 
	  fprintf( stream1, "%1s\n", " " );
	  fprintf(signstream1, "%1s\n", " " );
	  for (int j=0;j<wide;j++)  //width
	  {   if (sign[No]==0)  	  fprintf( stream1, "%7d", val[No] );
	      else if(sign[No]==1)    fprintf( stream1, "%7d", (-1)*val[No] );
	      
		  fprintf(signstream1, "%7d", sign[No] );
	  	  No=No+1;
	  }
	  fprintf( stream1, "%1s\n", " " );
	  fprintf(signstream1, "%1s\n", " " );
   }
   fclose( stream1 ); 
   fclose(signstream1); 
   ////////*/
   
     for (i=indexlen/16;i<indexlen/4;i++)
	 { dmax[i]=val[4*i]|val[4*i+1]|val[4*i+2]|val[4*i+3];
	   //if (dmax[i]<2) dmax[i]=0;
	   //val[4*i]=val[4*i+1]=val[4*i+2]=val[4*i+3]=0;
	   
	 }
	 if (indexlen/64>0)
	 {  for (i=indexlen/64;i<indexlen/16;i++)  gmax[i]=dmax[4*i]|dmax[4*i+1]|dmax[4*i+2]|dmax[4*i+3];
	    for (i=indexlen/64;i<indexlen/16;i++)  dmax[i]=val[4*i]|val[4*i+1]|val[4*i+2]|val[4*i+3]|gmax[i];
	    //if (dmax[i]<2) dmax[i]=0;
	//	if (gmax[i]<2) gmax[i]=0;
	 }
	 if (indexlen/256>0)
	 {  for (i=indexlen/256;i<indexlen/64;i++)	 gmax[i]=dmax[4*i]|dmax[4*i+1]|dmax[4*i+2]|dmax[4*i+3];
	    for (i=indexlen/256;i<indexlen/64;i++)	  dmax[i]=val[4*i]|val[4*i+1]|val[4*i+2]|val[4*i+3]|gmax[i];
	   // if (dmax[i]<2) dmax[i]=0;
	//	if (gmax[i]<2) gmax[i]=0;

	 }
	 if (indexlen/1024>0)
	 {  for (i=indexlen/1024;i<indexlen/256;i++)	 gmax[i]=dmax[4*i]|dmax[4*i+1]|dmax[4*i+2]|dmax[4*i+3];
	    for (i=indexlen/1024;i<indexlen/256;i++)	  dmax[i]=val[4*i]|val[4*i+1]|val[4*i+2]|val[4*i+3]|gmax[i];
	   // if (dmax[i]<2) dmax[i]=0;
	//	if (gmax[i]<2) gmax[i]=0;

	 }
	 if (indexlen/4096>0)
	 {  for (i=indexlen/4096;i<indexlen/1024;i++)	 gmax[i]=dmax[4*i]|dmax[4*i+1]|dmax[4*i+2]|dmax[4*i+3];
	    for (i=indexlen/4096;i<indexlen/1024;i++)	  dmax[i]=val[4*i]|val[4*i+1]|val[4*i+2]|val[4*i+3]|gmax[i];
	    
	 }
     if (indexlen/16384>0)
	 {  for (i=indexlen/16384;i<indexlen/4096;i++)	 gmax[i]=dmax[4*i]|dmax[4*i+1]|dmax[4*i+2]|dmax[4*i+3];
	    for (i=indexlen/16384;i<indexlen/4096;i++)	  dmax[i]=val[4*i]|val[4*i+1]|val[4*i+2]|val[4*i+3]|gmax[i];
	 }
	    if (indexlen/65536>0)
	 {  for (i=indexlen/65536;i<indexlen/16384;i++)	 gmax[i]=dmax[4*i]|dmax[4*i+1]|dmax[4*i+2]|dmax[4*i+3];
	    for (i=indexlen/65536;i<indexlen/16384;i++)	  dmax[i]=val[4*i]|val[4*i+1]|val[4*i+2]|val[4*i+3]|gmax[i];
	 }

	d=wide/int(pow(2,levels));
	c=high/int(pow(2,levels));
    Idc=d*c;
	unsigned char MIP=0,MNP=1,MSP=2,MCP=3,MD=4,MG=5;
	unsigned char MN2=8,MN3=9,MN4=10,MN5=11,MN6=12,MN7=13,MN8=14,MN9=15;
	for (i=0;i<16;i++) skip[i]=1;
	skip[MIP]=1;skip[MNP]=1;skip[MCP]=1;skip[MSP]=1;
    skip[MD]=4; skip[MG]=16; 
	skip[MN2]=16; skip[MN3]=64; skip[MN4]=256; 
	skip[MN5]=1024;skip[MN6]=4096; skip[MN7]=16384;
    for (i=0;i<16;i++) isskip[i]=0;
	isskip[MIP]=4;		isskip[MNP]=4;     isskip[MCP]=4; isskip[MSP]=4;
    isskip[MD]=4;		isskip[MG]=16; 
	isskip[MN2]=16;		isskip[MN3]=64;    isskip[MN4]=256; 
	isskip[MN5]=1024;	isskip[MN6]=4096;  isskip[MN7]=16384;
	for (i=0;i<Idc;i++) mark[i]=MIP;
	for (i=Idc;i<4*Idc;i++) 
	{mark[i]=MD;
	push(mark,i);}
    //主算法
    int outlocal=0,ql=this->Quan_levels;
	int s=int(pow(2,ql));
	// 非顯著像素通道
 while(s>1)
 {  s=s/2;
	i=0;
	while (i<indexlen)
		{if (mark[i]==MIP) 
			{d=val[i] & s;
			this->BitWrite(outbit,outlocal,d);
			outlocal=outlocal+1;
			if (d>0)
				{
				BitWrite(outbit,outlocal,sign[i]);  //輸出符號位
				outlocal=outlocal+1;
				mark[i]=MNP;
				}
		    i=i+1;
			}
	      else  i=i+skip[mark[i]];
		}
	  int debugpoint=0;
   i=0;
   t=0;
	while (i<indexlen)
	 {if( mark[i]==MD)
		{d=dmax[i/4] & s;
		 BitWrite(outbit,outlocal,d);  //輸出符號位
		 outlocal=outlocal+1;
		if (d>0)
			{mark[i]=MCP; 
		     mark[i+1]=MCP;mark[i+2]=MCP;mark[i+3]=MCP;
			 if ((4*i)<indexlen) mark[4*i]=MG;
			}
		else i=i+4;
		}
	  else if(mark[i]==MG)
			{d=gmax[i/16]&s;
	         BitWrite(outbit,outlocal,d);
			 outlocal=outlocal+1;
	          if (d>0)
			  {mark[i]=mark[i+4]=MD;
			   mark[i+8]=mark[i+12]=MD;
			   if(i<(wide*high/4)){
			   push(mark,i);  push(mark,i+4);  push(mark,i+8);  push(mark,i+12);
			   }
			   }
			  else i=i+16;
			}
	  else 	if(mark[i]==MCP)
		/*
	  {   mark[i]=MIP;mark[i+1]=MIP; mark[i+2]=MIP; mark[i+3]=MIP;
		  int d0=0,d1=0,d2=0,d3=0,offset=0;
	      d0=val[i]&s;d1=val[i+1]&s;d2=val[i+2]&s;d3=val[i+3]&s;
		  if ((d0==0)&&(d1==0)&&(d2==0)&&(d3==0))    BitWrite(outbit,outlocal++,0);
		  else {BitWrite(outbit,outlocal++,1);
		        for (offset=0; offset<4;offset++)
				{d=val[i+offset]&s;
				 BitWrite(outbit,outlocal++,d); 
				 if (d>0)
				 {BitWrite(outbit,outlocal++,sign[i+offset]); mark[i+offset]=MNP;}
				}
			}
		  
		  i=i+4;
	  }
	  //*/
		/*
	  {   mark[i]=MIP;mark[i+1]=MIP; mark[i+2]=MIP; mark[i+3]=MIP;
		  int d0=0,d1=0,d2=0,d3=0,offset=0;
	      d0=val[i]&s;d1=val[i+1]&s;d2=val[i+2]&s;d3=val[i+3]&s;
		  if ((d0==0)&&(d1==0)&&(d2==0)&&(d3==0))    BitWrite(outbit,outlocal++,0);
		  else {BitWrite(outbit,outlocal++,1);
		      if (d0==1) offset=0;
	    	  if ((d0==0)&&(d1==1)) offset=1;
		      if ((d0==0)&&(d1==0)&&(d2==1))   offset=2;
              if ((d0==0)&&(d1==0)&&(d2==0)&&(d3==1))   offset=3;
              if (offset==0) {BitWrite(outbit,outlocal++,0); BitWrite(outbit,outlocal++,0);}
			  if(offset==1) {BitWrite(outbit,outlocal++,0); BitWrite(outbit,outlocal++,1);}
		      if(offset==2) {BitWrite(outbit,outlocal++,1); BitWrite(outbit,outlocal++,0);}
		      if(offset==3) {BitWrite(outbit,outlocal++,1); BitWrite(outbit,outlocal++,1);}
               BitWrite(outbit,outlocal++,sign[i+offset]); //寫入第一個顯著性系數的符號
		       mark[i+offset]=MNP;
               offset++;
			   while(offset<4)
				{ d=val[i+offset]&s;
				 BitWrite(outbit,outlocal++,d); 
				 if (d>0)
				 {BitWrite(outbit,outlocal++,sign[i+offset]); mark[i+offset]=MNP;}
				 offset++;
			   }
			}
		  
		  i=i+4;
	  }
	  //*/
			 /*
	  {   mark[i]=MIP;mark[i+1]=MIP; mark[i+2]=MIP; mark[i+3]=MIP;
		  int d0=0,d1=0,d2=0,d3=0,offset=0;
	      d0=val[i]&s;d1=val[i+1]&s;d2=val[i+2]&s;d3=val[i+3]&s;
		  if ((d0==0)&&(d1==0)&&(d2==0)&&(d3==0))  { BitWrite(outbit,outlocal++,0); offset=4;}
		  if (d0==1) offset=0;
		  if ((d0==0)&&(d1==1)) offset=1;
		  if ((d0==0)&&(d1==0)&&(d2==1))   offset=2;
          if ((d0==0)&&(d1==0)&&(d2==0)&&(d3==1))   offset=3;
		  
          if (offset<4) 
		   { BitWrite(outbit,outlocal++,1);
             //寫入第一個顯著性系數的位置信息
		     if (offset==0) {BitWrite(outbit,outlocal++,0); BitWrite(outbit,outlocal++,0);}
			 if(offset==1) {BitWrite(outbit,outlocal++,0); BitWrite(outbit,outlocal++,1);}
		     if(offset==2) {BitWrite(outbit,outlocal++,1); BitWrite(outbit,outlocal++,0);}
		     if(offset==3) {BitWrite(outbit,outlocal++,1); BitWrite(outbit,outlocal++,1);}
		     BitWrite(outbit,outlocal++,sign[i+offset]); //寫入第一個顯著性系數
		     mark[i+offset]=MNP;
	    	    offset++;
		   int sbits;
		   for( sbits=offset;sbits<4;sbits++)
			{ 
			 d=val[i+sbits]&s;
			 BitWrite(outbit,outlocal++,d); 
			 if (d>0)
				{BitWrite(outbit,outlocal++,sign[i+offset]);
				mark[i+sbits]=MNP;
				}
			 else mark[i+sbits]=MIP;
           
			}
		  }
		  i=i+4;
	  }
	  //*/
	
         //  /*
			  {
		      d=val[i]&s;
	          BitWrite(outbit,outlocal,d);  
			  outlocal=outlocal+1;
			  if (d>0)
			  {BitWrite(outbit,outlocal,sign[i]);
			   outlocal=outlocal+1;
			   mark[i]=MNP;}
			  else mark[i]=MIP;
			  i=i+1;
			  
			}
			//*/
		
	     else 
	  {   t=isskip[mark[i]];
		  i=i+t;
	  }
	 

	}  //while (i<indexlen)
    //精細化通道
	int ii=0;
     while (ii<indexlen)
	 { if (mark[ii]==MSP)
		{d=val[ii]&s;
	     BitWrite(outbit,outlocal,d);
		 d=0;
		outlocal=outlocal+1;
		ii=ii+1;}
	    
	   else if (mark[ii]==MNP)
	   {mark[ii]=MSP;
	   ii=ii+1;}
	   else 
	   {   t=skip[mark[ii]];
		   ii=ii+t;
	   }
	 }
  //  int x=0;
 
 }
   
   delete[] dmax;
   delete[] gmax;
   delete[] mark;
  return outlocal;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人一区二区| 久久精品人人做人人综合 | 欧美一区二区三区白人| 26uuu精品一区二区在线观看| 国产精品国产三级国产普通话三级| 亚洲国产精品影院| 成人综合激情网| 日韩一区二区在线看片| 亚洲青青青在线视频| 国产美女一区二区| 欧美精品日韩精品| 日韩一区在线看| 国内久久婷婷综合| 欧美一区二区三区啪啪| 亚洲综合图片区| 一本一本久久a久久精品综合麻豆| 欧美成人高清电影在线| 亚洲gay无套男同| 欧美中文字幕一区| 亚洲人成网站色在线观看| 国产精品一区二区不卡| 日韩免费成人网| 三级成人在线视频| 欧美日韩中文国产| 亚洲国产婷婷综合在线精品| 色伊人久久综合中文字幕| 国产精品乱子久久久久| 国产高清久久久| 欧美精品一区二区久久婷婷| 久久99精品网久久| 精品国产91乱码一区二区三区| 美国一区二区三区在线播放| 欧美老年两性高潮| 日本美女视频一区二区| 91精品国产综合久久久久久久 | 国产日韩欧美一区二区三区综合| 奇米影视在线99精品| 91精品国产乱码久久蜜臀| 午夜精品视频在线观看| 5566中文字幕一区二区电影| 午夜视频一区二区三区| 欧美日韩亚洲综合在线| 亚洲6080在线| 日韩欧美国产麻豆| 国产精品一线二线三线精华| 国产人久久人人人人爽| 91在线你懂得| 一区二区三区丝袜| 欧美精品v国产精品v日韩精品| 婷婷一区二区三区| 欧美mv日韩mv| 国产91清纯白嫩初高中在线观看| 中文字幕一区二区三区四区不卡| 91网站最新网址| 视频一区视频二区中文字幕| 日韩欧美国产电影| 高清shemale亚洲人妖| 综合av第一页| 欧美日韩国产综合草草| 精品一区二区av| 日韩毛片一二三区| 欧美日韩久久一区| 精品一区二区三区在线播放 | 亚洲国产乱码最新视频| 91麻豆精品国产91久久久资源速度| 美女爽到高潮91| 国产精品盗摄一区二区三区| 欧美亚洲国产bt| 国产一区二区在线看| 国产精品素人一区二区| 7777精品伊人久久久大香线蕉| 国产一区二区三区免费播放| 亚洲视频狠狠干| 日韩亚洲欧美一区二区三区| 国产成人福利片| 五月激情综合色| 日本一区二区高清| 欧美日本在线视频| 99视频一区二区| 久久国产剧场电影| 一区二区三区中文字幕电影 | 一区二区三区不卡视频| 精品少妇一区二区三区在线视频| 成人动漫av在线| 久久99精品久久久| 亚洲激情自拍偷拍| 国产欧美日韩精品一区| 欧美日韩午夜在线视频| 波多野结衣亚洲一区| 精品一区二区三区在线播放| 亚洲乱码日产精品bd | 欧美精品欧美精品系列| 波多野结衣精品在线| 蜜桃视频第一区免费观看| 亚洲黄色免费网站| 国产精品嫩草影院com| 精品理论电影在线观看| 欧美日韩一区二区三区高清| av在线不卡免费看| 国产精品综合av一区二区国产馆| 天天综合网 天天综合色| 亚洲综合一二区| 国产女同互慰高潮91漫画| 这里只有精品免费| 欧美精品第1页| 欧美精品一二三| 91福利在线免费观看| 成人免费av网站| 国产大陆a不卡| 韩国视频一区二区| 久99久精品视频免费观看| 日韩不卡免费视频| 丝袜亚洲另类欧美| 午夜视频在线观看一区二区三区 | 国产农村妇女毛片精品久久麻豆| 日韩一区二区三区电影| 7777精品伊人久久久大香线蕉超级流畅| 色婷婷av久久久久久久| 色香色香欲天天天影视综合网| av亚洲精华国产精华精| 成av人片一区二区| 91网站视频在线观看| 99riav一区二区三区| 91视频在线观看| 色天使色偷偷av一区二区| 99麻豆久久久国产精品免费| 色综合一区二区三区| 一本色道久久综合狠狠躁的推荐| 一本大道久久a久久综合| 91在线视频网址| 日本韩国视频一区二区| 欧美日韩久久一区| 欧美成人vps| 国产视频亚洲色图| 最新国产の精品合集bt伙计| 亚洲欧美日本在线| 亚洲6080在线| 国产激情精品久久久第一区二区| 国产成人精品一区二区三区四区| 波多野结衣亚洲| 色老头久久综合| 欧美一区二区国产| 久久综合久久综合久久综合| 国产精品嫩草99a| 亚洲一区二区三区四区在线免费观看 | av网站一区二区三区| 91搞黄在线观看| 精品国产一区二区三区av性色| 国产欧美日韩在线视频| 亚洲专区一二三| 精品一区二区综合| 91啪在线观看| 日韩精品专区在线影院重磅| 国产精品网站在线| 日韩一区欧美二区| 成人黄色电影在线 | 日韩女优毛片在线| 中文字幕+乱码+中文字幕一区| 亚洲午夜国产一区99re久久| 久久成人免费网站| 一本大道av一区二区在线播放| 日韩一区二区不卡| 国产精品久久久久影视| 日本va欧美va欧美va精品| 成人综合婷婷国产精品久久蜜臀 | 久久99精品国产91久久来源| 成人av网址在线观看| 欧美一级欧美三级在线观看| 国产精品入口麻豆原神| 看电影不卡的网站| 日本道精品一区二区三区| 久久久国际精品| 性久久久久久久| 91玉足脚交白嫩脚丫在线播放| 日韩欧美中文一区| 亚洲午夜久久久久中文字幕久| 国产成人自拍在线| 欧美sm美女调教| 午夜视频在线观看一区| 色悠久久久久综合欧美99| 久久久久久99精品| 美女高潮久久久| 91精品国产综合久久福利| 亚洲精品亚洲人成人网| 不卡影院免费观看| 久久久久久久精| 久草这里只有精品视频| 制服丝袜亚洲播放| 亚洲成年人网站在线观看| 色中色一区二区| 国产精品乱人伦| 国产成人免费视频| 久久综合九色综合97婷婷女人 | 99国产精品久久久久久久久久| 久久超碰97人人做人人爱| 中文字幕av资源一区| 欧美日韩精品一二三区| 成人黄色网址在线观看| 91丨九色丨黑人外教| 日韩欧美电影一二三|