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

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

?? wavelet2ddlg.cpp

?? Good idea, realization wavelet algorithm
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	 else
		 flag=1;
	 return HH(-1*i+1,m)*flag;
}

//H算子周期化過程
BOOL CWavelet2DDlg::HHH(int level,int size)
{
     int len,m,i;
	 double temp;
	 int sign;
	 len=size>>level;
	 m=m_nFilterLen/2;
	 if((ph=new double[sizeof(double)*len])==NULL)
	 {
	    AfxMessageBox("H算子內存分配失敗!",MB_OK|MB_ICONINFORMATION);
		return FALSE;
	 }
	 for(sign=0;sign<len;sign++)
	 {
	     temp=0;
		 for(i=(-1*m+1);i<=m;i++)
		 {
		     if(((sign-i)%len)==0)
		     temp+=HH(i-1,m);
		 }
		 ph[sign]=temp;
	 }
	 return TRUE;
}

// G算子周期化過程
BOOL CWavelet2DDlg::GGG(int level,int size)
{
     int len,m,i;
	 double temp;
	 int sign;
	 len=size>>level;
	 m=m_nFilterLen/2;
	 if((pg=new double[sizeof(double)*len])==NULL)
	 {
	    AfxMessageBox("G算子內存分配失敗!",MB_OK|MB_ICONINFORMATION);
		return FALSE;
	 }
	 for(sign=0;sign<len;sign++)
	 {
	     temp=0;
		 for(i=(-1*m+3);i<=m+2;i++)
		 {
		     if(((sign-i)%len)==0)
		     temp+=GG(i-1,m);
		 }
		 pg[sign]=temp;
	 }
	 return TRUE;
}

// H算子作用于行數據
void CWavelet2DDlg::HOperatorOnRow(int filterlen, int start, int len,int row)
{
     int i,i2,m,k,len1;
	 double temp1;
	 m=m_nFilterLen/2;
	 len1=len>>1;
	 for(i=0;i<len1;i++)
	 {
	     i2=2*i;
		 tempRow[i+start]=0;
		 if(len>filterlen)
		 {
		    for(k=i2-len;k<=i2-len+m;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=ph[(k-i2+len)%len])!=0)
						tempRow[i+start]+=temp1*image[row][k+start];
			}
			for(k=i2-m+1;k<=i2+m;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=ph[(k-i2+len)%len])!=0)
						tempRow[i+start]+=temp1*image[row][k+start];
			}
			for(k=i2+len-m+1;k<=i2+len;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=ph[(k-i2+len)%len])!=0)
						tempRow[i+start]+=temp1*image[row][k+start];
			}
		 }
		 else
		 {
		    for(k=0;k<len;k++)
			{
			    if((temp1=ph[(k-i2+len)%len])!=0)
					tempRow[i+start]+=temp1*image[row][k+start];
			}
		 }
	 }
}

// H算子作用于列數據
void CWavelet2DDlg::HOperatorOnCol(int filterlen, int start, int len,int col)
{
	 int i,i2,m,k,len1;
	 double temp1;
	 m=m_nFilterLen/2;
	 len1=len>>1;
	 for(i=0;i<len1;i++)
	 {
	     i2=2*i;
		 tempCol[i+start]=0;
		 if(len>filterlen)
		 {
		    for(k=i2-len;k<=i2-len+m;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=ph[(k-i2+len)%len])!=0)
						tempCol[i+start]+=temp1*image[k+start][col];
			}
			for(k=i2-m+1;k<=i2+m;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=ph[(k-i2+len)%len])!=0)
						tempCol[i+start]+=temp1*image[k+start][col];
			}
			for(k=i2+len-m+1;k<=i2+len;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=ph[(k-i2+len)%len])!=0)
						tempCol[i+start]+=temp1*image[k+start][col];
			}
		 }
		 else
		 {
		    for(k=0;k<len;k++)
			{
			    if((temp1=ph[(k-i2+len)%len])!=0)
					tempCol[i+start]+=temp1*image[k+start][col];
			}
		 }
	 }

}

// G算子作用于行數據
void CWavelet2DDlg::GOperatorOnRow(int filterlen, int start, int len,int row)
{
	 int i,i2,m,k,len1;
	 double temp1;
	 m=m_nFilterLen/2;
	 len1=len>>1;
	 for(i=0;i<len1;i++)
	 {
	     i2=2*i;
		 tempRow[i+start+len1]=0;
		 if(len>filterlen)
		 {
		    for(k=i2-len;k<=i2-len+m+2;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=pg[(k-i2+len)%len])!=0)
						tempRow[i+start+len1]+=temp1*image[row][k+start];
			}
			for(k=i2-m+3;k<=i2+m+2;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=pg[(k-i2+len)%len])!=0)
						tempRow[i+start+len1]+=temp1*image[row][k+start];
			}
			for(k=i2+len-m+3;k<=i2+len;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=pg[(k-i2+len)%len])!=0)
						tempRow[i+start+len1]+=temp1*image[row][k+start];
			}
		 }
		 else
		 {
		    for(k=0;k<len;k++)
			{
			    if((temp1=pg[(k-i2+len)%len])!=0)
					tempRow[i+start]+=temp1*image[row][k+start];
			}
		 }
	 }
}

// G算子作用于列數據
void CWavelet2DDlg::GOperatorOnCol(int filterlen, int start, int len,int col)
{
	 int i,i2,m,k,len1;
	 double temp1;
	 m=m_nFilterLen/2;
	 len1=len>>1;
	 for(i=0;i<len1;i++)
	 {
	     i2=2*i;
		 tempCol[i+start+len1]=0;
		 if(len>filterlen)
		 {
		    for(k=i2-len;k<=i2-len+m+2;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=pg[(k-i2+len)%len])!=0)
						tempCol[i+start+len1]+=temp1*image[k+start][col];
			}
			for(k=i2-m+3;k<=i2+m+2;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=pg[(k-i2+len)%len])!=0)
						tempCol[i+start+len1]+=temp1*image[k+start][col];
			}
			for(k=i2+len-m+3;k<=i2+len;k++)
			{
			    if((k>=0)&&(k<len))
					if((temp1=pg[(k-i2+len)%len])!=0)
						tempCol[i+start+len1]+=temp1*image[k+start][col];
			}
		 }
		 else
		 {
		    for(k=0;k<len;k++)
			{
			    if((temp1=pg[(k-i2+len)%len])!=0)
					tempCol[i+start+len1]+=temp1*image[k+start][col];
			}
		 }
	 }
}

// 進行第stage層行變換
void CWavelet2DDlg::DecompStageRow(int row, int stage, int numx)
{
     int i,start,end;
	 int filterlen,len;
	 filterlen=m_nFilterLen;
	 len=m_nImageWidth>>stage;
	 start=len*numx;
	 end=start+len;
	 HOperatorOnRow(filterlen,start,len,row); // H算子作用于行
	 GOperatorOnRow(filterlen,start,len,row); // G算子作用于行
	 for(i=start;i<end;i++)
		 image[row][i]=tempRow[i];
}

// 進行第stage層列變換
void CWavelet2DDlg::DecompStageCol(int col, int stage, int numx)
{
     int i,start,end;
	 int filterlen,len;
	 filterlen=m_nFilterLen;
	 len=m_nImageHeight>>stage;
	 start=len*numx;
	 end=start+len;
	 HOperatorOnCol(filterlen,start,len,col);  // H算子作用于列
	 GOperatorOnCol(filterlen,start,len,col);  // G算子作用于列
	 for(i=start;i<end;i++)
		 image[i][col]=tempCol[i];
}

// 二維小波變換
void CWavelet2DDlg::Wavelet2D()
{
     int row,col,stage;
	 // 進行第stage層小波變換
	 for(stage=0;stage<m_nDecomposeStage;stage++)
	 {
	     // 初始化H算子和G算子
		 if((!HHH(stage,m_nImageWidth))||(!GGG(stage,m_nImageWidth)))
			 break;
		 else
			 // 逐行變換
			 for(row=0;row<(m_nImageHeight>>stage);row++)
			 {
			     DecompStageRow(row,stage,0);  
			 }
	     if(ph&&pg)      // 釋放資源
		 {
		    delete  ph;
			delete  pg;
			ph=NULL;
			pg=NULL;
		 }
    	 // 初始化H算子和G算子
		 if((!HHH(stage,m_nImageHeight))||(!GGG(stage,m_nImageHeight)))
			 break;
		 else
			 // 逐列變換
			 for(col=0;col<(m_nImageWidth>>stage);col++)
			 {
			     DecompStageCol(col,stage,0);
			 }
         if(ph&&pg)      // 釋放資源
		 {
		    delete  ph;
			delete  pg;
			ph=NULL;
			pg=NULL;
		 }
	 }
}

// 繪制原始圖像
void CWavelet2DDlg::DrawOriginalBmp()
{
	// 得到客戶區
	CDC* pDC=GetDC();
    CRect RectClient,Workarea;
    GetClientRect(RectClient);
	
	// 鎖定DIB
	lpDIB = (LPSTR)::GlobalLock((HGLOBAL) GetHDIB());

    // 在對話框右上部分創建繪制原始圖像區域
	Workarea.left=RectClient.left+(RectClient.right-RectClient.left)/5*2;
    Workarea.right=RectClient.right-10;
    Workarea.top=RectClient.top+10;
	Workarea.bottom=RectClient.top+(RectClient.bottom-RectClient.top-10)/2;

	// 設置區域背景色為白色
	pDC->Rectangle(Workarea);
    pDC->SetBkColor(0x00FFFFFF);	

	// 繪制原始圖像
	m_pBmpInfo->bmiHeader.biWidth = m_nImageWidth;
    m_pBmpInfo->bmiHeader.biHeight = m_nImageHeight;
	::StretchDIBits(pDC->GetSafeHdc(), Workarea.left+1, Workarea.top+1, Workarea.Width(),Workarea.Height(),//m_nImageWidth, m_nImageHeight,
	                0, 0, m_nImageWidth, m_nImageHeight, (unsigned char *)lpDIBBits,
					(LPBITMAPINFO) m_pBmpInfo, DIB_RGB_COLORS, SRCCOPY);	
    // 解除鎖定
	::GlobalUnlock((HGLOBAL)GetHDIB());

}

// 繪制二維小波變換后圖像
void CWavelet2DDlg::DrawWavelet2D()
{
	// 找到圖像變換后數據中的最大最小值
	double min=image[0][0],max=0;
    for(int a=0;a<m_nImageHeight;a++)
	   for(int b=0;b<m_nImageWidth;b++)
	   {
		   if(image[a][b]>10000)
			   image[a][b]=max;
		   if(image[a][b]<-10000)
			   image[a][b]=min;
		   if(max<image[a][b])
	          max=image[a][b];
	       if(min>image[a][b])
	          min=image[a][b];
	   }

    // 將圖像變換后數據歸一化到256級灰度
	for(int m=0;m<m_nImageHeight;m++)
		for(int n=0;n<m_nImageWidth;n++)
		{  			
		  	image[m][n]=(image[m][n]-min)/(max-min)*256.0;
		    *((unsigned char *)lpDIBBits+m_nImageWidth*m+n)=(unsigned char )image[m][n];
		}
	
	// 得到客戶區
	CDC* pDC=GetDC();
    CRect RectClient,Workarea;
    GetClientRect(RectClient);

	// 鎖定DIB
	lpDIB = (LPSTR)::GlobalLock((HGLOBAL) GetHDIB());

	// 在對話框右下部分創建繪制原始圖像區域
	Workarea.left=RectClient.left+(RectClient.right-RectClient.left)/5*2;
    Workarea.right=RectClient.right-10;
	Workarea.top=RectClient.top+10+(RectClient.bottom-RectClient.top-10)/2;
    Workarea.bottom=RectClient.bottom-10;
	
	// 設置區域背景色為白色 
    pDC->Rectangle(Workarea);
    pDC->SetBkColor(0x00FFFFFF);

	// 繪制原始圖像
	m_pBmpInfo->bmiHeader.biWidth = m_nImageWidth;
    m_pBmpInfo->bmiHeader.biHeight = m_nImageHeight;
	::StretchDIBits(pDC->GetSafeHdc(), Workarea.left+1, Workarea.top+1, Workarea.Width(),Workarea.Height(),//m_nImageWidth, m_nImageHeight,
	                0, 0, m_nImageWidth, m_nImageHeight, (unsigned char *)lpDIBBits,
					(LPBITMAPINFO) m_pBmpInfo, DIB_RGB_COLORS, SRCCOPY);	

	// 解除鎖定
	::GlobalUnlock((HGLOBAL)GetHDIB());
}

// 得到小波變換所需的層次、濾波器長度等參數
void CWavelet2DDlg::GetParam()
{
	// 得到待分解層次信息
	if(m_combDecomposeStage.GetCurSel()==CB_ERR)
	   m_nDecomposeStage=1;
	else
   	   m_nDecomposeStage=m_combDecomposeStage.GetItemData(m_combDecomposeStage.GetCurSel());
		
	// 得到濾波器長度
	if(m_combFilterLen.GetCurSel()==CB_ERR)
	   m_nFilterLen=6;
	else
	   m_nFilterLen=m_combFilterLen.GetItemData(m_combFilterLen.GetCurSel());
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲妇女屁股眼交7| 欧美人动与zoxxxx乱| 婷婷综合久久一区二区三区| 综合激情成人伊人| 国产乱码精品一区二区三区忘忧草 | 国产成人免费视频一区| 国产美女娇喘av呻吟久久| 欧美日韩一区中文字幕| 久久亚洲影视婷婷| 亚洲综合色成人| 91黄视频在线观看| 久久亚洲免费视频| 麻豆精品新av中文字幕| 欧美三级中文字幕在线观看| 一区二区三区不卡视频| 91在线视频网址| 日韩精品自拍偷拍| 伦理电影国产精品| 日韩一区和二区| 亚洲人亚洲人成电影网站色| 美女视频黄a大片欧美| 色婷婷av一区二区三区gif| 日本精品免费观看高清观看| 亚洲精品视频自拍| 欧美午夜精品久久久| 中文字幕av不卡| 国产精品69毛片高清亚洲| 欧美激情一区二区三区四区| 精品一区二区日韩| 亚洲欧洲日韩av| av在线不卡网| 亚洲一区在线视频| 色美美综合视频| 亚洲成人综合视频| 久久综合九色综合欧美亚洲| 成人免费观看男女羞羞视频| 久久理论电影网| 国产成人av一区| 亚洲欧美一区二区在线观看| 欧美成人欧美edvon| 91小视频免费观看| 秋霞电影一区二区| 欧美日韩精品是欧美日韩精品| 麻豆免费看一区二区三区| 亚洲国产精品成人综合色在线婷婷| 天天操天天干天天综合网| 精品av久久707| 色综合久久中文综合久久牛| 午夜精品一区二区三区电影天堂| 国产午夜精品一区二区三区四区| 91天堂素人约啪| 免费欧美日韩国产三级电影| 亚洲色图在线看| 精品视频一区二区三区免费| 免费久久精品视频| 91精品综合久久久久久| 91国在线观看| 91香蕉视频mp4| 麻豆国产欧美一区二区三区| 亚洲黄色性网站| 久久蜜桃一区二区| 精品成人一区二区| 国产亚洲一二三区| 9191久久久久久久久久久| 欧美曰成人黄网| 欧美日韩一区二区在线观看视频| 免费在线成人网| 日韩av电影一区| 久久机这里只有精品| 天天色图综合网| 国产在线看一区| 国产精品一线二线三线| 天天综合色天天综合色h| 一区二区三区欧美在线观看| 亚洲美女视频一区| 亚洲美腿欧美偷拍| 国产精品第一页第二页第三页 | 亚洲欧洲在线观看av| 精品日本一线二线三线不卡| 欧美成人午夜电影| 久久综合av免费| 成人免费在线视频观看| 亚洲一区av在线| 国产成人精品免费在线| 欧美美女网站色| 日韩三级精品电影久久久| 久久久久国产成人精品亚洲午夜| 亚洲一区二区视频| 欧美aaaaaa午夜精品| 美女网站视频久久| 国产乱子伦一区二区三区国色天香| 国产69精品久久久久毛片| 欧美r级在线观看| 亚洲精品视频观看| 亚洲精品视频在线看| 国内精品免费**视频| 在线观看不卡视频| 国产精品久久久久久久久免费樱桃| 午夜欧美视频在线观看 | 国产高清精品在线| 欧美视频第二页| 国产精品色一区二区三区| 激情综合五月婷婷| 欧美久久久久免费| 五月综合激情婷婷六月色窝| 成人精品视频一区二区三区| 欧美日本视频在线| 亚洲电影一区二区三区| 成人av网址在线| 中文字幕一区二区三中文字幕| 免费一区二区视频| 欧美国产日韩亚洲一区| 精品一区二区三区免费播放 | 国产不卡视频一区| 亚洲黄色性网站| 自拍偷拍亚洲综合| 欧美一区二视频| 欧美日韩一卡二卡三卡| 91首页免费视频| 日本最新不卡在线| 婷婷中文字幕一区三区| 中文av一区二区| 5月丁香婷婷综合| 欧美性受xxxx黑人xyx性爽| 不卡的av中国片| 国产精品一二三区在线| 手机精品视频在线观看| 自拍偷拍欧美激情| 夜夜精品浪潮av一区二区三区| 一本久久精品一区二区| 亚洲精品一二三四区| 欧美色综合网站| 国产一区二区在线影院| 亚洲精品成a人| 国产精品欧美久久久久一区二区| 国产成人在线影院| 美女脱光内衣内裤视频久久影院| 亚洲精品国产一区二区精华液| 国产欧美一二三区| 9191精品国产综合久久久久久| 风间由美性色一区二区三区| 麻豆精品视频在线| 日韩av在线免费观看不卡| 国产精品日产欧美久久久久| 欧美精品一区二区三区很污很色的 | 欧美日韩国产大片| 99v久久综合狠狠综合久久| 亚洲综合一二三区| 欧美精品在线一区二区三区| 精品写真视频在线观看 | 亚洲丝袜精品丝袜在线| 色诱亚洲精品久久久久久| 亚洲电影一区二区| 蜜臀a∨国产成人精品| 欧美成人精品3d动漫h| 欧美日韩国产小视频| 欧美日韩免费高清一区色橹橹| 色综合欧美在线| 日韩福利电影在线| 亚洲综合在线电影| 国产日韩欧美一区二区三区综合| 欧美日本在线一区| 国产一区二区三区黄视频| 亚洲国产成人91porn| 国产日产欧美一区二区三区| 日韩欧美一区电影| 自拍偷拍亚洲综合| 国产亚洲欧洲997久久综合| 国产精品1区2区| 欧美一级高清大全免费观看| 欧美一区二区三区视频在线 | 精品久久久久香蕉网| 3751色影院一区二区三区| 在线观看91视频| 久久丝袜美腿综合| 国产精品美女www爽爽爽| 色婷婷av久久久久久久| 91捆绑美女网站| 欧美久久久影院| 国产精品激情偷乱一区二区∴| 亚洲欧洲另类国产综合| 国产精品99久久久久久久女警| 在线观看不卡一区| 在线视频国内自拍亚洲视频| 777奇米四色成人影色区| 亚洲欧美激情一区二区| 国产午夜精品久久久久久免费视| 国产亚洲一区二区在线观看| 久久先锋影音av| 国产精品亚洲视频| 99久久久免费精品国产一区二区| 成人黄色电影在线| 91成人免费网站| 国产婷婷色一区二区三区四区| 欧美不卡在线视频| 亚洲视频综合在线| 麻豆国产欧美一区二区三区| proumb性欧美在线观看| 欧美一级精品大片| 一区二区三区四区蜜桃|