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

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

?? advancejpeg-lscode.cpp

?? 改進的JPEG-LS算法
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
				else lpDoubleErrList[DoubleErrN].Sign=-1;
			}
			else
			{//非大誤差時
				lpDoubleErrList[DoubleErrN].Sign=0;
			}
			DoubleErrN++;//可能產生大誤差象素數
		}
		DErrN+=i;//一級大誤差數的累計
		DDErrN+=ii;//二級大誤差數的累計
	}
}
void CAdvanceJepgLSOneLineCode::EncodeTwoAdjust(int *lpAdjustSequence,int AdjustLength,int TwoAdjustLength)
{//二級象素調節狀態編碼
	//已知大誤差數TwoAdjustLength,和大誤差象素數AdjustLength,序列存放在lpAdjustSequence中
	int bitn,b,d,N,RunL;
	//編碼二級調節數
	bitn=lpTwoAdjustNumberFastCoding->OneEncodePass(AdjustLength,TwoAdjustLength,lpCodeStream,CodeBitcp);
	CodeBitcp+=bitn;
	if(TwoAdjustLength>0)
	{//二級調節數非零時,作相應游程編碼
		for(b=0,d=0,N=AdjustLength;d<TwoAdjustLength;d++)
		{//b當前編碼點位置,d調節數計數,相當于游程數,N剩余象素數
			for(RunL=b;RunL<AdjustLength;RunL++)//當前游程檢測
			{
				if(lpAdjustSequence[RunL]!=0)
				{
					break;
				}
			}
			RunL-=b;//當前檢出的游程長度
			bitn=lpTwoAdjustRunFastCoding->OneEncodePass(N,//后向象素數,用于編碼參數估算
														TwoAdjustLength-d,//后向調節數,用于編碼參數估算
														RunL,//游程長度
														lpCodeStream,
														CodeBitcp);//當前游程編碼
			CodeBitcp+=bitn;
			b+=(RunL+1);//下一個游程編碼的象素位置
			N=AdjustLength-b;//余下的象素數
		}
	}
}
void CAdvanceJepgLSOneLineCode::EncodeAdjust(int *lpAdjustSequence,int AllAdjustLength,int AdjustLength)
{//一級象素調節狀態游程編碼
	//已知大誤差數AdjustLength,和大誤差象素數AllAdjustLength,序列存放在lpAdjustSequence中
	int bitn,b,d,N,RunL;
	//編碼一級調節數
	bitn=lpAdjustNumberFastCoding->OneEncodePass(AllAdjustLength,AdjustLength,lpCodeStream,CodeBitcp);
	CodeBitcp+=bitn;
	if(AdjustLength>0)
	{//一級調節數非零時,作相應游程編碼
		for(b=0,d=0,N=AllAdjustLength;d<AdjustLength;d++)
		{//b當前編碼點位置,d調節數計數,相當于游程數,N剩余象素數
			for(RunL=b;RunL<AllAdjustLength;RunL++)//當前游程檢測
			{
				if(lpAdjustSequence[RunL]!=0)
				{
					break;
				}
			}
			RunL-=b;//當前檢出的游程長度
			bitn=lpAdjustRunFastCoding->OneEncodePass(N,//后向象素數,用于編碼參數估算
													AdjustLength-d,//后向調節數,用于編碼參數估算
													RunL,//游程長度
													lpCodeStream,
													CodeBitcp);//當前游程編碼
			CodeBitcp+=bitn;
			//追加1比特符號編碼
			if(lpAdjustSequence[RunL+b]>0)AppendToBitStream(0x1,1);
			else AppendToBitStream(0x0,1);
			b+=(RunL+1);//下一個游程編碼的象素位置
			N=AllAdjustLength-b;//余下的象素數
		}
	}
}
void CAdvanceJepgLSOneLineCode::EncodeDoubleError()
{//行尾大誤差糾正編碼
	//已知大誤差數DErrN,和大誤差象素數DoubleErrN,序列存放在lpDoubleErrList中
	int b,d,bit,bitn,RunL,N;
	//編碼一級大誤差數
	bitn=lpDErrNumberFastCoding->OneEncodePass(DoubleErrN,DErrN,lpCodeStream,CodeBitcp);
	CodeBitcp+=bitn;
	if(DErrN>0)
	{//一級大誤差數非零時,作相應游程編碼
		for(b=0,d=0,N=DoubleErrN;d<DErrN;d++)
		{//b當前編碼點位置,d大誤差數計數,相當于游程數,N剩余象素數
			for(RunL=b;RunL<DoubleErrN;RunL++)//當前游程檢測
			{
				if(lpDoubleErrList[RunL].Sign!=0)
				{
					if(lpDoubleErrList[RunL].Sign<0)bit=0;
					else bit=1;//符號位的比特表示
					break;
				}
			}
			RunL-=b;//當前檢出的游程長度
			bitn=lpDErrRunFastCoding->OneEncodePass(N,//后向象素數,用于編碼參數估算
													DErrN-d,//后向大誤差數,用于編碼參數估算
													RunL,//游程長度
													lpCodeStream,
													CodeBitcp);//當前游程編碼
			CodeBitcp+=bitn;
			AppendToBitStream(bit,1);//輸出符號位
			b+=(RunL+1);//下一個游程編碼的象素位置
			N=DoubleErrN-b;//余下的象素數
		}
	}
}
void CAdvanceJepgLSOneLineCode::EncodeDDoubleError()
{//行尾二級大誤差糾正編碼
	//已知大誤差數DDErrN,和大誤差象素數DErrN,序列存放在lpDoubleErrList中
	int b,d,bitn,RunL,N;
	//編碼一級大誤差數
	bitn=lpDDErrNumberFastCoding->OneEncodePass(DErrN,DDErrN,lpCodeStream,CodeBitcp);
	CodeBitcp+=bitn;
	if(DDErrN>0)
	{//二級大誤差數非零時,作相應游程編碼
		for(b=0,d=0,N=DErrN;d<DDErrN;d++)
		{//b當前編碼點位置,d大誤差數計數,相當于游程數,N剩余象素數
			for(RunL=b;RunL<DErrN;RunL++)//當前游程檢測
			{
				if(lpDoubleErrList[RunL].Sign>1||lpDoubleErrList[RunL].Sign<-1)
				{
					break;
				}
			}
			RunL-=b;//當前檢出的游程長度
			bitn=lpDDErrRunFastCoding->OneEncodePass(N,//后向象素數,用于編碼參數估算
													DDErrN-d,//后向大誤差數,用于編碼參數估算
													RunL,//游程長度
													lpCodeStream,
													CodeBitcp);//當前游程編碼
			CodeBitcp+=bitn;
			b+=(RunL+1);//下一個游程編碼的象素位置
			N=DErrN-b;//余下的象素數
		}
	}
}
BOOL CAdvanceJepgLSOneLineCode::GetNextSample()
{//取下一個象素,含相鄰重建的更新,及行尾圖像尾標志設置。
	if((++x)>0)
	{
		Raa=Ra;
		Ra=Rx;
		Rc=lpPrecedingLine[x-1];
		Rb=lpPrecedingLine[x];
		if(x>=(X-1))
		{
			EOLine=TRUE;//每行象素尾時置標志
			Rd=lpPrecedingLine[x];
		}
		else{Rd=lpPrecedingLine[x+1];}
	}
	Ix=lpImage[x];
	return TRUE;
}
void CAdvanceJepgLSOneLineCode::AppendToBitStream(int a,int b)
{//在當前的碼流位置上接上 b  比特,比特來自狀態 a 的低位。一般不能大24比特。
	if(b<=0)return;
	int i=0;
	for(i=b-1;i>=0;i--)
	{
		if(a&(1<<i))*(lpCodeStream+(CodeBitcp>>3))|=(1<<(CodeBitcp&7));
		else *(lpCodeStream+(CodeBitcp>>3))&=(~(1<<(CodeBitcp&7)));
		++CodeBitcp;
	}
}
int CAdvanceJepgLSOneLineCode::Quantize(int a,int pNEAR)
{//量化
	if(a>0)a=(a+pNEAR)/(pNEAR+pNEAR+1);
	else a=-(pNEAR-a)/(pNEAR+pNEAR+1);
	return a;
}
int CAdvanceJepgLSOneLineCode::ModRange(int a,int pRANGE)
{//在-(RANGE/2)—(RANGE+1)/2)范圍內取模
	if(a<-(pRANGE/2))a+=pRANGE;
	else if(a>=((pRANGE+1)/2))a-=pRANGE;
	return a;
}
int CAdvanceJepgLSOneLineCode::ComputeRx(int pNEAR)
{//計算重建象素值
	int a;
	a=Px+SIGN*Errval*(pNEAR+pNEAR+1);
	if(a<0)a=0;
	else if(a>MAXVAL)a=MAXVAL;
	return a;
}
int CAdvanceJepgLSOneLineCode::DoDecodeLine(LPBYTE lpImageBuf,int OneSampleBytes,LPBYTE lpCompressBuf,int CompressBitcp)
{//完成全部的編碼操作,即由圖象數據產生編碼比特流。
	int D1,D2,D3,R;
	int i,j,*lpI;
	lpCodeStream=lpCompressBuf;
	CodeBitcp=CompressBitcp;
//初始位置上下文值
	Rc=lpPrecedingLine[0];
	lpI=lpThirdLine;//交換用于空域預測的重建象素指針。
	lpThirdLine=lpPrecedingLine;
	lpPrecedingLine=lpCurrentLine;
	lpCurrentLine=lpI;

	lpI=lpReconstructPrecedingLine;//交換用于波段預測的重建象素指針。
	lpReconstructPrecedingLine=lpReconstructCurrentLine;
	lpReconstructCurrentLine=lpI;

	Ra=lpPrecedingLine[0];//每行第一象素時
	Raa=Ra;
	Rb=lpPrecedingLine[0];
	Rd=lpPrecedingLine[1];
//一行象素譯碼循環
	for(x=-1,EOLine=FALSE;EOLine==FALSE&&x<(X-1);)
	{
		if(SetNextSample()==FALSE)break;
//2.	Compute the local gradients according to Figure A.1.
		D1=Rd-Rb;
		D2=Rb-Rc;
		D3=Rc-Ra;

//3.	Select the mode following the procedure in Figure A.2.  
//	If run mode is selected, go to Step 17, otherwise continue with the regular mode.

		if(CanEnterRUN()==FALSE)
		{//regular mode
//4.	Quantize the local gradients according to the steps detailed in Figure A.4.

			if(D1<=-T3)Q1=-4;
			else if(D1<=-T2)Q1=-3;
			else if(D1<=-T1)Q1=-2;
			else if(D1<-qNEAR)Q1=-1;
			else if(D1<=qNEAR)Q1=0;
			else if(D1<T1)Q1=1;
			else if(D1<T2)Q1=2;
			else if(D1<T3)Q1=3;
			else Q1=4;

			if(D2<=-T3)Q2=-4;
			else if(D2<=-T2)Q2=-3;
			else if(D2<=-T1)Q2=-2;
			else if(D2<-qNEAR)Q2=-1;
			else if(D2<=qNEAR)Q2=0;
			else if(D2<T1)Q2=1;
			else if(D2<T2)Q2=2;
			else if(D2<T3)Q2=3;
			else Q2=4;

			if(D3<=-T3)Q3=-4;
			else if(D3<=-T2)Q3=-3;
			else if(D3<=-T1)Q3=-2;
			else if(D3<-qNEAR)Q3=-1;
			else if(D3<=qNEAR)Q3=0;
			else if(D3<T1)Q3=1;
			else if(D3<T2)Q3=2;
			else if(D3<T3)Q3=3;
			else Q3=4;

//5.	Check and change if necessary the sign of the context, modifying accordingly the variable SIGN (see A.3.4).
			i=0;
			if(Q1==0)
			{
				i=1;
				if(Q2==0)
				{
					i=2;
					if(Q3<0)SIGN=-1;
					else SIGN=1;
				}
				else if(Q2<0)SIGN=-1;
				else SIGN=1;
			}
			else if(Q1<0)SIGN=-1;
			else SIGN=1;

			if(SIGN==-1){Q1=-Q1;Q2=-Q2;Q3=-Q3;}

			Q=Q1*81+Q2*9+Q3;//相當于9進制

//6.	Compute Px according to Figure A.5.

			if(Rc>=max(Ra,Rb))Px=min(Ra,Rb);
			else
			{
				if(Rc<=min(Ra,Rb))Px=max(Ra,Rb);
				else Px=Ra+Rb-Rc;
			}

//7.	Correct Px using C[Q] and the variable SIGN, and clamp the value of the corrected 
//		prediction to the interval [0..MAXVAL ] according to the procedure in Figure A.6.

			Px+=(SIGN*C[Q]);
			if(Px>MAXVAL)Px=MAXVAL;
			else if(Px<0)Px=0;
//8.	Compute the context-dependent Golomb variable k according to the procedure 
//		in Figure A.10.

			for(K=0;(N[Q]<<K)<A[Q];K++);

//9.	Decode the mapped error value MErrval:
		//a.	Read the unary code.  If it contains less than LIMIT-qbpp-1 zeros, 
		//	    use it to form the most significant bits of MErrval and read k 
		//		additional bits, to compose the k least significant bits of MErrval. 
		//b.	If the unary code contains LIMIT-qbpp-1 zeros, read qbpp additional 
		//		bits to get a binary representation of MErrval -1.
		
			j=ReturnZeroBitNumber();
			if(j<(LIMIT-qbpp-1))
			{
				CodeBitcp+=j;//加上j個0
				GetFromBitStream(1);
				MErrval=GetFromBitStream(K);
				MErrval+=(j<<K);
			}
			else
			{
				CodeBitcp+=j;//加上j個0
				GetFromBitStream(1);//不直接加這一'1'比特位,是因為j可能為0
				MErrval=GetFromBitStream(qbpp)+1;
			}

//10.	Perform the inverse of the error mapping indicated in Figure A.11, 
//		where now MErrval is given and Errval is computed.

			if((qNEAR==0)&&(K==0)&&( (2*B[Q]) <= -N[Q]))
			{
				if(MErrval&1)Errval=MErrval/2;
				else Errval=-MErrval/2-1;
			}
			else
			{
				if((MErrval&1)==0)Errval=MErrval/2;
				else Errval=-MErrval/2-1;
			}

//11.	Update the variables according to Figure A.12.
//因為此處的上下文參數的更新,用到的Errval是當前狀態下的.

			B[Q]+=(Errval*(qNEAR+qNEAR+1));
			A[Q]+=((Errval>0)?Errval:-Errval);
			if(N[Q]==RESET)
			{
				A[Q]>>=1;
				B[Q]>>=1;
				N[Q]>>=1;
			}
			N[Q]++;

//12.	For near-lossless coding, multiply Errval by (2*NEAR+1).
//13.	Invert sign of Errval if  the variable SIGN is negative.

			Errval*=(SIGN*(qNEAR+qNEAR+1));

//14.	Compute Rx = (Errval + Px) modulo [RANGE*(2*NEAR+1)]. For near-lossless 
//		coding map Rx to the interval [-NEAR..RANGE*(2*NEAR+1)-1-NEAR].  
//		Clamp Rx to [0..MAXVAL ].  This is done by the following procedure:
			Rx=Errval+Px;
			if(Rx<-qNEAR)
			{
				Rx+=(RANGE*(qNEAR+qNEAR+1));//用重建值的區間限制來識別對Error所作的取模操作

			}
			else if(Rx>(MAXVAL+qNEAR))
			{
				Rx-=(RANGE*(qNEAR+qNEAR+1));
			}

			if(Rx<0)Rx=0;
			else if(Rx>MAXVAL)Rx=MAXVAL;
			lpCurrentLine[x]=Rx;

//15.	Map Rx using the inverse point transform Pt specified by the parameter Al (see B.2.3 of ITU-T T.81 | ISO/IEC 10918-1) and the applicable mapping table, if any, as specified in Annex  C.
//16.	Compute the prediction correction value C[Q] according to the procedure 
//			in Figure A.13.

			if(B[Q]<=(-N[Q]))
			{
				B[Q]+=N[Q];
				if(C[Q]>MIN_C)C[Q]--;
				if(B[Q]<=(-N[Q]))B[Q]=-N[Q]+1;
			}
			else if(B[Q]>0)
			{
				B[Q]-=N[Q];
				if(C[Q]<MAX_C)C[Q]++;
				if(B[Q]>0)B[Q]=0;
			}

//17.	Process next sample of the same component or of next component, 
//		starting from Step 2, as specified in Annex B.
		}

//18.	Run mode decoding:		
		else
		{
			Px=RUNval=RunPredicate();
			for(RUNcnt=0;1;)
			{//游程長度譯碼循環
				
				R=GetFromBitStream(1);
//		a.	Read a bit, R, from the bit stream.
				if(R==1)
//		b.	If R='1' then
				{
//			i)	Fill the image with 2J[RUNindex] samples of value Ra, 
//				or until a line is completed.
					for(i=0,j=(1<<J[RUNindex]);i<j;i++)
					{
						RUNcnt++;
						lpCurrentLine[x]=Rx=RUNval;
						if(EOLine==TRUE)break;
						SetNextSample();
						Px=RUNval=RunPredicate();
					}

//			ii)	If exactly 2^J[RUNindex] samples were filled in the previous step, 
//				and RUNindex<31, then increase RUNindex by one.  If the last sample 
//				in the line has not yet been decoded return to step 18.a to read more 
//				bits from the bit stream.  Otherwise, go to Step 17.  
					
					if(EOLine==TRUE&&i<j)//未達(1<<J[RUNindex])且到了尾部
					{//達行尾中斷時(注: 存在有行尾標志但非中斷情況)
						if(i==(j-1))if(RUNindex<31)RUNindex++;
						break;
					}
					else if(RUNindex<31)RUNindex++;
				}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品天干天干在观线| 99精品久久久久久| 欧美tk—视频vk| 麻豆精品国产91久久久久久| 日韩精品在线看片z| 国产一区二区三区日韩| 国产精品天美传媒沈樵| 91视视频在线观看入口直接观看www| 中文字幕永久在线不卡| 欧洲视频一区二区| 欧美a级理论片| 欧美国产日产图区| 色偷偷成人一区二区三区91 | 天堂av在线一区| 91精品综合久久久久久| 国产综合成人久久大片91| 中文文精品字幕一区二区| 91色视频在线| 日本午夜一区二区| 国产精品丝袜91| 欧美久久免费观看| 成人午夜av影视| 石原莉奈在线亚洲二区| 久久综合九色综合97婷婷| 91网站视频在线观看| 日本vs亚洲vs韩国一区三区二区| 国产亚洲欧洲一区高清在线观看| 色域天天综合网| 久久99精品久久久久久久久久久久| 国产欧美精品一区| 欧美精品v日韩精品v韩国精品v| 国产又黄又大久久| 亚洲成人综合视频| 中文字幕乱码久久午夜不卡| 欧美日韩中文精品| 99视频一区二区三区| 免费av成人在线| 亚洲欧美福利一区二区| 日韩久久久久久| 欧洲在线/亚洲| 成人性生交大合| 久久精品国产999大香线蕉| 亚洲欧美日韩成人高清在线一区| 欧美成人女星排名| 欧美这里有精品| www.成人网.com| 精品无人码麻豆乱码1区2区 | 日韩国产精品久久久久久亚洲| 国产亲近乱来精品视频| 91精品国产综合久久久久久| 97久久超碰国产精品电影| 国产一级精品在线| 秋霞电影网一区二区| 亚洲一区二区三区不卡国产欧美 | 国产精品不卡一区二区三区| 日韩午夜av电影| 欧美精品国产精品| 在线免费观看一区| 一本久久精品一区二区| 高清免费成人av| 国产成人午夜片在线观看高清观看| 日韩精品1区2区3区| 亚洲自拍偷拍欧美| 亚洲精品写真福利| 一区二区三区免费看视频| 日本一区二区三级电影在线观看| 久久久午夜精品| 久久久久国产精品免费免费搜索 | 欧美r级在线观看| 欧美精品一二三四| 欧美久久久久久蜜桃| 欧美日韩中文国产| 欧美日本在线观看| 欧美日韩在线播放| 欧美日本在线播放| 91精品国产综合久久久久久漫画| 欧美精品丝袜中出| 日韩一区二区在线看| 日韩美女在线视频| 亚洲精品在线一区二区| 精品999久久久| 中文字幕免费一区| 中文字幕亚洲在| 亚洲综合一区二区三区| 亚洲一区二区在线免费看| 亚洲国产视频一区二区| 午夜精品在线看| 美女诱惑一区二区| 韩国欧美国产一区| 丁香亚洲综合激情啪啪综合| 91亚洲精品久久久蜜桃网站| 色嗨嗨av一区二区三区| 欧美在线观看一区二区| 欧美一区二区三级| 2020日本不卡一区二区视频| 国产三级久久久| 精品国产乱码久久| 日韩一二三四区| 91色九色蝌蚪| 欧美肥胖老妇做爰| 日韩欧美色电影| 国产精品视频一二三| 一区二区三区影院| 麻豆精品视频在线观看| 不卡欧美aaaaa| 欧美精品日韩一区| 欧美精彩视频一区二区三区| 夜夜亚洲天天久久| 久久99精品久久久久久| heyzo一本久久综合| 欧美老女人第四色| 国产女主播在线一区二区| 亚洲激情图片小说视频| 看片网站欧美日韩| 一本高清dvd不卡在线观看| 日韩欧美一区二区久久婷婷| 国产精品国产三级国产普通话蜜臀| 亚洲成av人片观看| 丁香网亚洲国际| 91麻豆精品国产91久久久更新时间| 国产欧美日韩在线看| 亚洲国产va精品久久久不卡综合| 精品在线播放免费| 欧洲av在线精品| 欧美激情一区三区| 日本午夜精品视频在线观看| av电影在线不卡| 精品国产乱码久久久久久闺蜜 | 免费在线视频一区| 91香蕉视频黄| 国产视频视频一区| 日韩中文字幕亚洲一区二区va在线| 成人免费视频免费观看| 欧美不卡一区二区三区四区| 亚洲精品久久嫩草网站秘色| 国产黑丝在线一区二区三区| 91精品国产综合久久久久久 | 成人黄色a**站在线观看| 91精品国产综合久久精品| 亚洲天堂精品视频| 国产精品99久久久久久宅男| 欧美精品粉嫩高潮一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 国产成人免费9x9x人网站视频| 7777精品伊人久久久大香线蕉完整版 | 成人午夜av影视| 亚洲精品一区二区三区四区高清| 亚洲一级不卡视频| 欧美综合一区二区三区| 亚洲免费在线播放| 99re热视频精品| 一区在线观看免费| 成人免费毛片aaaaa**| 久久婷婷色综合| 国产精品一级黄| 国产亚洲成aⅴ人片在线观看| 精品一区二区在线观看| 欧美电影免费观看高清完整版在线| 亚洲国产欧美日韩另类综合| 在线观看国产一区二区| 亚洲蜜桃精久久久久久久| av激情亚洲男人天堂| 中文字幕免费不卡在线| 成人视屏免费看| 国产精品久久久久婷婷| av综合在线播放| 亚洲日本韩国一区| 色成人在线视频| 亚洲午夜久久久| 欧美高清一级片在线| 婷婷开心激情综合| 欧美一区二区三区日韩视频| 蜜臀av在线播放一区二区三区| 在线播放91灌醉迷j高跟美女| 视频一区免费在线观看| 欧美精品一级二级三级| 久久精品国产精品亚洲红杏| 久久久夜色精品亚洲| 成人18视频日本| 亚洲精品高清在线观看| 欧美女孩性生活视频| 久久精品国产一区二区三区免费看| 亚洲精品一区二区精华| 成人丝袜视频网| 亚洲一区二区综合| 欧美一区二区国产| 国产成人综合精品三级| 亚洲欧美另类图片小说| 欧美日韩精品欧美日韩精品| 麻豆精品久久精品色综合| 国产网站一区二区| 色综合久久久久久久久久久| 亚洲国产人成综合网站| 亚洲精品在线一区二区| 99久久免费国产| 日本美女一区二区| 欧美国产精品一区二区三区| 色一情一乱一乱一91av| 久久国产视频网| 亚洲精品国产一区二区精华液|