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

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

?? wvlttransdib2.cpp

?? 圖像處理算法相關VC程序 VC++圖像處理程序設計配套光盤
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

	//從設備緩存中獲得原始圖像數據
	for(j=0; j<(int)height; j++)
	{
		for( i=0; i<(int)width; i++)
		{
			b=m_pData[(j+height*3)*lLineBytes+3*i];
			g=m_pData[(j+height*3)*lLineBytes+3*i+1];
			r=m_pData[(j+height*3)*lLineBytes+3*i+2];
			temp1[(height-1-j)*width+i]=(BYTE)(0.3*r+0.59*g+0.11*b);  
		}
	}
	
    for(j = 0; j < height; j ++)            
	{
		for(i = 0; i < nWidth; i ++)           
		{
			int w = i *2;
			temp2[j*width+i] = (temp1[j*width+w]);		//偶
			temp2[j*width+nWidth+i] = (temp1[j*width+w+1]);	//奇
		}
	}
	//通過圖像的差分,完成小波變換
	for(j=0; j<height; j++)
	{
		for(i=0; i<nWidth-1; i++)
		{
			temp2[j*width+nWidth+i] -= temp2[j*width+i]+128;	
		}
	}

	for(i=0;i<nWidth;i++)
	{
		for(j=0;j<nHeight;j++)
		{
			int h=j*2;
			temp3[j*width+i]=temp2[h*width+i];//左上
			temp3[(j+nHeight)*width+i]=temp2[(h+1)*width+i];//左下
			temp3[j*width+nWidth+i]=temp2[h*width+nWidth+i];//右上
			temp3[(j+nWidth)*width+nWidth+i]=temp2[(h+1)*width+nWidth+i];//右下
		}
		for(j=0;j<nHeight;j++)
		{
			temp3[(j+nHeight)*width+i]-= temp3[j*width+i]+128;
			temp3[(j+nHeight)*width+nWidth+i]-= temp3[j*width+nWidth+i]+128;
		}
	}

	maxVal=temp3[0*width+0];
	minVal=temp3[0*width+0];
	//得到圖像小波系數的極大值與極小值
	for( j=0; j<(int)height; j++)
	{
		for( i=0; i<(int)width; i++)
		{
			if(maxVal<temp3[j*width+i])
				maxVal=temp3[j*width+i];
			if(minVal>temp3[j*width+i])
				minVal=temp3[j*width+i];
		}
	}
	//計算獲取圖像小波系數的極值差
	difVal=maxVal-minVal;
	//小波經過處理后,放入顯示緩存中
    for(j=0; j<(int)height; j++)
	{
		for(i=0; i<(int)width; i++)
		{
		//因為小波變換后的小波系數有可能超過255甚至更多,那么就將
		//小波系數的范圍映射到0~255區間內,以后出現類似的處理,目的都是一樣的
			tpBuffer=temp3[(height-1-j)*width+i];
			tpBuffer-=minVal;
			tpBuffer*=255;
			tpBuffer/=difVal;
			m_pData[(j+height*3)*lLineBytes+3*i]  = (BYTE)tpBuffer;
			m_pData[(j+height*3)*lLineBytes+3*i+1]= (BYTE)tpBuffer;
			m_pData[(j+height*3)*lLineBytes+3*i+2]= (BYTE)tpBuffer;
		}
	}
	//刪除臨時的數據空間
	delete temp1;
	delete temp2;
	delete temp3;	
	layer3=TRUE;
}

void CWvltTransDib::IDWT()
{
	if ((layer1==TRUE)||(layer2==TRUE)||(layer3==TRUE))
	{
		if(layer3)
			IDWT_Thrice();
		if(layer2)
			IDWT_Twice();
		if(layer1)
			IDWT_Once();
	}
	else
		AfxMessageBox("請先做小波變換。",MB_OK,NULL);
}

void CWvltTransDib::IDWT_Once()
{
	int i,j;
	LONG width,height,nWidth,nHeight;
	BYTE r, g, b;
	LPBYTE temp1, temp2,temp3;
	float tpBuffer;
	short maxVal,minVal,difVal;

	width=this->GetWidth();
	height=this->GetHeight();
	nWidth=width/2;
	nHeight=height/2;
	LONG lLineBytes = (width*3+3)/4 *4;
	//分配臨時數據空間
	temp1 = new BYTE[height*width];
	temp2 = new BYTE[height*width];
	temp3 = new BYTE[height*width];

	memset(temp1,0,height*width);
	memset(temp2,0,height*width);
	memset(temp3,0,height*width);

	//從設備緩存中獲得原始圖像數據
	for(j=0; j<(int)height; j++)
	{
		for( i=0; i<(int)width; i++)
		{
			b=m_pData[j*lLineBytes+3*i];
			g=m_pData[j*lLineBytes+3*i+1];
			r=m_pData[j*lLineBytes+3*i+2];
			temp1[(height-1-j)*width+i]=(BYTE)(0.3*r+0.59*g+0.11*b);  
		}
	}
	
	for(j=0; j<nHeight; j++)
	{
		for( i=0; i<width; i++)
		{
			int h=j*2;
			temp2[h*width+i]=temp1[j*width+i];
			temp2[(h+1)*width+i]=temp1[j*width+i]+temp1[(j+nHeight)*width+i]-128;
		}
	}

	for( i=0; i<nWidth-1; i++)
	{
		for(j=0; j<height; j++)
		{
			int w=i*2;
			temp3[j*width+w]=temp2[j*width+i];
			temp3[j*width+w+1]=temp2[j*width+i]+temp2[j*width+nWidth+i]-128;
		}
	}

	maxVal=temp3[0*width+0];
	minVal=temp3[0*width+0];
	//得到圖像小波系數的極大值與極小值
	for( j=0; j<(int)height; j++)
	{
		for( i=0; i<(int)width; i++)
		{
			if(maxVal<temp3[j*width+i])
				maxVal=temp3[j*width+i];
			if(minVal>temp3[j*width+i])
				minVal=temp3[j*width+i];
		}
	}
	//計算獲取圖像小波系數的極值差
	difVal=maxVal-minVal;
	//小波經過處理后,放入顯示緩存中
    for(j=0; j<(int)height; j++)
	{
		for(i=0; i<(int)width; i++)
		{
		//因為小波變換后的小波系數有可能超過255甚至更多,那么就將
		//小波系數的范圍映射到0~255區間內,以后出現類似的處理,目的都是一樣的
			tpBuffer=temp3[(height-1-j)*width+i];
			tpBuffer-=minVal;
			tpBuffer*=255;
			tpBuffer/=difVal;
			m_pData[j*lLineBytes+3*i]  = (BYTE)tpBuffer;
			m_pData[j*lLineBytes+3*i+1]= (BYTE)tpBuffer;
			m_pData[j*lLineBytes+3*i+2]= (BYTE)tpBuffer;
		}
	}
	//刪除臨時的數據空間
	delete temp1;
	delete temp2;
	delete temp3;
	layer1=FALSE;
}

void CWvltTransDib::IDWT_Twice()
{
	int i,j;
	LONG width,height,nWidth,nHeight;
	BYTE r, g, b;
	LPBYTE temp1, temp2,temp3;
	float tpBuffer;
	short maxVal,minVal,difVal;

	width=this->GetWidth()/2;
	height=this->GetHeight()/2;
	nWidth=width/2;
	nHeight=height/2;
	LONG lLineBytes = (this->GetWidth()*3+3)/4 *4;
	//分配臨時數據空間
	temp1 = new BYTE[height*width];
	temp2 = new BYTE[height*width];
	temp3 = new BYTE[height*width];

	memset(temp1,0,height*width);
	memset(temp2,0,height*width);
	memset(temp3,0,height*width);

	//從設備緩存中獲得原始圖像數據
	for(j=0; j<(int)height; j++)
	{
		for( i=0; i<(int)width; i++)
		{
			b=m_pData[(j+height)*lLineBytes+3*i];
			g=m_pData[(j+height)*lLineBytes+3*i+1];
			r=m_pData[(j+height)*lLineBytes+3*i+2];
			temp1[(height-1-j)*width+i]=(BYTE)(0.3*r+0.59*g+0.11*b);  
		}
	}
	
	for(j=0; j<nHeight; j++)
	{
		for( i=0; i<width; i++)
		{
			int h=j*2;
			temp2[h*width+i]=temp1[j*width+i];
			temp2[(h+1)*width+i]=temp1[j*width+i]+temp1[(j+nHeight)*width+i]-128;
		}
	}

	for( i=0; i<nWidth-1; i++)
	{
		for(j=0; j<height; j++)
		{
			int w=i*2;
			temp3[j*width+w]=temp2[j*width+i];
			temp3[j*width+w+1]=temp2[j*width+i]+temp2[j*width+nWidth+i]-128;
		}
	}

	maxVal=temp3[0*width+0];
	minVal=temp3[0*width+0];
	//得到圖像小波系數的極大值與極小值
	for( j=0; j<(int)height; j++)
	{
		for( i=0; i<(int)width; i++)
		{
			if(maxVal<temp3[j*width+i])
				maxVal=temp3[j*width+i];
			if(minVal>temp3[j*width+i])
				minVal=temp3[j*width+i];
		}
	}
	//計算獲取圖像小波系數的極值差
	difVal=maxVal-minVal;
	//小波經過處理后,放入顯示緩存中
    for(j=0; j<(int)height; j++)
	{
		for(i=0; i<(int)width; i++)
		{
		//因為小波變換后的小波系數有可能超過255甚至更多,那么就將
		//小波系數的范圍映射到0~255區間內,以后出現類似的處理,目的都是一樣的
			tpBuffer=temp3[(height-1-j)*width+i];
			tpBuffer-=minVal;
			tpBuffer*=255;
			tpBuffer/=difVal;
			m_pData[(j+height)*lLineBytes+3*i]  = (BYTE)tpBuffer;
			m_pData[(j+height)*lLineBytes+3*i+1]= (BYTE)tpBuffer;
			m_pData[(j+height)*lLineBytes+3*i+2]= (BYTE)tpBuffer;
		}
	}
	//刪除臨時的數據空間
	delete temp1;
	delete temp2;
	delete temp3;
	layer2=FALSE;
}

void CWvltTransDib::IDWT_Thrice()
{
	int i,j;
	LONG width,height,nWidth,nHeight;
	BYTE r, g, b;
	LPBYTE temp1, temp2,temp3;
	float tpBuffer;
	short maxVal,minVal,difVal;

	width=this->GetWidth()/4;
	height=this->GetHeight()/4;
	nWidth=width/2;
	nHeight=height/2;
	LONG lLineBytes = (this->GetWidth()*3+3)/4 *4;
	//分配臨時數據空間
	temp1 = new BYTE[height*width];
	temp2 = new BYTE[height*width];
	temp3 = new BYTE[height*width];

	memset(temp1,0,height*width);
	memset(temp2,0,height*width);
	memset(temp3,0,height*width);

	//從設備緩存中獲得原始圖像數據
	for(j=0; j<(int)height; j++)
	{
		for( i=0; i<(int)width; i++)
		{
			b=m_pData[(j+height*3)*lLineBytes+3*i];
			g=m_pData[(j+height*3)*lLineBytes+3*i+1];
			r=m_pData[(j+height*3)*lLineBytes+3*i+2];
			temp1[(height-1-j)*width+i]=(BYTE)(0.3*r+0.59*g+0.11*b);  
		}
	}
	
	for(j=0; j<nHeight; j++)
	{
		for( i=0; i<width; i++)
		{
			int h=j*2;
			temp2[h*width+i]=temp1[j*width+i];
			temp2[(h+1)*width+i]=temp1[j*width+i]+temp1[(j+nHeight)*width+i]-128;
		}
	}

	for( i=0; i<nWidth-1; i++)
	{
		for(j=0; j<height; j++)
		{
			int w=i*2;
			temp3[j*width+w]=temp2[j*width+i];
			temp3[j*width+w+1]=temp2[j*width+i]+temp2[j*width+nWidth+i]-128;
		}
	}

	maxVal=temp3[0*width+0];
	minVal=temp3[0*width+0];
	//得到圖像小波系數的極大值與極小值
	for( j=0; j<(int)height; j++)
	{
		for( i=0; i<(int)width; i++)
		{
			if(maxVal<temp3[j*width+i])
				maxVal=temp3[j*width+i];
			if(minVal>temp3[j*width+i])
				minVal=temp3[j*width+i];
		}
	}
	//計算獲取圖像小波系數的極值差
	difVal=maxVal-minVal;
	//小波經過處理后,放入顯示緩存中
    for(j=0; j<(int)height; j++)
	{
		for(i=0; i<(int)width; i++)
		{
		//因為小波變換后的小波系數有可能超過255甚至更多,那么就將
		//小波系數的范圍映射到0~255區間內,以后出現類似的處理,目的都是一樣的
			tpBuffer=temp3[(height-1-j)*width+i];
			tpBuffer-=minVal;
			tpBuffer*=255;
			tpBuffer/=difVal;
			m_pData[(j+height*3)*lLineBytes+3*i]  = (BYTE)tpBuffer;
			m_pData[(j+height*3)*lLineBytes+3*i+1]= (BYTE)tpBuffer;
			m_pData[(j+height*3)*lLineBytes+3*i+2]= (BYTE)tpBuffer;
		}
	}
	//刪除臨時的數據空間
	delete temp1;
	delete temp2;
	delete temp3;
	layer3=FALSE;
}

void CWvltTransDib::LowFilter()
{
	int i,j;
	LONG width,height,nWidth,nHeight;
	width=this->GetWidth();
	height=this->GetHeight();
	nWidth=width/2;
	nHeight=height/2;
	LONG lLineBytes = (width*3+3)/4 *4;	
	
	Once();
	for(j=0;j<height;j++)
	{
		for(i=0;i<width;i++)
		{
			if(!((i<nWidth)&&(j>nHeight)))
			{
				m_pData[j*lLineBytes+3*i]  = (BYTE)128;
				m_pData[j*lLineBytes+3*i+1]= (BYTE)128;
				m_pData[j*lLineBytes+3*i+2]= (BYTE)128;
			}
		}
	}
	IDWT_Once();

}

void CWvltTransDib::HighFilter()
{
	int i,j;
	LONG width,height,nWidth,nHeight;
	width=this->GetWidth();
	height=this->GetHeight();
	nWidth=width/2;
	nHeight=height/2;
	LONG lLineBytes = (width*3+3)/4 *4;	
	
	Once();
	for(j=0;j<height;j++)
	{
		for(i=0;i<width;i++)
		{
			if((i<nWidth)&&(j>nHeight))
			{
				m_pData[j*lLineBytes+3*i]  = (BYTE)128;
				m_pData[j*lLineBytes+3*i+1]= (BYTE)128;
				m_pData[j*lLineBytes+3*i+2]= (BYTE)128;
			}
		}
	}
	IDWT_Once();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品热视频| 在线观看日韩一区| 在线看不卡av| 欧美成人一区二区三区片免费 | 亚洲国产毛片aaaaa无费看| 蜜桃视频第一区免费观看| 色综合久久天天| 国产三级一区二区| 麻豆国产精品一区二区三区| 欧洲一区二区av| 欧美高清一级片在线观看| 久久超碰97中文字幕| 欧美美女激情18p| 亚洲精品免费看| www.色精品| 日本一区二区视频在线观看| 久草热8精品视频在线观看| 在线成人免费视频| 亚洲第一搞黄网站| 欧美无乱码久久久免费午夜一区| 国产精品传媒视频| 不卡的av电影在线观看| 欧美国产一区二区在线观看| 国产成人精品三级麻豆| 久久精品日产第一区二区三区高清版 | 久久欧美中文字幕| 国产又黄又大久久| 精品sm捆绑视频| 老司机精品视频线观看86 | 久久精品99国产精品| 在线91免费看| 人人超碰91尤物精品国产| 777精品伊人久久久久大香线蕉| 亚洲图片自拍偷拍| 8v天堂国产在线一区二区| 视频在线观看一区| 日韩三级在线观看| 国产麻豆视频精品| 国产精品久久毛片| a级高清视频欧美日韩| 国产精品精品国产色婷婷| 91免费视频网址| 亚洲成人免费看| 日韩一级黄色大片| 国产精品一二三在| 国产精品国产馆在线真实露脸| 成人黄页毛片网站| 午夜精品久久久久影视| 91精品国产综合久久香蕉的特点| 看片网站欧美日韩| 中文字幕久久午夜不卡| 91官网在线免费观看| 亚洲va韩国va欧美va精品| 日韩精品中文字幕在线不卡尤物| 国产永久精品大片wwwapp| 亚洲国产精品久久人人爱 | 日韩电影在线观看网站| 91麻豆精品91久久久久同性| 国产在线精品一区二区三区不卡| 国产精品每日更新在线播放网址| 色综合久久六月婷婷中文字幕| 丝袜美腿亚洲色图| 国产精品欧美极品| 91精品国产高清一区二区三区蜜臀 | 午夜电影久久久| 久久久不卡网国产精品一区| 一本久久综合亚洲鲁鲁五月天| 奇米一区二区三区av| 国产精品久久久久久久久晋中 | 国产成人免费视频一区| 亚洲一区二区在线免费看| 日韩精品一区二区三区视频播放 | 亚洲午夜免费福利视频| 国产亚洲欧美一区在线观看| 在线观看免费视频综合| 国产原创一区二区| 亚洲二区在线观看| 国产精品久久久爽爽爽麻豆色哟哟 | 日韩av中文字幕一区二区三区| 亚洲国产精品99久久久久久久久| 欧美精三区欧美精三区| eeuss鲁片一区二区三区| 美女视频一区二区| 一区二区高清视频在线观看| 国产午夜亚洲精品午夜鲁丝片| 91超碰这里只有精品国产| 一本在线高清不卡dvd| 国内久久精品视频| 日韩av电影天堂| 一区二区日韩电影| 国产精品麻豆视频| 久久青草国产手机看片福利盒子| 欧美日本在线一区| 欧美性猛交xxxx乱大交退制版| 处破女av一区二区| 国产一区欧美一区| 久久精品国产99国产| 日韩精彩视频在线观看| 亚洲成av人**亚洲成av**| 一区二区三区四区激情| 亚洲精品国产精品乱码不99| 国产精品免费人成网站| 中文字幕 久热精品 视频在线 | 欧美mv和日韩mv国产网站| 欧美日韩成人一区| 欧美视频中文一区二区三区在线观看 | 91精品国产综合久久福利软件| 欧美专区日韩专区| 欧美午夜精品免费| 在线观看亚洲一区| 色就色 综合激情| 91极品视觉盛宴| 欧美午夜一区二区三区| 欧美在线小视频| 欧美日韩黄色一区二区| 欧美日韩在线三级| 欧美另类久久久品| 欧美一区二区免费观在线| 日韩一区二区视频| 亚洲精品一区二区三区精华液| 日韩精品中文字幕一区| 久久久久久久久一| 欧美激情一区二区三区在线| 欧美经典一区二区| 国产精品久久综合| 一区二区三区久久| 婷婷夜色潮精品综合在线| 免费在线视频一区| 国产高清视频一区| www.欧美.com| 欧美三级日本三级少妇99| 91精品国产综合久久精品| 久久亚洲捆绑美女| 一色桃子久久精品亚洲| 伊人色综合久久天天| 日韩电影在线观看网站| 国产69精品久久777的优势| 91丨九色丨蝌蚪丨老版| 欧美日韩一区二区三区免费看| 亚洲精品一区二区精华| 亚洲男人电影天堂| 青青草97国产精品免费观看无弹窗版 | 精品写真视频在线观看| 大胆亚洲人体视频| 欧美日韩一区成人| 久久精品人人爽人人爽| 亚洲在线视频免费观看| 久久99热这里只有精品| 97久久人人超碰| 日韩一区二区三区视频在线观看| 中文字幕不卡在线播放| 亚洲成人资源在线| 成人综合日日夜夜| 3d成人h动漫网站入口| 国产欧美日韩久久| 日韩成人一级片| 91视频国产资源| 精品国产电影一区二区| 中文字幕字幕中文在线中不卡视频| 天天av天天翘天天综合网色鬼国产| 国产传媒一区在线| 日韩一区二区在线观看视频播放| 国产精品福利影院| 国内久久精品视频| 欧美日韩免费一区二区三区视频| 久久久久成人黄色影片| 日本欧美一区二区| 91视频你懂的| 国产精品色哟哟| 老司机免费视频一区二区三区| 欧洲av在线精品| 亚洲日本在线天堂| 床上的激情91.| 久久综合九色综合欧美就去吻| 夜夜夜精品看看| 色狠狠综合天天综合综合| 久久精品人人做人人综合| 免费观看在线色综合| 欧美精品日韩综合在线| 一区二区三区国产精品| 91在线视频18| 国产精品理论片在线观看| 国产电影精品久久禁18| 亚洲精品在线观看视频| 久久成人av少妇免费| 欧美一级夜夜爽| 日本aⅴ免费视频一区二区三区 | 日韩精品亚洲一区二区三区免费| 日本久久一区二区三区| |精品福利一区二区三区| av成人老司机| 中文字幕日韩欧美一区二区三区| 丰满放荡岳乱妇91ww| 国产欧美一区二区三区网站| 国产资源在线一区| 欧美精品一区男女天堂| 国产在线不卡一区| 欧美激情一区二区三区不卡| 国产成人在线看| 国产精品久久久久影院|