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

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

?? jpeg_ls.cpp

?? 圖像無損壓縮 TI常用例程 希望能對大家有所幫助
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		   }
		   if(RUNindex>0)
			   RUNindex--;
		   for(j=0;j<output;j++){
			   *(f+LinX*(y+2)+RowX)=Ra;
			   RowX++;}
              if(RowX>y){
				   RowX=RowX-y;
				   LinX++;
			   }
		  	  
		  if(decode!=0)
		  {
			   while(((1<<(size-1))&decode)==0){
				   size--;
                   cnt++;
			   }
			   size--;
			   if(size==0)
				   decode=0;
			   else
			       decode=(decode<<(32-size))>>(32-size);
		   }
		   else{ 
			       while(decode==0)
				   {
			       fread(&buffer,1,1,fp);
			       decode=buffer;
				   size=size+8;
	               cnt=size;	   
				   }
		   int q=7;
		   while(((1<<q)&decode)==0)
			   q--;
           cnt=cnt-8+7-q; 		
           if(q==0)
			   decode=0;
		   else
		        decode=(decode<<(32-q))>>(32-q);		
           size=q;
			  }
         Rb=*(f+(LinX-1)*(y+2)+RowX);
		 if(abs(Ra-Rb)<=NEAR)
			 RItype=1;
		 else
			 RItype=0;
		 if(RItype==1)
			 Px=Ra;
		 else
			 Px=Rb;
		 if((RItype==0)&&(Ra>Rb))
		 {
			 SIGN=-1;
		 }
		 else
			 SIGN=1;
		 if(RItype==0)
			 TEMP=A[365];
		 else
			 TEMP=A[366]+(N[366]>>1);
		  Q=RItype+365;
		  AQ=A[Q];
		   A[Q]=TEMP;
		   k=LG(Q);
		 
		   if(cnt<(LIMIT-J[RUNindex]-qbpp-2))
		   {
                  if(k<=size)
				  {
                   output=decode>>(size-k);
		           if(size==k)
					   decode=0;
				   else
				       decode=((decode<<(32-size+k)))>>(32-size+k);
                   size=size-k;		   
				  }

		          else
				  {
			       fread(&buffer,1,1,fp);
			       decode1=0;
			       if(k-size<=8)
				   decode1=decode<<(k-size);
			       while(k-size>8)
				   {
				   decode1=decode1+(decode<<(k-size))+(buffer<<(k-size-8));
                   k=k-8;
				   fread(&buffer,1,1,fp);
				   decode=0;
				   }
			       output=decode1+(buffer>>(8+size-k));
			       if(8-k+size==0)
					   decode=0;
				   else
				       decode=(buffer<<(32-8+k-size))>>(32-8+k-size);
			       size=8-k+size;
				  } 
		           EMErrval=(cnt<<k)+output;
		   }
              else
			  { 
			   if(qbpp<=size)
				  {
                 output=decode>>(size-qbpp);
                 if(size-qbpp==0)
					 decode=0;
				 else
		          decode=((decode<<(32-size+qbpp)))>>(32-size+qbpp);
				 size=size-qbpp;
			   }
		   else
		   {
			   fread(&buffer,1,1,fp);
			   decode1=0;
	           	if(qbpp-size<=8)
					decode1=decode<<(qbpp-size);
			   while(qbpp-size>8)
			   {
				   decode1=decode1+(decode<<(qbpp-size))+(buffer<<(qbpp-size-8));
                   qbpp=qbpp-8;
				   fread(&buffer,1,1,fp);
				   decode=0;
			   }
			   output=decode1+(buffer>>(8+size-qbpp));
			  if(8-qbpp+size==0)
				  decode=0;
			  else
			      decode=(buffer<<(32-8+qbpp-size))>>(32-8+qbpp-size);
			   size=8-qbpp+size;
		   }
		   EMErrval=output+1;
        }             
//         **************************************         
//	       *      由EMErrval求解Errval          *
//         **************************************			  
	     if(((EMErrval&1)==0)&&(RItype==1))
			 map=1;
		 else if(((EMErrval&1)==1)&&(RItype==1))
			 map=0;
		 else if(((EMErrval&1)==1)&&(RItype==0))
			 map=1;
		 else if(((EMErrval&1)==0)&&(RItype==0))
			 map=0;
	
		 if((map==0&&k!=0)||(map==0&&k==0&&2*Nn[Q-365]>=N[Q])||(map==1&&k==0&&2*Nn[Q-365]<N[Q]))
             Errval=(EMErrval+RItype+map)>>1;
		 else
             Errval=-((EMErrval+RItype+map)>>1); 
		 flag=Errval;

		 Errval=Errval*(2*NEAR+1);
		 if(SIGN==-1)
			 Errval=-Errval;
			 
		 Rx=Errval+Px;
		 
		 if(Rx<(-NEAR))
			 Rx=Rx+RANGE*(2*NEAR+1);
		 if(Rx>(MAXVAL+NEAR))
			 Rx=Rx-RANGE*(2*NEAR+1);
		 if(Rx<0)
			 Rx=0;
		 else if(Rx>MAXVAL)
			 Rx=MAXVAL;
		 *(f+LinX*(y+2)+RowX)=Rx;
//       **********************************
//       *           更新其變量           *
//       **********************************         
		 if(flag<0)
			 Nn[Q-365]=Nn[Q-365]+1;
             A[Q]=AQ;
             A[Q]=A[Q]+((EMErrval+1-RItype)>>1);
         if(N[Q]==RESET)
		 {
	     A[Q]=A[Q]>>1;
	     N[Q]=N[Q]>>1;
		 Nn[Q-365]=Nn[Q-365]>>1;
		 }
          N[Q]=N[Q]+1;

}



void JPEG_LS::RegularModeProcessing(int y, int Ra, int Rb, int Rc, int Rd, int Ix, int D1, int D2, int D3, float T1, float T2, float T3)
{
	
//       ********************
//       *  當地梯度的量化  *
//       ********************
		int Di[4]={0,D1,D2,D3};
		int Qi[4],Errval,MErrval;
		int i,k,SIGN,Rx,Px;
        unsigned interim;
		output=0;
		
	
			for(i=1;i<4;i++)
		{
			if(Di[i]<=-T3)      Qi[i]=-4;
			else if(Di[i]<=-T2) Qi[i]=-3;
			else if(Di[i]<=-T1) Qi[i]=-2;
			else if(Di[i]<-NEAR)Qi[i]=-1;
			else if(Di[i]<=NEAR)Qi[i]=0;
			else if(Di[i]<T1)   Qi[i]=1;
			else if(Di[i]<T2)   Qi[i]=2;
			else if(Di[i]<T3)   Qi[i]=3;
			else Qi[i]=4;
		}
//         ********************************************** 
//         *  完成從矢量(Q1,Q2,Q3)到Q的一一對應的映射  *
//         **********************************************
		    if((Qi[1]<0)||((Qi[1]==0)&&(Qi[2]<0))||(((Qi[1]==0)&&(Qi[2]==0))&&(Qi[3]<0)))
			SIGN=-1;
			else     SIGN=1;
			if(SIGN==-1)
			{  
				for(i=1;i<4;i++)
			        Qi[i]=Qi[i]*SIGN;
			}
			Q=(Qi[1]*9+Qi[2])*9+Qi[3];/*人為設定*/
//          ***************************** 			 
//          *    計算Px的值(預測)     *
//          *****************************			
	if(Rc>=__max(Ra,Rb))
		Px=__min(Ra,Rb);
	else{
		if(Rc<=__min(Ra,Rb))
			Px=__max(Ra,Rb);
		else
			Px=Ra+Rb-Rc;
	}/*邊緣檢測*/
/*		if(Rc<=__max(Ra,Rb)){
				if(Rc<=__min(Ra,Rb)){
					if((10<=(Rd-Rb))&&(abs(Ra-Rb))<=10&&(__min(Ra,Rb)-Rc)>=5&&(Rd-Rb)<=50)
						Px=Rd/2+__max(Ra,Rb)/2;
					else 
						Px=__max(Ra,Rb);}
				else
					Px=Ra+Rb-Rc;}
			else{
				if(Rc-Ra>=10&&Rd<Rb&&Ra-Rb<=5)
					Px=Rd/2+__min(Ra,Rb)/2;
				else 
					Px=__min(Ra,Rb);
			}	*/	
	if(SIGN==1)
		Px=Px+C[Q];
	else
		Px=Px-C[Q];
//       **********************************	
//       *  將Px規整到(0..MAXVAL)的范圍  *
//       **********************************
	if(Px>MAXVAL)
		Px=MAXVAL;
	else if(Px<0) 
		Px=0;/*預測修正*/
//       ******************** 	
//       *    計算Errval    *
//       ********************
   	Errval=Ix-Px;

	if(SIGN==-1)
		Errval=-Errval;

	if(Errval>0)
		Errval=(Errval+NEAR)/(2*NEAR+1);
	else
		Errval=-(NEAR-Errval)/(2*NEAR+1);/*量化預測誤差*/
	Rx=Px+SIGN*Errval*(2*NEAR+1);/*重建*/
	
	if(Rx<0)
		Rx=0;
	else if(Rx>MAXVAL)
		Rx=MAXVAL;
    *(f+LinX*(y+2)+RowX)=Rx;/*用重建值代替實際值*/
//        ******************************************************	
//        *   將Errval規整到[-(RANGE-1)/2..+RANGE/2)的范圍     *
//        ******************************************************
	Errval=ModRange(Errval);
//        ***********************************	
//        *    將Errval映射到MErrval        *
//        *********************************** 
	k=LG(Q);
	if((NEAR==0)&&(k==0)&&(2*B[Q]<=-N[Q]))
	{
		if(Errval>=0)
			MErrval=2*Errval+1;
		else
			MErrval=-2*(Errval+1);
	}
	else{
		if(Errval>=0)
			MErrval=2*Errval;
		else
			MErrval=-2*Errval-1;
	}
//        **********************************	
//        *      對MErrval進行編碼         *
//        **********************************
	    interim=MErrval;
		interim=interim>>k;/*除最低k位以外的高位*/
		if(interim<((unsigned)(LIMIT-qbpp-1)))
		{
			unsigned b,c;
 			c=~(~0<<k);
			b=c&MErrval;/*截取MErrval的最低k位*/
			output=(output<<(interim+1))+1;/*左移interim+1得到interim+1個零,加一后即interim個零接一個1*/
   			output=output<<k;
			output=output+b;
//         *******************************   
//         *     向二進制文件寫碼流      *
//         *******************************			
		    pp=cnt;
			cnt=cnt+interim+1+k; 		
            writecode(&cnt,&pp,&output,&code);
			
		}
		else
		{
			unsigned b,c;
			output=(output<<(LIMIT-qbpp))+1;/*當前碼流為:LIMIT-qbpp-1個零,一個1*/
			output=output<<qbpp;/*后接qbpp位的數字*/
			c=~(~0<<qbpp);
			b=c&(MErrval-1);/*取MErrval-1的后qbpp位*/
			output=output+b;
	        pp=cnt;
			cnt=cnt+LIMIT; 		
            writecode(&cnt,&pp,&output,&code);

		}
//      *********************************		
//      *        更新各個變量           *
//      *********************************		
		B[Q]=B[Q]+Errval*(2*NEAR+1);
		A[Q]=A[Q]+abs(Errval);
		if(N[Q]==RESET)
		{
			A[Q]=A[Q]>>1;
			B[Q]=B[Q]>>1;
			N[Q]=N[Q]>>1;
		}
		N[Q]=N[Q]+1;/*N[Q]指此種上下文出現的次數,最多為64次*/
//		Nt[Q]=Nt[Q]+1;
		if(B[Q]<=-N[Q]){
			B[Q]=B[Q]+N[Q];
			if(C[Q]>MIN_C)
				C[Q]=C[Q]-1;
			if(B[Q]<=-N[Q])
				B[Q]=-N[Q]+1;
		}
		else if(B[Q]>0){
			B[Q]=B[Q]-N[Q];
			if(C[Q]<MAX_C)
				C[Q]=C[Q]+1;
			if(B[Q]>0)
				B[Q]=0;
		}

}

void JPEG_LS::JPEG_LSDeCompress()
{
	int x,y,i,j;
	int Ra,Rb,Rc,Rd,D1,D2,D3;
	int BASIC_T1=3,BASIC_T2=7,BASIC_T3=21;
	float T1,T2,T3;
 	int qbpp,filemode;
	struct timeb start_time,end_time;
	int second_d;
	x=y=256;
    ftime(&start_time);

	Initial();

//計算各參數的值
	RANGE=((int)((MAXVAL+2*NEAR)/(2*NEAR+1)))+1;
    qbpp=-(int)(floor(-log(RANGE)/log(2.0)));
	bpp=__max(2,-(int)(floor(-log(MAXVAL+1)/log(2.0))));
    LIMIT=2*(bpp+__max(8,bpp));
     if(MAXVAL>=128){
		T1=CLAMP_1((float)((int)(__min(MAXVAL,4095)+128)/256)*(BASIC_T1-2)+2+3*NEAR);
        T2=CLAMP_2((float)((int)(__min(MAXVAL,4095)+128)/256)*(BASIC_T2-3)+3+5*NEAR,T1);
        T3=CLAMP_3((float)((int)(__min(MAXVAL,4095)+128)/256)*(BASIC_T3-4)+4+7*NEAR,T2);}
		else{
			T1=CLAMP_1((float)__max(2,BASIC_T1/(int)(256/(MAXVAL+1))+3*NEAR));
			T2=CLAMP_2((float)__max(3,BASIC_T2/(int)(256/(MAXVAL+1))+5*NEAR),T1);
            T3=CLAMP_3((float)__max(4,BASIC_T3/(int)(256/(MAXVAL+1))+7*NEAR),T2);
		}

	f=(int *)calloc((x+1)*(y+2),sizeof(int));	  
		
	if((fp=fopen("E:\\cuprite1.raw","rb"))==NULL)
	{
		AfxMessageBox("Can not Open File!");
	    return;
	}

// 對各數組的初始化    
	for(j=0;j<365;j++)
	{
		A[j]=__max(2,(RANGE+(1<<5))/(1<<6));         
		N[j]=1;
		B[j]=0;
		C[j]=0;
	}
	A[365]=A[0];
	A[366]=A[0];
	N[365]=1;
	N[366]=1;

// 讀入變量 
 	for(i=0;i<(x+1)*(y+2);i++)
	*(f+i)=0;
	
   while(RowX<=y&&LinX<=x)
	{ 
	Ra=(*(f+LinX*(y+2)+RowX-1));
	Rb=(*(f+(LinX-1)*(y+2)+RowX));
    Rc=(*(f+(LinX-1)*(y+2)+RowX-1));
	Rd=(*(f+(LinX-1)*(y+2)+RowX+1));
	D1=Rd-Rb;
	D2=Rb-Rc;
	D3=Rc-Ra;
	

//  選擇解碼方式  
	if((abs(D1)<=NEAR)&&(abs(D2)<=NEAR)&&(abs(D3)<=NEAR))
		RunModeProcessing(qbpp,Ra,Rb,y);
    else
		DeModeProcessing(qbpp,Ra,Rb,Rc,Rd,D1,D2,D3,y,T1,T2,T3);
	if(RowX==y)
	{
	  *(f+LinX*(y+2)+y+1)=*(f+LinX*(y+2)+y);
      *(f+(LinX+1)*(y+2))=*(f+LinX*(y+2)+1);
	}
	      
	RowX++;
   	if(RowX>y)
	{
		RowX=RowX-y;
		LinX++;
	}
}
    fclose(fp);

//  文件輸出格式選擇 
    if((fp=fopen("E:\\decuprite.raw","wb"))==NULL)
	{
	   AfxMessageBox("Can not Open File!");
	   return;
	}
	for(i=1;i<x+1;i++)
	   for(j=1;j<y+1;j++)
        fwrite((f+i*(y+2)+j),1,1,fp);	
  
 	fclose(fp);

//  計算編碼時間 
	ftime(&end_time);
	second_d=end_time.millitm-start_time.millitm;
	second_d=second_d+(end_time.time-start_time.time)*1000;
//	printf("The encoding costs:%.3f seconds.\n",(float)second_d/1000.0);
	

}

void JPEG_LS::DeModeProcessing(int qbpp, int Ra, int Rb, int Rc, int Rd, int D1, int D2, int D3, int y, float T1, float T2, float T3)
{
	
//       ********************
//       *  當地梯度的量化  *
//       ********************
		int Di[4]={0,D1,D2,D3};
		int Qi[4],Q;
		int SIGN,k,q,decode1,Rx,i;
		int Px,Errval,MErrval;
        int cnt=0;
		output=0;	
		for(i=1;i<4;i++)
		{
			if(Di[i]<=-T3)      Qi[i]=-4;
			else if(Di[i]<=-T2) Qi[i]=-3;
			else if(Di[i]<=-T1) Qi[i]=-2;
			else if(Di[i]<(-NEAR)) Qi[i]=-1;
			else if(Di[i]<=NEAR) Qi[i]=0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕亚洲综合久久菠萝蜜| 欧美丰满一区二区免费视频| 99久久久久免费精品国产| 乱中年女人伦av一区二区| 日韩—二三区免费观看av| 婷婷中文字幕一区三区| 亚洲一区二区视频在线观看| 一区二区三区**美女毛片| 日韩美女视频一区二区| 亚洲永久精品大片| 日韩精品三区四区| 国产伦精品一区二区三区免费迷| 国产成人免费视频精品含羞草妖精| 国产精品性做久久久久久| 粉嫩aⅴ一区二区三区四区| 99国产精品99久久久久久| 欧美影院精品一区| 日韩欧美中文字幕一区| 久久精品水蜜桃av综合天堂| 亚洲男人的天堂在线aⅴ视频| 亚洲韩国精品一区| 精品亚洲国产成人av制服丝袜 | 欧美精品色一区二区三区| 欧美人牲a欧美精品| 日韩欧美一区在线| 国产日韩欧美激情| 亚洲狠狠丁香婷婷综合久久久| 亚洲国产va精品久久久不卡综合| 麻豆精品一区二区av白丝在线| 国产乱码精品一品二品| 日本韩国欧美在线| 91玉足脚交白嫩脚丫在线播放| 日本韩国欧美在线| 久久精品视频在线免费观看| 亚洲国产视频网站| 懂色av一区二区三区免费观看| 欧美专区日韩专区| 久久精品人人做人人综合| 亚洲综合免费观看高清在线观看| 麻豆成人av在线| 在线观看91视频| 中文字幕不卡在线| 美女尤物国产一区| 欧美丝袜第三区| 中文乱码免费一区二区| 日韩精品视频网站| 色94色欧美sute亚洲线路一ni| 精品美女一区二区| 日韩av在线播放中文字幕| 播五月开心婷婷综合| 欧美mv日韩mv亚洲| 亚洲成人久久影院| av电影天堂一区二区在线观看| 日韩欧美aaaaaa| 三级亚洲高清视频| 91精彩视频在线| |精品福利一区二区三区| 国产精品一区二区91| 欧美一区二区视频观看视频| 一区二区三区精品| 91在线视频播放| 日本一二三不卡| 国产精品自拍网站| 精品免费日韩av| 精品一区在线看| 精品处破学生在线二十三| 免费xxxx性欧美18vr| 欧美精选一区二区| 三级影片在线观看欧美日韩一区二区| 一本一本大道香蕉久在线精品 | 在线综合亚洲欧美在线视频| 亚洲精品高清在线| 在线免费观看成人短视频| 亚洲综合久久久| 欧美色手机在线观看| 亚洲综合在线免费观看| 91老师国产黑色丝袜在线| 亚洲男人的天堂在线aⅴ视频| 91色乱码一区二区三区| 伊人色综合久久天天人手人婷| 色偷偷久久人人79超碰人人澡| 成人欧美一区二区三区| 91久久一区二区| 一区二区三区电影在线播| 欧美色视频在线观看| 天堂蜜桃91精品| 337p粉嫩大胆噜噜噜噜噜91av | 欧美人与禽zozo性伦| 日韩国产欧美视频| 精品成人一区二区三区| 国产精品一区二区黑丝| 国产精品美女久久久久aⅴ国产馆| 风间由美一区二区av101| 亚洲天堂av老司机| 欧美色中文字幕| 久久se这里有精品| 亚洲国产激情av| 色婷婷综合久久久中文字幕| 午夜久久久影院| www激情久久| 一本色道久久综合狠狠躁的推荐| 亚洲一区二区av电影| 欧美成人欧美edvon| 国产高清在线观看免费不卡| 一区二区三区在线视频观看58| 91精品中文字幕一区二区三区| 国产在线视频精品一区| 亚洲欧美区自拍先锋| 日韩亚洲欧美在线| 99久久99久久精品免费看蜜桃| 日韩国产精品久久| 亚洲国产电影在线观看| 欧美精品久久久久久久多人混战 | 91麻豆免费看片| 久久69国产一区二区蜜臀| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩另类国产亚洲欧美一级| 国产精品一级二级三级| 亚洲va天堂va国产va久| 椎名由奈av一区二区三区| 日韩精品一区二区三区老鸭窝| av激情亚洲男人天堂| 麻豆精品视频在线观看免费| 亚洲欧美色综合| 国产偷国产偷亚洲高清人白洁| 在线成人高清不卡| 91免费观看国产| 成人在线综合网站| 国产麻豆精品一区二区| 日日夜夜精品免费视频| 亚洲欧美一区二区三区极速播放| 国产亚洲一区字幕| 精品免费99久久| 欧美一区二区二区| 欧美美女黄视频| 91黄视频在线观看| 99视频精品在线| 成人一区二区三区中文字幕| 国内国产精品久久| 日本不卡一区二区| 天天综合日日夜夜精品| 亚洲一区二区欧美激情| 亚洲一区二区三区免费视频| 亚洲另类春色校园小说| 国产精品美女久久久久av爽李琼| 久久久久久久电影| 久久精品视频网| 国产日韩欧美一区二区三区综合| 欧美va日韩va| 久久久久久久久久久久久久久99| 精品少妇一区二区三区| 精品久久久三级丝袜| 精品久久五月天| 久久久夜色精品亚洲| 久久香蕉国产线看观看99| 精品国内二区三区| wwwwww.欧美系列| 欧美极品aⅴ影院| 亚洲欧美一区二区在线观看| 亚洲婷婷综合久久一本伊一区| 国产精品第四页| 一区二区三区精品在线观看| 午夜精品福利在线| 久久精品国产一区二区三区免费看| 日韩av一级电影| 精品一区二区在线免费观看| 国产一区二区三区久久久| 成人av资源站| 欧美性生活大片视频| 日韩欧美你懂的| 国产欧美一区二区精品性色| 亚洲天堂2016| 日韩精品午夜视频| 国产精品一二三区| 色播五月激情综合网| 欧美一区二区日韩| 中文成人综合网| 成人av电影观看| 欧美在线观看视频在线| 欧美日韩国产高清一区二区| 欧美成人高清电影在线| 中文字幕乱码日本亚洲一区二区| 亚洲精品自拍动漫在线| 日本中文在线一区| hitomi一区二区三区精品| 欧美亚洲国产bt| 久久久精品影视| 亚洲福利电影网| 国产91精品一区二区麻豆网站| 欧美系列一区二区| 久久日韩粉嫩一区二区三区| 亚洲一区二区视频在线观看| 韩国av一区二区| 欧美三级韩国三级日本三斤| 久久蜜桃一区二区| 日本亚洲最大的色成网站www| 五月婷婷久久综合| 精品国产一区二区三区久久久蜜月| 亚洲欧美一区二区视频| 国产精品亚洲人在线观看|