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

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

?? jpeg_ls.cpp

?? 圖像無損壓縮 TI常用例程 希望能對大家有所幫助
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
			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);
	c=1;
	if(Rc-__max(Ra,Rb)>=10)
				Px--;	}
	else{
		if(Rc<=__min(Ra,Rb)){
			Px=__max(Ra,Rb);
			c=1;
		 if(__min(Ra,Rb)-Rc>=10)
				Px++;}
		else{
			Px=Ra+Rb-Rc;
		c=0;}
	}
	if(c==0)
	Px=(Px+Ra+Rb)/3;*/
	/*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(Rc>=__max(Ra,Rb))
		Px=__min(Ra,Rb);
	else{
		if(Rc<=__min(Ra,Rb))
			Px=__max(Ra,Rb);
		else
			Px=Ra+Rb-Rc;
	}
	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;
//      ******************************************************
//      *            從碼流中恢復重建值Rx                    *
//      ******************************************************	
     k=LG(Q);

	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;/*以8bit為單位處理*/
	     cnt=size;	   
		}
		   q=7;/*預設高幾位形成的q=7(是處理單元能達到的最大值)*/
		   while(((1<<q)&decode)==0)
			   q--;
           cnt=cnt-8+7-q;/*0的個數*/ 		
           if(q==0)
			   decode=0;
		   else
		       decode=(decode<<(32-q))>>(32-q);/*處理后k位,之前置零*/
		   size=q;
	}

		   if(cnt<(LIMIT-qbpp-1))/*情況1*/
		   {
                  if(k<=size)
				  {
                   output=decode>>(size-k);/*得到后k位*/
				     if(size-k==0)
					   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));/*第二項表示在k<size的單元里,得到當前的k位數*/
			   if(8-k+size==0)
				   decode=0;
			   else
			       decode=(buffer<<(32-8+k-size))>>(32-8+k-size);/*處理結束,置零*/
			   size=8-k+size;
				 }
		   MErrval=(cnt<<k)+output;
		   }
           else/*情況2*/
		   { 
			   if(qbpp<=size)
				  {
                  output=decode>>(size-qbpp);
		          if(size==qbpp)
					  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;
				}
		   MErrval=output+1;
        }             

		 if((NEAR==0)&&(k==0)&&(2*B[Q]<=-N[Q]))
{
	if((MErrval&1)==1)
		Errval=(MErrval-1)>>1;
	else
		Errval=(-(MErrval>>1))-1;
}
else
{
	if((MErrval&1)==0)
		Errval=((MErrval)>>1);
	else
		Errval=-((MErrval+1)>>1);
}
//      *********************************		
//      *        更新各個變量           *
//      *********************************	

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;
Errval=Errval*(2*NEAR+1);
if(SIGN==-1)
  Errval=-Errval;
  Rx=Errval+Px;
if(Rx<(-NEAR))
   Rx=Rx+RANGE*(2*NEAR+1);
else 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(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;
	
		}
}

long JPEG_LS::JPEG_LSEncoding(int *image, int height, int width)
{
	int i,j,Ra,Rb,Rc,Rd,Ix,D1,D2,D3;
    int BASIC_T1=3,BASIC_T2=7,BASIC_T3=21;
	float T1,T2,T3;
	struct timeb start_time,end_time;
	int second_d;
	int x,y;
	x=height;
	y=width;
	CT=0;

    Initial();
	
 	ftime(&start_time);

	f=new int[(x+1)*(y+2)]; /*補零后的圖像多兩列,一行*/

	
	 if((fp=fopen("E:\\out.ls","wb"))==NULL)
	{	  
	 	AfxMessageBox("Can not Open File!");
	}
       

//  計算各參數的值 
	for(i=1;i<=x;i++)
		for(j=1;j<=y;j++)
		{
			*(f+i*(y+2)+j)=image[(i-1)*y+j-1];/*前面空一行,以作重建值。從第二行寫起。此時補的行還是零,到后面預測時補入Rb等。*/
            if(*(f+i*(y+2)+j)>MAXVAL)
				MAXVAL=*(f+i*(y+2)+j);/*先求實際最大值*/
		}

		
		for(i=0;(1<<i)<=MAXVAL;i++);
		MAXVAL=(1<<i)-1;/*規整到2的n次方故取大于實際MAXVAL的最小2的n次方*/
	    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);
		}		
 
// 對各數組的初始化  
   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<y+3;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));
	   Ix=(*(f+LinX*(y+2)+RowX));
       D1=Rd-Rb;
       D2=Rb-Rc;
	   D3=Rc-Ra;

 // 選擇編碼方式       
	if((abs(D1)<=NEAR)&&(abs(D2)<=NEAR)&&(abs(D3)<=NEAR))
		RunModeProcessing(x,y,Ra,Rb,Rc,Rd,Ix);
    else
		RegularModeProcessing(y,Ra,Rb,Rc,Rd,Ix,D1,D2,D3,T1,T2,T3);
	    RowX++;
		if(RowX==y)/*原圖像一行的結尾(是補零后的倒數第二個象素)*/
      	{
		*(f+(LinX+1)*(y+2))=*(f+LinX*(y+2)+1);/*處理下一行的第一個象素的上下文:將Rb賦給a*/
    	*(f+LinX*(y+2)+y+1)=*(f+LinX*(y+2)+y);/*處理當前行最后一個象素的上下文:將Rb賦給d*/
		 EOLine=1;
		}
	else
        EOLine=0;   
    	if(RowX>y)/*補零后的最后一個象素*/
		{
		RowX=RowX-y;/*也即rowx=1*/
		LinX++;
		}
	}

	if(cnt>0)
	code=code<<(8-cnt);

	
    fwrite(&code,1,1,fp);
	CT=CT+1;
	fclose(fp);
	ftime(&end_time);

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

}

int* JPEG_LS::JPEG_LSDecoding(int width, int height)
{
	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;
	struct timeb start_time,end_time;
	int second_d;
	int *pData;
	pData=new int[width*height];
	x=height;y=width;
    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= new int[(x+1)*(y+2)];	  
		
	if((fp=fopen("E:\\out.ls","rb"))==NULL)
	{
		AfxMessageBox("Can not Open File!");
	}

// 對各數組的初始化    
	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:\\de.raw","wb"))==NULL)
	{
	   AfxMessageBox("Can not Open File!");
	   
	}
	for(i=1;i<x+1;i++)
	   for(j=1;j<y+1;j++)
	   {
		   fwrite((f+i*(y+2)+j),1,1,fp);
		   pData[(i-1)*y+j-1]=*(f+i*(y+2)+j);
	   }
 	fclose(fp);

//  計算編碼時間 
	ftime(&end_time);
	second_d=end_time.millitm-start_time.millitm;
	second_d=second_d+(end_time.time-start_time.time)*1000;

	return pData;
//	printf("The encoding costs:%.3f seconds.\n",(float)second_d/1000.0);
	


}

void JPEG_LS::Initial()
{
    Nn[0]=0;
	Nn[1]=0;
	RANGE=0;
	EOLine=0;
    size=0;
    LinX=1;RowX=1; 
    counter=0;
    flag1=0;
    cnt=0;code=0;pp=0;RUNindex=0;
    buffer=0;output=0;decode=0;decode2=0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品剧情在线观看| 日韩av一区二区三区四区| 国产成人a级片| 国产午夜精品一区二区三区视频 | 欧美日韩亚洲综合在线| 亚洲成人免费在线观看| 欧美另类一区二区三区| 日本欧美一区二区在线观看| 一区二区三区久久久| 精品视频一区三区九区| 视频一区二区不卡| 亚洲精品一区二区精华| 成人av在线一区二区| 一区二区三区四区视频精品免费| 色综合天天视频在线观看 | 亚洲高清免费观看高清完整版在线观看| caoporm超碰国产精品| 一区二区三区免费网站| 欧美一区二区三区小说| 国产一区二三区| 国产精品每日更新在线播放网址| 在线观看91精品国产入口| 免费精品99久久国产综合精品| 久久久精品人体av艺术| 北条麻妃一区二区三区| 日韩精品成人一区二区三区| 久久久久国产精品厨房| 91福利社在线观看| 日韩黄色免费电影| 精品久久久久久久一区二区蜜臀| 美女mm1313爽爽久久久蜜臀| 久久久亚洲精华液精华液精华液| 国产不卡一区视频| 夜夜嗨av一区二区三区网页| 欧美一区二视频| 国产成人在线视频免费播放| 亚洲人成人一区二区在线观看| 欧美丝袜丝nylons| 精品一区二区日韩| 中文字幕二三区不卡| 国产69精品久久99不卡| 尤物av一区二区| 制服丝袜亚洲色图| 久99久精品视频免费观看| 中文字幕国产一区二区| 欧美猛男男办公室激情| 久久精品国产一区二区| 国产精品国产三级国产aⅴ无密码| 欧美视频在线一区| 国产一区二区精品久久| 一区二区在线观看av| 欧美成va人片在线观看| 色呦呦国产精品| 日日摸夜夜添夜夜添国产精品| 欧美系列日韩一区| 国产乱码精品一区二区三区av | 亚洲成人精品影院| 中文一区在线播放| 欧美精品自拍偷拍| 成人激情视频网站| 午夜激情久久久| 中文字幕一区二区三区av| 欧美日韩黄视频| 色综合色狠狠综合色| 激情综合色丁香一区二区| 国产日韩欧美综合一区| 欧美久久久久久久久久| 色哟哟在线观看一区二区三区| 国产一区高清在线| 日韩成人一区二区三区在线观看| 亚洲视频网在线直播| 精品欧美一区二区三区精品久久| 欧美午夜精品一区| 色综合久久久久| 狠狠色丁香久久婷婷综| 欧美国产一区二区| 欧美大片拔萝卜| 91.com在线观看| 91丨porny丨蝌蚪视频| 国产乱子轮精品视频| 美日韩一级片在线观看| 午夜精品成人在线视频| 一区二区三区蜜桃| 亚洲三级在线免费观看| 国产精品女主播av| 亚洲国产精品精华液ab| 久久久美女毛片| 久久综合成人精品亚洲另类欧美| 国产激情视频一区二区三区欧美| 精久久久久久久久久久| 麻豆91在线播放免费| 日韩精品一级二级 | 欧美一区二区免费视频| 99麻豆久久久国产精品免费优播| 国产精品自拍三区| 国产成人精品1024| 成人免费毛片aaaaa**| 国产精品影视在线| 国产91精品在线观看| 成人福利电影精品一区二区在线观看| 国产一区二区电影| 国产高清不卡一区二区| 国产精品资源在线| 国产精品888| 激情文学综合网| 国产乱子轮精品视频| 成人av高清在线| 国产传媒一区在线| 岛国av在线一区| av一本久道久久综合久久鬼色| 国产一区中文字幕| 美女精品自拍一二三四| 久久97超碰国产精品超碰| 久久电影网站中文字幕| 国产一区二区视频在线| 国产精品一区在线观看你懂的| 久久精品噜噜噜成人88aⅴ| 午夜av电影一区| 青青青爽久久午夜综合久久午夜| 国内久久精品视频| 春色校园综合激情亚洲| 色综合天天天天做夜夜夜夜做| 在线视频亚洲一区| 欧美一级免费观看| 欧美激情一区二区三区| 亚洲精品视频在线观看免费| 亚洲国产精品嫩草影院| 激情久久久久久久久久久久久久久久| 国产69精品久久99不卡| 成人免费高清在线观看| 91官网在线观看| 精品粉嫩超白一线天av| 亚洲欧美色图小说| 久久91精品国产91久久小草| 国产成人综合精品三级| 色综合天天综合网天天狠天天| 丁香天五香天堂综合| 91在线观看免费视频| 国产精品 欧美精品| 色婷婷综合五月| 亚洲欧美在线aaa| 一级日本不卡的影视| 秋霞影院一区二区| 欧美在线视频全部完| 欧美国产日本视频| 欧美国产1区2区| 亚洲电影欧美电影有声小说| 国产一区美女在线| 欧美色视频在线| 欧美成人免费网站| 亚洲一级电影视频| 在线免费观看一区| 成人三级伦理片| 国产精品99久| 久久久久久久网| 亚洲成av人影院在线观看网| 欧美性大战久久久久久久蜜臀| 国产精品一级二级三级| 一区二区在线免费| 亚洲欧美综合在线精品| 日本一区二区三区四区| 91麻豆精品国产91久久久资源速度 | 欧美三级在线看| 亚洲伦理在线精品| 99久久777色| 亚洲激情在线激情| 99视频在线精品| 亚洲欧洲一区二区在线播放| 岛国一区二区在线观看| 精品国产一二三区| 久久99精品久久久久久| 日韩中文字幕麻豆| 99久久精品国产网站| 2020国产精品久久精品美国| 国产精品久久久久永久免费观看| 亚洲成va人在线观看| 国产凹凸在线观看一区二区| 3atv在线一区二区三区| 欧美激情一区二区在线| 亚洲色图欧洲色图婷婷| 免费观看一级特黄欧美大片| 国产成人av资源| 欧美日韩国产综合草草| 一区二区成人在线| 色哟哟亚洲精品| 亚洲视频在线一区| 99国产精品久| 国产欧美日韩在线观看| 国产成人午夜视频| 国产片一区二区| 国产成人无遮挡在线视频| 久久婷婷国产综合国色天香| 激情久久五月天| 久久精品亚洲麻豆av一区二区| 午夜精品成人在线| 欧美一区二区三区在线| 日韩1区2区3区| 久久青草国产手机看片福利盒子 | 中文av字幕一区| 成人av高清在线|