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

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

?? omlib.cpp

?? 圖像處理軟件,功能比較基礎(chǔ)
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
			}
		}
	
		
		{
			AfxMessageBox (" 輸入圖象格式不正確!");				
			return NULL;
		}
}

BOOL Fit_itself(Picture input,Picture output)
{
 int Sum=0;
 float D,R,C,Exp,Variances,Threshold,Temp=0;
 

 
//============計(jì)算期望E========== 
 for (int Row=0;Row<input.row;Row++)
	 for (int Col=0;Col<input.col;Col++)
		  {
	       Sum+=input.p[Row][Col];
		   }
   Exp=(float)Sum/(input.col*input.row);


//============計(jì)算方差Variances===========
   for (int iRow=0;iRow<input.row;iRow++)
	   for (int Col=0;Col<input.col;Col++)
	   {   
		   Temp+=((input.p[iRow][Col]-Exp)*(input.p[iRow][Col]-Exp));
	   }
   Variances=(float)sqrt(Temp/(input.col*input.row));
   
//======確定R========
if (Exp<13)
      R=(float)0.7;
else if (Exp<=22)
      R=(float)0.8;     
else  R=(float)1.0 ;    
//=======確定C==============   
   if (Variances<9)
	     C=4;

   else if (Variances>=9&&Variances<13.5)
	     C=1;

   else  C=-1;
//========計(jì)算梯度D===========
for (int i=1;i<input.row;i++)
 for (int j=1;j<input.col;j++)
 {
	 D=(float)((2*input.p[i][j]-input.p[i-1][j]-input.p[i][j-1])/2);
//========計(jì)算門限============
   Threshold=-C*D+R*Exp;
   if (input.p[i][j]>=Threshold)
	   output.p[i][j]=255;
    else output.p[i][j]=0;
 }
   return TRUE;
}

HistogramEqualization(Picture input,Picture output)
{
	float iGray[256];
	int gray[256];
	int sum=0;
	for(int i=0;i<256;i++)
	{
		gray[i]=0;
		iGray[i]=0;
	}
	for(i=0;i<input.row;i++)
       for(int j=0;j<input.col;j++)
           gray[input.p[i][j]]++;
	   sum=input.col*input.row;
  for(i=0;i<256;i++)
      iGray[i]=(float)gray[i]/(float)sum;        //求各灰度的比率
  for(i=0;i<255;i++)
      iGray[i+1]+=iGray[i];
  for(i=0;i<256;i++)
      iGray[i]=(float)(255*iGray[i]+0.5);
  for(i=0;i<input.row;i++)
       for(int j=0;j<input.col;j++)
           output.p[i][j]=(unsigned char)iGray[input.p[i][j]];
	   return TRUE;
}
BOOL Ostu(Picture oldpic,Picture dealpic)
{
 BYTE threshold;                                 //門限
 float u0=0,u1=0;                                //類內(nèi)均值
 float w0=0,w1=0;                                //類概率
 float equ=0,max=0;                              //類間方差
 int sum=oldpic.col*oldpic.row;                         //總象素個數(shù)
 int gray[256];
 float percent[256];

 for(int i=0;i<256;i++)
 {
   gray[i]=0;percent[i]=0;
 }
 for(i=0;i<oldpic.row;i++)
	 for(int j=0;j<oldpic.col;j++)
		 gray[oldpic.p[i][j]]++;
	 for(i=0;i<256;i++)                       //計(jì)算各灰度級的比率
		 percent[i]=(float)gray[i]/(float)sum;
	 for(i=0;i<256;i++)
	 {
		 for(int j=0;j<i;j++)		   
		 {
		   u0+=percent[j]*j;w0+=percent[j];
		 }
		 for(j=i;j<256;j++)
		 {
			 u1+=percent[j]*j;w1+=percent[j];
		 }
		 if(w0!=0&&w1!=0)
			 equ=w0*w1*(u1/w1-u0/w0)*(u1/w1-u0/w0);
		 if(equ>max)
		 {
			 threshold=i;max=equ;
		 }
		 u0=u1=w0=w1=0;
	 }
	 for(i=0;i<oldpic.row;i++)
		 for(int j=0;j<oldpic.col;j++)
		 {
			 if(oldpic.p[i][j]<threshold) dealpic.p[i][j]=0;
			 else  dealpic.p[i][j]=255;
		 }
		 return FALSE;		 
}

BOOL Fourier(Picture input,complex **cData)
{	
	int iWidth,iHeight;
	iWidth=input.col;
	iHeight=input.row;
	complex *w=NULL;                          //變換核
 double arg,w_real,w_imag,wrecur_real,wrecur_imag,wtemp_real; //變換核用的臨時變量序列
 complex *list;                                      //取一行序列用
 int length=0;                              //記錄一行序列的長度
 complex *xi,*xip,*xj,*wptr;
 int le,step,trans;
 int rank;                                   //蝶形運(yùn)算的次數(shù)
 complex temp,u,tm;
 complex **turn;

 length=iWidth;
 arg=log(iWidth)/log(2.0);
 rank=(int) arg;

 le=length/2;
 w=new complex[le-1];                                    //計(jì)算變換核,w0不記
 arg=4.0*atan(1.0)/le;
 wrecur_real=w_real=cos(arg);
 wrecur_imag=w_imag=-sin(arg);
 xj=w;
 for(int x=1;x<le;x++)
 {
     xj->real=(float) wrecur_real;
     xj->imag=(float) wrecur_imag;
     xj++;
     wtemp_real=wrecur_real*w_real-wrecur_imag*w_imag;
     wrecur_imag=wrecur_real*w_imag+wrecur_imag*w_real;
     wrecur_real=wtemp_real;
 }

 for(int i=0;i<iHeight;i++)
 {
     list=cData[i];                                           //讀出第一行數(shù)據(jù)

     le=length;
     step=1;              //每一級蝶形運(yùn)算所用變換核的間隔
     for(int j=0;j<rank;j++)                 //疊代運(yùn)算的次數(shù)
     {
         le=le/2;
         for(int x=0;x<length;x=x+2*le)  //first iteration with no multiplies
         {
                xi=list+x;
                xip=xi+le;
                temp.real=xi->real+xip->real;
                temp.imag=xi->imag+xip->imag;
                xip->real=xi->real-xip->real;
                xip->imag=xi->imag-xip->imag;
                *xi=temp;
         }
         wptr=w+step-1;                    //找W
         for(x=1;x<le;x++)
         {
                u=*wptr;
                for(int y=x;y<length;y=y+2*le)
                {
                       xi=list+y;
                       xip=xi+le;
                       temp.real=xi->real+xip->real;
                       temp.imag=xi->imag+xip->imag;
                       tm.real=xi->real-xip->real;
                       tm.imag=xi->imag-xip->imag;
                       xip->real=tm.real*u.real-tm.imag*u.imag;
                       xip->imag=tm.real*u.imag+tm.imag*u.real;
                       *xi=temp;
                }
                wptr=wptr+step;
         }
         step=2*step;
     }
     for(int x=0;x<length;x++)
     {
        trans=0;
        for(int y=0;y<rank;++y)
            trans=(trans<<1)|(1&(x>>y));
        if(x<trans)
        {
           xi=list+x;
           xj=list+trans;
           temp=*xj;
           *xj=*xi;
           *xi=temp;
        }
     }
 }
 if(w!=NULL) delete [] w;
 w=NULL;
//----------------------------------------------------------------------------
//將矩陣翻轉(zhuǎn)重新計(jì)算!
 turn=new complex*[iWidth];                            //初始化翻轉(zhuǎn)矩陣 ,注意不是轉(zhuǎn)置
 for(i=0;i<iWidth;i++)
     turn[i]=new complex[iHeight];

 for(i=0;i<iHeight;i++)
    for(int j=0;j<iWidth;j++)
        turn[j][i]=cData[i][j];

 length=iHeight;
 arg=log(iHeight)/log(2.0);
 rank=(int) arg;

 le=length/2;
 w=new complex[le-1];                 //計(jì)算變換核,w0不記
 arg=4.0*atan(1.0)/le;
 wrecur_real=w_real=cos(arg);
 wrecur_imag=w_imag=-sin(arg);
 xj=w;
 for(x=1;x<le;x++)
 {
     xj->real=(float) wrecur_real;
     xj->imag=(float) wrecur_imag;
     xj++;
     wtemp_real=wrecur_real*w_real-wrecur_imag*w_imag;
     wrecur_imag=wrecur_real*w_imag+wrecur_imag*w_real;
     wrecur_real=wtemp_real;
 }

 for(i=0;i<iWidth;i++)
 {
     list=turn[i];

     le=length;
     step=1;              //每一級蝶形運(yùn)算所用變換核的間隔
     for(int j=0;j<rank;j++)
     {
         le=le/2;
         for(int x=0;x<length;x=x+2*le)  //first iteration with no multiplies
         {
                xi=list+x;
                xip=xi+le;
                temp.real=xi->real+xip->real;
                temp.imag=xi->imag+xip->imag;
                xip->real=xi->real-xip->real;
                xip->imag=xi->imag-xip->imag;
                *xi=temp;
         }
         wptr=w+step-1;                    //找W
         for(x=1;x<le;x++)
         {
                u=*wptr;
                for(int y=x;y<length;y=y+2*le)
                {
                       xi=list+y;
                       xip=xi+le;
                       temp.real=xi->real+xip->real;
                       temp.imag=xi->imag+xip->imag;
                       tm.real=xi->real-xip->real;
                       tm.imag=xi->imag-xip->imag;
                       xip->real=tm.real*u.real-tm.imag*u.imag;
                       xip->imag=tm.real*u.imag+tm.imag*u.real;
                       *xi=temp;
                }
                wptr=wptr+step;
         }
         step=2*step;
     }
     for(int x=0;x<length;x++)
     {
        trans=0;
        for(int y=0;y<rank;++y)
            trans=(trans<<1)|(1&(x>>y));
        if(x<trans)
        {
           xi=list+x;
           xj=list+trans;
           temp=*xj;
           *xj=*xi;
           *xi=temp;
        }
     }
 }
 if(w!=NULL) delete [] w;
 w=NULL;
//-----------------------------------------------------------------------------
//翻轉(zhuǎn)回來!
 for(i=0;i<iHeight;i++)
    for(int j=0;j<iWidth;j++)
    {
       cData[i][j].real=turn[j][i].real;
       cData[i][j].imag=turn[j][i].imag;
    }
 if(turn!=NULL)
 {
     for(int i=0;i<iWidth;i++)
         delete [] turn[i];
     delete [] turn;
     turn=NULL;
 }

 return TRUE;
}
   


 
//反變換--------------------------------------------------------------------


BOOL IFFT(Picture oldpic,complex **cData)
{
	int iWidth,iHeight;
	iWidth=oldpic.col;
	iHeight=oldpic.row;
	complex *w=NULL;                          //變換核
 double arg,w_real,w_imag,wrecur_real,wrecur_imag,wtemp_real; //變換核用的臨時變量序列
 complex *list;                                      //取一行序列用
 int length=0;                              //記錄一行序列的長度
 complex *xi,*xip,*xj,*wptr;
 int le,step,trans;
 int rank;                                   //蝶形運(yùn)算的次數(shù)
 complex temp,u,tm;
 complex **turn;

 length=iWidth;
 arg=log(iWidth)/log(2.0);
 rank=(int) arg;

 le=length/2;
 w=new complex[le-1];                                    //計(jì)算變換核,w0不記
 arg=4.0*atan(1.0)/le;
 wrecur_real=w_real=cos(arg);
 wrecur_imag=w_imag=sin(arg);
 xj=w;
 for(int x=1;x<le;x++)
 {
    xj->real=(float) wrecur_real;
    xj->imag=(float) wrecur_imag;
    xj++;
    wtemp_real=wrecur_real*w_real-wrecur_imag*w_imag;
    wrecur_imag=wrecur_real*w_imag+wrecur_imag*w_real;
    wrecur_real=wtemp_real;
 }

 for(int i=0;i<iHeight;i++)
 {
     list=cData[i];                                         //讀出第一行數(shù)據(jù)
     le=length;
     step=1;              //每一級蝶形運(yùn)算所用變換核的間隔
     for(int j=0;j<rank;j++)                 //疊代運(yùn)算的次數(shù)
     {
         le=le/2;
         for(x=0;x<length;x=x+2*le)  //first iteration with no multiplies
         {
                xi=list+x;
                xip=xi+le;
                temp.real=xi->real+xip->real;
                temp.imag=xi->imag+xip->imag;
                xip->real=xi->real-xip->real;
                xip->imag=xi->imag-xip->imag;
                *xi=temp;
         }
         wptr=w+step-1;                    //找W
         for(x=1;x<le;x++)
         {
                u=*wptr;
                for(int y=x;y<length;y=y+2*le)
                {
                       xi=list+y;
                       xip=xi+le;
                       temp.real=xi->real+xip->real;
                       temp.imag=xi->imag+xip->imag;
                       tm.real=xi->real-xip->real;
                       tm.imag=xi->imag-xip->imag;
                       xip->real=tm.real*u.real-tm.imag*u.imag;
                       xip->imag=tm.real*u.imag+tm.imag*u.real;
                       *xi=temp;
                }
                wptr=wptr+step;
         }
         step=2*step;
     }
     for(x=0;x<length;x++)
     {
        trans=0;
        for(int y=0;y<rank;++y)
            trans=(trans<<1)|(1&(x>>y));
        if(x<trans)
        {
           xi=list+x;
           xj=list+trans;
           temp=*xj;
           *xj=*xi;
           *xi=temp;
        }
     }
 }
 if(w!=NULL) delete [] w;
 w=NULL;
//----------------------------------------------------------------------------
//將矩陣翻轉(zhuǎn)重新計(jì)算!
 turn=new complex*[iWidth];                            //初始化翻轉(zhuǎn)矩陣
 for(i=0;i<iWidth;i++)
     turn[i]=new complex[iHeight];

 for(i=0;i<iHeight;i++)
    for(int j=0;j<iWidth;j++)
        turn[j][i]=cData[i][j];

 length=iHeight;
 arg=log(iHeight)/log(2.0);
 rank=(int) arg;

 le=length/2;
 w=new complex[le-1];                 //計(jì)算變換核,w0不記
 arg=4.0*atan(1.0)/le;
 wrecur_real=w_real=cos(arg);
 wrecur_imag=w_imag=sin(arg);
 xj=w;
 for(x=1;x<le;x++)
 {
     xj->real=(float) wrecur_real;
     xj->imag=(float) wrecur_imag;
     xj++;
     wtemp_real=wrecur_real*w_real-wrecur_imag*w_imag;
     wrecur_imag=wrecur_real*w_imag+wrecur_imag*w_real;
     wrecur_real=wtemp_real;
 }

 for(i=0;i<iWidth;i++)
 {
     list=turn[i];
     le=length;
     step=1;              //每一級蝶形運(yùn)算所用變換核的間隔
     for(int j=0;j<rank;j++)
     {
         le=le/2;
         for(int x=0;x<length;x=x+2*le)  //first iteration with no multiplies
         {
                xi=list+x;
                xip=xi+le;
                temp.real=xi->real+xip->real;
                temp.imag=xi->imag+xip->imag;
                xip->real=xi->real-xip->real;
                xip->imag=xi->imag-xip->imag;
                *xi=temp;
         }
         wptr=w+step-1;                    //找W
         for(x=1;x<le;x++)
         {
                u=*wptr;
                for(int y=x;y<length;y=y+2*le)
                {
                       xi=list+y;
                       xip=xi+le;
                       temp.real=xi->real+xip->real;
                       temp.imag=xi->imag+xip->imag;
                       tm.real=xi->real-xip->real;
                       tm.imag=xi->imag-xip->imag;
                       xip->real=tm.real*u.real-tm.imag*u.imag;
                       xip->imag=tm.real*u.imag+tm.imag*u.real;
                       *xi=temp;
                }
                wptr=wptr+step;
         }
         step=2*step;
     }
     for(x=0;x<length;x++)
     {
        trans=0;
        for(int y=0;y<rank;++y)
            trans=(trans<<1)|(1&(x>>y));
        if(x<trans)
        {
           xi=list+x;
           xj=list+trans;
           temp=*xj;
           *xj=*xi;
           *xi=temp;
        }
     }
 }
 delete [] w;
 w=NULL;
//-----------------------------------------------------------------------------
//翻轉(zhuǎn)回來!
 for(i=0;i<iHeight;i++)
    for(int j=0;j<iWidth;j++)
    {
       cData[i][j].real=turn[j][i].real/(iWidth*iHeight);         //此處必須除iWidth *iHeight
       cData[i][j].imag=turn[j][i].imag/(iWidth*iHeight);
    }
 if(turn!=NULL)
 {
    for(i=0;i<iWidth;i++)
       delete [] turn[i];
    delete [] turn;
    turn=NULL;
 }
 return TRUE;
}


int *HistoGarm (Picture input)
{
	int *histo=NULL;
	histo = new int [256];
	for (int k=0;k<256;k++)
		histo[k]=0;
	for (int i=0;i<input.row;i++)
		for (int j=0;j<input.col;j++)
		{
			histo[(int)(input.p[i][j])]++;
		}
		return histo;
}

PartFliter(Picture input,KERNEL ker,int fenmu,Picture output)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合久久久久中文| 国产美女视频91| 51精品秘密在线观看| 青青草成人在线观看| 精品欧美乱码久久久久久| 成人激情开心网| 一区二区三区四区精品在线视频| 欧美日韩五月天| 国产精品影视天天线| 亚洲视频在线观看一区| 在线不卡欧美精品一区二区三区| 国产成人在线视频播放| 亚洲精品高清在线观看| 日韩免费视频一区二区| 91麻豆免费视频| 日韩和欧美的一区| 久久日一线二线三线suv| 欧美午夜不卡在线观看免费| 亚洲精品美腿丝袜| 欧美丰满嫩嫩电影| 成人小视频在线| 午夜精品国产更新| 亚洲欧美日韩电影| 337p日本欧洲亚洲大胆精品| 91色porny在线视频| 国内精品写真在线观看| 亚洲色图.com| 精品久久国产老人久久综合| 欧美网站大全在线观看| 国产一区二三区好的| 一级日本不卡的影视| 国产欧美中文在线| 91精品国产一区二区三区蜜臀| 美女久久久精品| 亚洲色图丝袜美腿| 26uuu国产一区二区三区| 成人精品视频一区| 国产精品一区二区三区乱码| 亚洲国产另类精品专区| 久久久久久久久久久99999| 91精品黄色片免费大全| 99国产精品久| 精品一区二区三区在线视频| 肉色丝袜一区二区| 亚洲欧美国产高清| 国产精品三级av| 精品国产百合女同互慰| 欧美美女视频在线观看| 在线观看日韩毛片| 成人av资源下载| 韩日av一区二区| 另类欧美日韩国产在线| 亚洲综合清纯丝袜自拍| 亚洲国产精品成人综合色在线婷婷| 欧美v亚洲v综合ⅴ国产v| 欧美性受xxxx黑人xyx性爽| 成人综合婷婷国产精品久久蜜臀| 国产麻豆精品视频| 麻豆国产欧美日韩综合精品二区 | 美腿丝袜亚洲综合| 天天色综合成人网| 亚洲一区二区三区四区中文字幕| 1024成人网| 一区二区在线电影| 中文字幕一区二区在线播放 | 国产欧美日韩在线观看| 欧美日韩一级片网站| 欧美日韩一区二区欧美激情| 在线观看一区日韩| 99re热视频这里只精品| av在线播放不卡| 国产99久久久精品| 99久久精品情趣| 99久久99久久免费精品蜜臀| 成人黄色软件下载| 色一区在线观看| 欧美在线一区二区三区| 在线观看视频一区| 欧美一个色资源| 日韩你懂的在线播放| 精品美女一区二区三区| 国产区在线观看成人精品| 久久精品男人的天堂| 国产色综合久久| 亚洲人成人一区二区在线观看| 中文字幕一区二区三区蜜月| 亚洲精品国产第一综合99久久 | 亚洲一区二区在线观看视频| 亚洲女人小视频在线观看| 亚洲欧美日韩国产综合在线 | 极品美女销魂一区二区三区| 国产在线一区二区综合免费视频| 国产美女精品在线| 91蜜桃免费观看视频| 欧美在线看片a免费观看| 欧美嫩在线观看| 久久九九99视频| 亚洲欧美激情小说另类| 亚洲午夜免费视频| 狠狠色伊人亚洲综合成人| 国产成人99久久亚洲综合精品| 日本成人在线视频网站| 成人黄色a**站在线观看| 色综合天天天天做夜夜夜夜做| 91欧美激情一区二区三区成人| 欧美视频一区二区三区| 精品久久久久久无| 日韩一级免费一区| 国产精品入口麻豆九色| 亚洲免费在线看| 精品写真视频在线观看| 粉嫩嫩av羞羞动漫久久久| 97国产一区二区| 精品免费99久久| 亚洲欧美国产毛片在线| 日韩国产精品91| 91亚洲大成网污www| 欧美精品视频www在线观看| 欧美高清视频一二三区 | 一区二区三区在线观看欧美| 蜜桃久久久久久| 成人小视频在线| 91麻豆精品国产自产在线观看一区 | 欧美丰满一区二区免费视频| 国产天堂亚洲国产碰碰| 一区二区欧美国产| 成人国产精品视频| 91精品久久久久久久91蜜桃| 国产午夜精品一区二区三区嫩草 | 欧美午夜精品久久久久久孕妇| 精品美女在线播放| 亚洲综合激情网| 97久久超碰精品国产| 日韩欧美一区二区免费| 亚洲一区二区三区小说| 成人福利视频在线看| 欧美一卡二卡三卡四卡| 亚洲成人综合在线| 风间由美一区二区av101| 日韩丝袜美女视频| 日韩av网站在线观看| 91丨九色丨国产丨porny| 精品国产一区二区三区不卡| 麻豆精品一区二区三区| 欧美日韩中文国产| 日韩一区国产二区欧美三区| 亚洲综合丝袜美腿| 成人免费福利片| 日本一区二区三级电影在线观看 | 91麻豆国产自产在线观看| 精品国产欧美一区二区| 午夜精品久久久久久久蜜桃app| 色欲综合视频天天天| 国产欧美日韩精品在线| 免费看欧美女人艹b| 日韩一区和二区| 香蕉成人啪国产精品视频综合网| 在线免费观看视频一区| 中文字幕av一区 二区| 久久97超碰色| 88在线观看91蜜桃国自产| 洋洋av久久久久久久一区| 99久久久免费精品国产一区二区 | 91麻豆精品国产91久久久 | 中文字幕制服丝袜一区二区三区| 成人亚洲一区二区一| 精品成人一区二区三区四区| 日本在线不卡视频| 精品理论电影在线| 老司机精品视频导航| 91精品国产黑色紧身裤美女| 蜜臀av性久久久久av蜜臀妖精| 欧美日韩你懂得| 亚洲狼人国产精品| 91成人在线免费观看| 一区二区三区日本| 欧洲人成人精品| 亚洲伊人色欲综合网| 欧美一区永久视频免费观看| 三级成人在线视频| 欧美一级欧美一级在线播放| 久88久久88久久久| 日韩欧美自拍偷拍| 日本午夜精品一区二区三区电影| 欧美精品久久天天躁| 性做久久久久久免费观看| 欧美一级日韩一级| 久久99精品国产91久久来源| 精品播放一区二区| 成人av一区二区三区| 亚洲色图.com| 日本黄色一区二区| 久久成人久久鬼色| 久久久久国产精品免费免费搜索 | 亚洲精品在线免费播放| 国产一区 二区 三区一级| 中文av一区二区| 99国产精品国产精品毛片| 一区二区三区中文在线观看| 欧美一区二区国产|