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

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

?? diproc.cpp

?? this walet there is pictures in it you can debug it
?? CPP
字號:
// Diproc.cpp: implementation of the CDiproc class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "wavelet.h"
#include "Diproc.h"
#include"WaveletTrans.h"
#include<math.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDiproc::CDiproc()
{

}

CDiproc::~CDiproc()
{

}

void CDiproc::Band_Enhance(float **fpNormGradient, float FilterCoeff, int Scan_y, int Scan_x, int End_y, int End_x)
{
for(int y = Scan_y; y < End_y; y ++)
		for(int x = Scan_x; x < End_x; x ++)
			fpNormGradient[y][x] *= (float)(255.0 * FilterCoeff);	
}

void CDiproc::DIP_ConsEnhance(short **spData, int nHeight, int nWidth, float *NormWvltRng)
{
short **spOriginData, **spTransData, **spWvltData;
	float **fpNormGradient , filtCoeff[10],   *fWvltRng;
	int iHeight = nHeight, iWidth = nWidth;
	int iHeight_H = nHeight / 2, iWidth_H = nWidth / 2;
	int x, y;
	fWvltRng = NormWvltRng;
	//為圖像處理分配內(nèi)存空間
	spOriginData = spData;
	spTransData = new short * [nHeight];
	spWvltData = new short * [nHeight];
	fpNormGradient = new float * [nHeight];
	for(int i = 0; i < nHeight; i ++)
	{
		spTransData[i] = new short [nWidth];
		spWvltData[i] = new short [nWidth];
		fpNormGradient[i] = new float [nWidth];
	}
	//完成一次圖像小波變換
	CWaveletTrans *pTrans;
	pTrans->DWT_Three(spOriginData, spTransData, spWvltData, iHeight, iHeight_H, iWidth, iWidth_H, 3, 1.414);
	//小波系數(shù)的正則化處理
	//正則化處理后spData存放非正則化的小波系數(shù),spWvltData存放正則化后的小波系數(shù)
	Wvlt_Normalize(spWvltData, iHeight, iWidth, fWvltRng);
	//計算小波系數(shù)的梯度信息,將其存放在spTransData中
	//設定顯示設備的顏色灰度范圍是0~255
	for(y = 0; y < nHeight; y ++)
	{
		for(x = 0; x < nWidth; x ++)
		{
			fpNormGradient[y][x] = (float) spWvltData[y][x] / 255;
		}
	}
	//選擇線性濾波器gj(x) = x, 且v =kj gj(u)
	//統(tǒng)計出不同頻帶小波系數(shù)的極大值
	for(y = 0; y < 3; y ++)
	{
		if(y == 0)
		{
			filtCoeff[4*y] = Search_BandMax(spWvltData, 0, 0, iHeight / 8, iWidth / 8);
		}
		filtCoeff[3*y + 1] = Search_BandMax(spWvltData, 0, (int)(pow(2,y) * iWidth / 8), (int)(pow(2,y)* iHeight / 8), (int)(pow(2,y)*iWidth / 4));
		filtCoeff[3*y + 2] = Search_BandMax(spWvltData, (int)(pow(2,y) * iHeight / 8), 0, (int)(pow(2,y)* iHeight / 4), (int)(pow(2,y)*iWidth / 8));
		filtCoeff[3*y + 3] = Search_BandMax(spWvltData, (int)(pow(2,y) * iHeight / 8), (int)(pow(2,y) * iWidth / 8), (int)(pow(2,y)* iHeight / 4), (int)(pow(2,y)*iWidth / 4));
	}
	//計算得到各頻帶濾波器的濾波系數(shù)
	for(y = 0; y < 10; y++)
	{
		filtCoeff[y] = (float) 255.0 / filtCoeff[y];
		filtCoeff[0] += (float)sqrt(filtCoeff[y]);
	}
	filtCoeff[0] /= 10;
	//正則化后小波信息的梯度信息濾波處理
	for(y = 0; y < 3; y ++)
	{
		if(y == 0)
		{
			Band_Enhance(fpNormGradient, filtCoeff[3*y], 0, 0, iHeight / 8, iWidth / 8);
		}
		Band_Enhance(fpNormGradient, (float)sqrt(filtCoeff[3*y + 1]) /2, 0, (int)(pow(2,y) * iWidth / 8), (int)(pow(2,y)* iHeight / 8), (int)(pow(2,y)*iWidth / 4));
		Band_Enhance(fpNormGradient, (float)sqrt(filtCoeff[3*y + 2]) /2, (int)(pow(2,y) * iHeight / 8), 0, (int)(pow(2,y)* iHeight / 4), (int)(pow(2,y)*iWidth / 8));
		Band_Enhance(fpNormGradient, (float)sqrt(filtCoeff[3*y + 3]) /2, (int)(pow(2,y) * iHeight / 8), (int)(pow(2,y) * iWidth / 8), (int)(pow(2,y)* iHeight / 4), (int)(pow(2,y)*iWidth / 4));
	}
	//還原出濾波增強后的小波系數(shù)
	for(y = 0; y< iHeight; y ++)
	{
		for(x = 0; x < iWidth; x++)
		{
			fpNormGradient[y][x] *= (float) (fWvltRng[1] - fWvltRng[0]);
			fpNormGradient[y][x] /= 255.0;
			spWvltData[y][x] = (short) fpNormGradient[y][x] + fWvltRng[0];
		}
	}

	//復原增強后的小波系數(shù)
	DIP_WvltRevers(spOriginData, spTransData, spWvltData, iHeight, iHeight_H, iWidth, iWidth_H, 3, 1.414);
	//將復原的圖像數(shù)據(jù)進行正則化
	Wvlt_Normalize(spOriginData, iHeight, iWidth, fWvltRng);
	//釋放臨時的數(shù)據(jù)空間
	delete spTransData;
	delete spWvltData;
	delete fpNormGradient;
}

void CDiproc::DIP_ImageFusion(short **spImgData0, short **spImgData1, int nHeight, int nWidth)
{

	//獲取圖像的屬性參數(shù)
	int iHeight = nHeight, iWidth = nWidth;
	//圖像融合所用到的數(shù)據(jù)空間及數(shù)據(jù)指針
	short **spOriginData, **spTransData, **spWvltData0, **spWvltData1;
	//分配數(shù)據(jù)空間
	spTransData = new short *[iHeight];
	spWvltData0 = new short *[iHeight];
	spWvltData1 = new short *[iHeight];
	for(int i = 0; i < iWidth; i ++)
	{
		spTransData[i] = new short [iWidth];
		spWvltData0[i] = new short [iWidth];
		spWvltData1[i] = new short [iWidth];
	}
	//創(chuàng)建小波變換類,完成圖像的小波變換
	CWaveletTrans *pTrans;
	//獲得圖像數(shù)據(jù)空間的指針,完成小波變換
	spOriginData = spImgData0;
	//三層小波變換
	pTrans->DWT_Three(spOriginData, spTransData, spWvltData0, iHeight, iHeight / 2, iWidth, iWidth / 2, 1, 1.414);
	//獲得圖像數(shù)據(jù)空間的指針,完成另一幅圖像的小波變換
	spOriginData = spImgData1;
	//三層小波變換
	pTrans->DWT_Three(spOriginData, spTransData, spWvltData1, iHeight,iHeight / 2, iWidth, iWidth / 2, 1, 1.414);
	//小波系數(shù)的融合處理:頻帶有LL3,LH3,HL3,HH3,LH2,HL2,HH2,LH1,HL1,HH1
	//融合處理將分頻帶進行,處理方法采用的是3*3的窗口
	//LL3頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, 0, 0, iHeight / 8, iWidth / 8);
	//HL3頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, 0, iWidth / 8, iHeight / 8, iWidth / 4);
	//LH3頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, iHeight / 8, 0, iHeight / 4, iWidth / 8);
	//HH3頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, iHeight / 8, iWidth / 8, iHeight / 4, iWidth / 4);
	//HL2頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, 0, iWidth / 4, iHeight / 4, iWidth / 2);
	//LH2頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, iHeight / 4, 0, iHeight / 2, iWidth / 4);
	//HH2頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, iHeight / 4, iWidth / 4, iHeight / 2, iWidth / 2);
	//HL1頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, 0, iWidth / 2, iHeight / 2, iWidth);
	//LH1頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, iHeight / 2, 0, iHeight, iWidth / 2);
	//HH1頻帶小波系數(shù)的融合
	Window_WvltFusion(spWvltData0, spWvltData1, iHeight / 2, iWidth / 2, iHeight, iWidth);
	//將融合后的小波系數(shù)復原,完成圖像的融合
	DIP_WvltRevers(spOriginData, spTransData, spWvltData0, iHeight, iHeight / 2, iWidth, iWidth / 2, 1, 1.414);
	//釋放臨時的數(shù)據(jù)空間
	delete spTransData;
	delete spWvltData0;
	delete spWvltData1;
}

void CDiproc::DIP_WvltRevers(short **spData, short **spTransData0, short **spTransData1, int nHeight, int nHeight_H, int nWidth, int nWidth_H, int layer, float fRadius)
{
short **spOriginData, **spTransData, **spWvltData;
	int iHeight = (int)nHeight /pow(2,layer-1), iWidth =(int)nWidth / pow(2,layer-1);
	int iHeight_H =(int) nHeight_H / pow(2,layer-1), iWidth_H = (int)nWidth_H/ pow(2,layer-1);
	//分配圖像復原所需的內(nèi)存空間
	spOriginData = spData;
	spTransData = spTransData0;
	spWvltData = spTransData1;
	//完成圖像小波變換的逆變換
	CWaveletTrans *WTrans;
	for(int i = layer; i >= 1; i--)
	{
		WTrans->DWTi_Once(spOriginData, spTransData, spWvltData, iHeight, iHeight_H, iWidth, iWidth_H, i, 1.414);
		iHeight <<= 1;		iWidth <<= 1;
		iHeight_H <<= 1;	iWidth_H <<= 1;
	}
}

float CDiproc::Search_BandMax(short **spWvltData, int Scan_y, int Scan_x, int End_y, int End_x)
{

	int x, y;
	float Band_max;
	Band_max = 0;
	for(y = Scan_y; y < End_y; y ++)
	{
		for(x = Scan_x; x < End_x; x ++)
		{
			if(Band_max < spWvltData[y][x])
				Band_max = spWvltData[y][x];
		}
	}
	return Band_max;
}

void CDiproc::Window_WvltFusion(short **spWvltData0, short **spWvltData1, int Scan_y, int Scan_x, int End_y, int End_x)
{
int y,x;
	short WndSum0, WndSum1;
	for(y = Scan_y; y < End_y; y ++)
	{
		for(x = Scan_x; x < End_x; x ++)
		{
			//初始化窗口中小波系數(shù)的和
			WndSum0 = 0;	WndSum1 = 0;
			//計算窗口中小波系數(shù)的和
			for(int i = -1; i <= 1; i++)
			{
				for(int j = -1; j <= 1; j++)
				{
					if( (y+i) < Scan_y || (x+j) < Scan_x || (y+i) >= End_y || (x+j) >= End_x)
					{
						WndSum0 += 0;
						WndSum1 += 0;
					}
					else
					{
						WndSum0 += abs((int)spWvltData0[y + i][x + j]);
						WndSum1 += abs((int)spWvltData1[y + i][x + j]);
					}
				}
			}
			if(WndSum0 < WndSum1)
				spWvltData0[y][x] = spWvltData1[y][x];
		}
	}
}

void CDiproc::Wvlt_Normalize(short **spWvltNormData, int nHeight, int nWidth, float *nWvltRng)
{
int MaxPixVal, MinPixVal, Diff;
	int x, y;
	float NormCoeff;

	MaxPixVal=spWvltNormData[0][0];
	MinPixVal=spWvltNormData[0][0];
	for( y=0; y < nHeight; y++)
	{
		for( x=0; x < nWidth; x++)
		{
			if(MaxPixVal<spWvltNormData[y][x])
				MaxPixVal=spWvltNormData[y][x];
			if(MinPixVal>spWvltNormData[y][x])
				MinPixVal=spWvltNormData[y][x];
			//spWvltData[y][x] = spWvltNormData[y][x];
		}
	}
	Diff=MaxPixVal-MinPixVal;
	nWvltRng[1] = MaxPixVal;
	nWvltRng[0] = MinPixVal;
	for(y=0; y < nHeight; y++)
	{
		for(x=0; x < nWidth; x++)
		{
		//因為小波變換后的小波系數(shù)有可能超過255甚至更多,那么就將
		//小波系數(shù)的范圍映射到0~255區(qū)間內(nèi),以后出現(xiàn)類似的處理,目的都是一樣的
			NormCoeff = spWvltNormData[y][x];
			NormCoeff -= MinPixVal;
			NormCoeff *= 255;
			NormCoeff /= (float) Diff;
			spWvltNormData[y][x] = NormCoeff;

		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品911| 视频精品一区二区| 欧美午夜片在线看| 91在线精品秘密一区二区| 国产精品99久久久久久久女警 | 亚洲激情一二三区| 欧美另类videos死尸| 色综合一个色综合| 在线免费不卡电影| 色婷婷av一区| 欧美日韩www| 日韩欧美国产午夜精品| 欧美大胆一级视频| 国产欧美日韩视频一区二区| 久久久亚洲午夜电影| 国产精品久久久久9999吃药| 亚洲免费观看高清完整版在线观看| 亚洲免费av观看| 日韩高清在线不卡| 国产一区二区在线观看视频| 成人午夜免费av| 色999日韩国产欧美一区二区| 欧美日韩精品一区视频| 日韩写真欧美这视频| 久久久久久久久久电影| 亚洲视频综合在线| 天堂久久久久va久久久久| 久久精品国产秦先生| 成人91在线观看| 欧美人妖巨大在线| 国产日韩欧美在线一区| 一区二区三区在线观看欧美| 久久精品久久99精品久久| 国产成人av一区二区三区在线观看| 91女厕偷拍女厕偷拍高清| 欧美一区二区黄色| 国产精品看片你懂得| 日韩电影免费在线观看网站| 丰满少妇在线播放bd日韩电影| 日本道色综合久久| 国产亚洲精品中文字幕| 午夜激情一区二区| 99re成人精品视频| 精品日韩一区二区三区| 亚洲综合成人网| 久久国产婷婷国产香蕉| 一本色道久久综合精品竹菊| 精品国产成人在线影院 | 欧美网站大全在线观看| 国产亚洲欧美激情| 免费欧美在线视频| 欧美影视一区在线| 国产精品成人午夜| 国产一区二区福利视频| 欧美一区二区在线免费播放| 亚洲人成人一区二区在线观看| 黄网站免费久久| 欧美久久一区二区| 精品影院一区二区久久久| 欧美日韩免费电影| 亚洲人午夜精品天堂一二香蕉| 国产高清不卡一区| 337p粉嫩大胆噜噜噜噜噜91av | 国产最新精品免费| 欧美成人一区二区三区在线观看| 亚洲一卡二卡三卡四卡无卡久久| 成人美女视频在线观看18| 久久一留热品黄| 久久99精品久久久久婷婷| 在线综合视频播放| 亚洲午夜精品17c| 欧美日韩一区精品| 亚洲第一主播视频| 91香蕉视频在线| 亚洲日本成人在线观看| 91在线视频免费观看| 亚洲精选免费视频| 欧美三电影在线| 亚洲成人动漫av| 欧美福利一区二区| 麻豆精品一区二区| 国产婷婷一区二区| 国产高清不卡二三区| 日韩精品一区二区三区中文不卡| 日本不卡一区二区| 精品少妇一区二区三区免费观看| 美女久久久精品| 精品999在线播放| 不卡区在线中文字幕| 一区二区在线电影| 91麻豆精品国产91久久久久久久久 | 日韩丝袜美女视频| 另类中文字幕网| 欧美激情在线观看视频免费| 成a人片亚洲日本久久| 亚洲免费在线视频一区 二区| 欧美中文字幕久久| 男人的天堂久久精品| 中文字幕不卡的av| 欧美日韩日日骚| 国产一区不卡视频| 一区二区三区波多野结衣在线观看| 欧美欧美午夜aⅴ在线观看| 国内精品在线播放| 亚洲精品v日韩精品| 欧美一区国产二区| 国产成人精品免费在线| 亚洲女人小视频在线观看| 欧美一区二区在线播放| 成人动漫在线一区| 日本午夜精品视频在线观看| 中文字幕av一区二区三区免费看 | 自拍偷拍国产精品| 国产 欧美在线| 亚洲 欧美综合在线网络| 97se亚洲国产综合在线| 奇米色一区二区| 国产精品女主播av| 日韩午夜电影av| 色香蕉久久蜜桃| 狠狠色狠狠色合久久伊人| 一区二区三区四区高清精品免费观看 | 欧美国产一区二区| 欧美日韩国产片| 91视频你懂的| 九九久久精品视频| 国产精品第13页| 91精品国产欧美一区二区成人| 成人国产亚洲欧美成人综合网 | 国产白丝精品91爽爽久久| 午夜精品久久久久| 亚洲三级在线看| 久久久国际精品| 欧美日韩一区二区不卡| 91在线porny国产在线看| 国产高清亚洲一区| 精品一区二区三区视频在线观看| 亚洲自拍另类综合| 亚洲精品国产a| 亚洲精品久久嫩草网站秘色| 日本一区二区三区dvd视频在线| 欧美一区二区三区男人的天堂| 色婷婷av一区二区三区软件 | 国产精品人人做人人爽人人添| 日韩一区二区电影在线| 欧美视频中文字幕| 欧美日韩精品二区第二页| 91九色最新地址| 在线观看中文字幕不卡| 日本道免费精品一区二区三区| 91亚洲午夜精品久久久久久| eeuss影院一区二区三区| 波多野结衣亚洲| 久久精品99国产精品日本| 蜜桃免费网站一区二区三区| 日韩国产欧美三级| 久久精品999| 国产精品一区二区免费不卡| 免费视频最近日韩| 国产精品影音先锋| 美女久久久精品| 国产乱人伦精品一区二区在线观看| 久久99精品一区二区三区| 狠狠色综合播放一区二区| 国产成人丝袜美腿| 99精品久久只有精品| 日本道免费精品一区二区三区| 欧美亚洲愉拍一区二区| 欧美精品日日鲁夜夜添| 日韩欧美一二三区| 国产人妖乱国产精品人妖| 亚洲女同女同女同女同女同69| 中文字幕一区二区三区四区 | 欧美做爰猛烈大尺度电影无法无天| 色就色 综合激情| 欧美精品色一区二区三区| 精品久久国产老人久久综合| 中文字幕欧美三区| 一区二区三区.www| 免费三级欧美电影| 成人深夜视频在线观看| 91成人在线精品| 26uuu亚洲婷婷狠狠天堂| 91精品国产欧美日韩| 国产欧美日韩综合精品一区二区| ㊣最新国产の精品bt伙计久久| 一区二区在线观看视频| 麻豆久久一区二区| 91视频在线看| 久久久久久久精| 亚洲成av人片一区二区梦乃| 国产iv一区二区三区| 欧洲色大大久久| 国产精品天天摸av网| 天天综合色天天| 92国产精品观看| 久久一二三国产| 日本aⅴ免费视频一区二区三区| 99久久精品国产一区| 日韩三级精品电影久久久|