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

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

?? huidubianhuandib.cpp

?? 灰度變換的實例程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			}
			gailu[i] = temp[i];
		}
		// 計算規定累計直方圖
		for (i = 0; i < bNum; i++)
		{
			if (i == 0)
			{
				temp[0] = fpPu[0];
			}
			else
			{
				temp[i] = temp[i-1] + fpPu[i];
			}
			fpPu[i] = temp[i];
		}
		// 確定映射對應關系
		for (i = 0; i < 256; i++)
		{
			// 最接近的規定直方圖灰度級
			int m_r = 0;
			// 最小差值
			float min_value_r = 1.0f;
			// 對規定直方圖各灰度進行枚舉
			for (j = 0; j < bNum; j++)
			{
				// 當前差值
				float now_value = 0.0f;
				//  計算差值
				if (gailu[i] - fpPu[j] >= 0.0f)
					now_value = gailu[i] - fpPu[j];
				else
					now_value = fpPu[j] - gailu[i];
				// 尋找最接近的規定直方圖灰度級
				if (now_value < min_value_r)
				{
					// 最接近的灰度級
					m_r = j;
					// 暫存最小差值
					min_value_r = now_value;
				}
			}
			// 建立灰度映射表
			midu[i] = npNu[m_r];
		}
		// 對各像素進行處理
		for (j = 0; j < height; j ++)
		{
			for (i = 0; i < wide; i ++)
			{
				// 對像素進行單映射規則的直方圖規定化映射處理
				unsigned char temp = *((unsigned char *)p_data + wide * j + i);
				*((unsigned char *)p_data + wide * j + i) = midu[temp];
			}
		}
	}
	else		//24位彩色
	{
		// 對灰度密度分布進行統計	
		Midufenbu(midu,midu2,midu3);
		// 對灰度分布概率進行統計
		ZhiFangTu(gailu,gailu2,gailu3);
		
		// 計算原始累計直方圖
		for (i = 0; i < 256; i++)
		{
			if (i == 0)
			{
				temp[0] = gailu[0];	
				temp2[0] = gailu2[0];
				temp3[0] = gailu3[0];
			}
			else
			{
				temp[i] = temp[i-1] + gailu[i];
				temp2[i] = temp2[i-1] + gailu2[i];	
				temp3[i] = temp3[i-1] + gailu3[i];	
			}
			gailu[i] = temp[i];
			gailu2[i] = temp2[i];
			gailu3[i] = temp3[i];
			
		}
		// 計算規定累計直方圖
		for (i = 0; i < bNum; i++)
		{
			if (i == 0)
			{
				temp[0] = fpPu[0];			
			}
			else
			{
				temp[i] = temp[i-1] + fpPu[i];
			}
			fpPu[i] = temp[i];
		}
		// 確定映射對應關系
		for (i = 0; i < 256; i++)
		{
			// 最接近的規定直方圖灰度級
			int m_r = 0;
			int m_g = 0;
			int m_b = 0;		 		
			// 最小差值
			float min_value_r = 1.0f;
			float min_value_g = 1.0f;
			float min_value_b = 1.0f;
			// 對規定直方圖各灰度進行枚舉
			for (j = 0; j < bNum; j++)
			{
				// 當前差值
				float now_value = 0.0f;
				//  計算差值
				if (gailu[i] - fpPu[j] >= 0.0f)
					now_value = gailu[i] - fpPu[j];
				else
					now_value = fpPu[j] - gailu[i];
				// 尋找最接近的規定直方圖灰度級
				if (now_value < min_value_r)
				{
					// 最接近的灰度級
					m_r = j;
					// 暫存最小差值
					min_value_r = now_value;
				}
				//  計算差值
				if (gailu2[i] - fpPu[j] >= 0.0f)
					now_value = gailu2[i] - fpPu[j];
				else
					now_value = fpPu[j] - gailu2[i];
				// 尋找最接近的規定直方圖灰度級
				if (now_value < min_value_g)
				{
					// 最接近的灰度級
					m_g = j;
					// 暫存最小差值
					min_value_g = now_value;
				}
				//  計算差值
				if (gailu3[i] - fpPu[j] >= 0.0f)
					now_value = gailu3[i] - fpPu[j];
				else
					now_value = fpPu[j] - gailu3[i];
				// 尋找最接近的規定直方圖灰度級
				if (now_value < min_value_b)
				{
					// 最接近的灰度級
					m_b = j;
					// 暫存最小差值
					min_value_b = now_value;
				}
			}
			// 建立灰度映射表
			midu[i] = npNu[m_r];
			midu2[i] = npNu[m_g];
			midu3[i] = npNu[m_b];
		}
		// 對各像素進行處理
		for (j = 0; j < height; j ++)
		{
			for (i = 0; i < wide; i ++)
			{
				// 對像素進行單映射規則的直方圖規定化映射處理
				unsigned char temp = *((unsigned char *)p_data + wide * j*3 + i*3);
				*((unsigned char *)p_data + wide * j*3 + i*3) = midu[temp];
				unsigned char temp2 = *((unsigned char *)p_data + wide * j*3 + i*3+1);
				*((unsigned char *)p_data + wide * j*3 + i*3+1) = midu[temp2];
				unsigned char temp3 = *((unsigned char *)p_data + wide * j*3 + i*3+2);
				*((unsigned char *)p_data + wide * j*3 + i*3+2) = midu[temp3];
			}
		}
	}
}

///***************************************************************/           
/*函數名稱:Midufenbu()                                        
/*函數類型:void                                      
/*功能:對圖像進行密度分布變換。            
/***************************************************************/  
void HuiDuBianHuanDib::Midufenbu(int *nNs_R)
{
	// 循環變量
	LONG i;
	LONG j;
	
	LONG wide;
	LONG height;
	//變量初始化
	memset(nNs_R,0,sizeof(int) * 256);
	// 指向DIB象素指針
	LPBYTE p_data;
	// 找到DIB圖像象素起始位置
	p_data = this->GetData();		
    wide=this->GetWidth ();
	// DIB的高度
	height = GetHeight();
	// 對各像素進行灰度轉換
	for (j = 0; j < height; j ++)
	{
		for (i = 0; i <wide; i ++)
		{
			// 對各像素進行灰度統計
			unsigned char temp = *((unsigned char *)p_data + wide * j + i);
			nNs_R[temp]++;		
		}
	} 
}

///***************************************************************/           
/*函數名稱:Shuipingtouying()                                        
/*函數類型:void                                      
/*功能:對圖像進行水平投影。            
/***************************************************************/  
void HuiDuBianHuanDib::Shuipingtouying()
{
	LPBYTE  p_data, p_datatemp;     //原圖數據區指針
	int wide,height;				//原圖長、寬
	int i,j;						//循環變量
	int lBlackNum  ;
	p_datatemp=this->GetData();
	p_data=p_datatemp;
	if(m_pBitmapInfoHeader->biBitCount<9)		
		wide=this->GetWidth ();
	else
		wide=this->GetDibWidthBytes();
	height=this->GetHeight ();
	//對圖像進行二值化
	for(j=0;j<height;j++)
	{
		for(i=0;i<wide;i++)
		{ 
			if (*p_data>128)
				*p_data=255;
			else *p_data=0;
			p_data++;
		}
	}
	p_data=p_datatemp; 
	LPBYTE   temp=new BYTE[wide*height];    //新圖像緩沖區
	memset( temp,255,wide*height);			//設定新圖像初值為255
	for(j=0;j<height;j++)
	{
		lBlackNum=0;
		for(i=0;i<wide;i++)
		{				 
			if(p_data[wide*j+i]==0)
				lBlackNum++;
		}
		for(i=0;i<lBlackNum;i++)
			temp[wide*j+i]=0;
	}
	memcpy(p_data, temp,wide*height);
	delete  temp;	
}

///***************************************************************/           
/*函數名稱:Chuizhitouying()                                      
/*函數類型:void                                      
/*功能:對圖像進行垂直投影。            
/***************************************************************/  
void HuiDuBianHuanDib::Chuizhitouying()
{
	LPBYTE  p_data, p_datatemp;     //原圖數據區指針
	int wide,height;				//原圖長、寬
	int i,j;						//循環變量
	long int lBlackNum;				//圖像中每行內黑點的個數
	p_datatemp=this->GetData();
	p_data=p_datatemp;
	if(m_pBitmapInfoHeader->biBitCount<9)	
		wide=this->GetWidth ();
	else
		wide=this->GetDibWidthBytes();
	height=this->GetHeight ();
	//對圖像進行二值化
	for(j=0;j<height;j++)
	{
		for(i=0;i<wide;i++)
		{ 
			if (*p_data>128)
				*p_data=255;
			else 
				*p_data=0;
			p_data++;
		}
	}
	p_data=p_datatemp;
	LPBYTE  temp=new BYTE[wide*height];		//新圖像緩沖區
	memset( temp,255,wide*height);			//設定新圖像初值為255
	for(i=0;i<wide;i++)
	{
		lBlackNum=0;
		for(j=0;j<height;j++)
		{
			
			if(p_data[wide*j+i]==0)
				lBlackNum++;
		}
		for(j=0;j<lBlackNum;j++)
			temp[wide*j+i]=0;
	}
	memcpy(p_data, temp,wide*height);
	delete  temp;		
}

void HuiDuBianHuanDib::RedZhiFangTu(float *tongji)
{
	// 循環變量
	int i;
	int j;
	// 灰度計數
	int huidu[256];    
	int wide,height;    //原圖長、寬
	// 變量初始化
	memset(huidu,0,sizeof(huidu));
	wide=this->GetDibWidthBytes();
	height=this->GetHeight ();
	LPBYTE  temp1=new BYTE[wide*height];    //新圖像緩沖區
	//拷貝原圖像到緩存圖像
	memcpy(temp1,m_pData,wide*height );
	// 對各像素進行灰度統計
	for (i = 0; i < height; i ++)
	{
		for (j = 0; j <wide; j=j +3)
		{
			unsigned char  temp = temp1[wide* i + j] ;
			// 灰度統計計數
			huidu[temp]++;		
		}
	}
	// 計算灰度分布密度
	for(i=0;i<256;i++)
		tongji[i] = huidu[i] / (height * wide *1.0f);
}

void HuiDuBianHuanDib::BlueZhiFangTu(float *tongji)
{
	// 循環變量
	int i;
	int j;
	// 灰度計數
	int huidu[256];    
	int wide,height;    //原圖長、寬
	// 變量初始化
	memset(huidu,0,sizeof(huidu));
	wide=this->GetDibWidthBytes();
	height=this->GetHeight ();
	LPBYTE  temp1=new BYTE[wide*height];    //新圖像緩沖區
	//拷貝原圖像到緩存圖像
	memcpy(temp1,m_pData,wide*height );
	// 對各像素進行灰度統計
	for (i = 0; i < height; i ++)
	{
		for (j = 2; j <wide; j=j +3)
		{
			unsigned char  temp = temp1[wide* i + j] ;
			// 灰度統計計數
			huidu[temp]++;		
		}
	}
	// 計算灰度分布密度
	for(i=0;i<256;i++)
		tongji[i] = huidu[i] / (height * wide *1.0f);
}

void HuiDuBianHuanDib::GreenZhiFangTu(float *tongji)
{
	// 循環變量
	int i;
	int j;
	// 灰度計數
	int huidu[256];    
	int wide,height;    //原圖長、寬
	// 變量初始化
	memset(huidu,0,sizeof(huidu));
	wide=this->GetDibWidthBytes();
	height=this->GetHeight ();
	LPBYTE  temp1=new BYTE[wide*height];    //新圖像緩沖區
	//拷貝原圖像到緩存圖像
	memcpy(temp1,m_pData,wide*height );
	// 對各像素進行灰度統計
	for (i = 0; i < height; i ++)
	{
		for (j = 1; j <wide; j=j +3)
		{
			unsigned char  temp = temp1[wide* i + j] ;
			// 灰度統計計數
			huidu[temp]++;		
		}
	}
	// 計算灰度分布密度
	for(i=0;i<256;i++)
		tongji[i] = huidu[i] / (height * wide *1.0f);
}

//對24位彩色圖像進行灰度概率統計
void HuiDuBianHuanDib::ZhiFangTu(float *tongji1, float *tongji2, float *tongji3)
{
	// 循環變量
	int i;
	int j;
	// 灰度計數
	int huidu1[256],huidu2[256],huidu3[256];    
	int wide,height;    //原圖長、寬
	wide=this->GetWidth ();		 
	height=this->GetHeight ();
	// 變量初始化
	memset(huidu1,0,sizeof(huidu1));
	memset(huidu2,0,sizeof(huidu2));
	memset(huidu3,0,sizeof(huidu3));		  
	LPBYTE  temp_pData=new BYTE[wide*height*3];    //新圖像緩沖區
	//拷貝原圖像到緩存圖像
	memcpy(temp_pData,m_pData,wide*height*3);
	// 對各像素進行灰度統計
	for (j = 0; j < height; j ++)
	{
		for (i = 0; i <wide; i ++)
		{
			unsigned char  temp1 = temp_pData[wide*j*3 + i*3] ;
			unsigned char  temp2 = temp_pData[wide*j*3 + i*3+1] ;
			unsigned char  temp3 = temp_pData[wide*j *3+ i*3+2] ;
			// 灰度統計計數
			huidu1[temp1]++;
			huidu2[temp2]++;
			huidu3[temp3]++;
		}
	}
	// 計算灰度分布密度
	for(i=0;i<256;i++)
	{
		tongji1[i] = huidu1[i] / (height * wide *1.0f);	
		tongji2[i] = huidu2[i] / (height * wide *1.0f);	
		tongji3[i] = huidu3[i] / (height * wide *1.0f);	
	}
}

void HuiDuBianHuanDib::Midufenbu(int *nNs_R, int *nNs_G, int *nNs_B)
{
    // 循環變量
	LONG i;
	LONG j;
	LONG wide;
	LONG height;
	//變量初始化
	memset(nNs_R,0,sizeof(int) * 256);
	memset(nNs_G,0,sizeof(int) * 256);
	memset(nNs_B,0,sizeof(int) * 256);
	// 指向DIB象素指針
	LPBYTE p_data;
	// 找到DIB圖像象素起始位置
	p_data = this->GetData();		
    wide=this->GetWidth ();
	// DIB的高度
	height = GetHeight();
	// 對各像素進行灰度轉換
	for (j= 0;j < height;j ++)
	{
		for (i = 0; i <wide; i ++)
		{
			// 對各像素進行灰度統計
			unsigned char temp = *((unsigned char *)p_data + wide * j*3 + i*3);
			unsigned char temp2 = *((unsigned char *)p_data + wide * j*3 + i*3+1);
			unsigned char temp3 = *((unsigned char *)p_data + wide * j*3 + i*3+2);
			nNs_R[temp]++;		
			nNs_G[temp2]++;
			nNs_B[temp3]++;
		}
	} 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡视频在线观看| 欧美高清激情brazzers| 欧美性大战久久久| 久久久青草青青国产亚洲免观| 亚洲欧美视频在线观看视频| 美女视频免费一区| 在线亚洲一区二区| 国产精品久久久久久久久图文区| 久久精品国产网站| 欧美日韩不卡一区| 亚洲精品欧美激情| 欧美成人一区二区三区在线观看| 欧美精品自拍偷拍| 亚洲理论在线观看| 99在线精品一区二区三区| 欧美精品一级二级| 国产精品网站一区| 福利视频网站一区二区三区| 91精品国产综合久久小美女| 一区二区三区视频在线观看| 成人动漫一区二区在线| 久久久亚洲国产美女国产盗摄 | 91视频com| 欧美国产精品中文字幕| 黄色成人免费在线| 久久先锋影音av鲁色资源| 麻豆精品国产传媒mv男同| 91精品国产色综合久久不卡蜜臀| 亚洲国产日韩a在线播放性色| 99久久精品一区二区| 国产精品超碰97尤物18| 99久久久久久99| 亚洲人成网站精品片在线观看| 不卡在线视频中文字幕| 国产精品久久久久久久久免费相片| 国产精品一二三四区| 国产午夜亚洲精品午夜鲁丝片| 国产精品影视天天线| 久久久www成人免费无遮挡大片 | 亚洲高清免费观看| 欧美日韩一级二级三级| 天天影视涩香欲综合网| 欧美一区午夜精品| 国产精品一区2区| 国产精品成人在线观看| 色婷婷综合久久| 亚洲国产精品精华液网站| 91麻豆精品国产91久久久久久| 日韩电影网1区2区| 精品国产乱码久久久久久1区2区 | 日韩综合在线视频| 日韩久久免费av| 国产成人精品一区二区三区四区| 国产精品美女久久久久aⅴ| 日本乱码高清不卡字幕| 五月婷婷欧美视频| 久久九九影视网| 91久久免费观看| 美国十次综合导航| 中文字幕一区在线观看视频| 在线观看免费一区| 久久国产福利国产秒拍| 国产精品久久久久久久久免费丝袜 | 亚洲国产高清在线| 欧美色精品在线视频| 精品在线一区二区三区| 国产精品毛片高清在线完整版| 97se亚洲国产综合在线| 青青青爽久久午夜综合久久午夜| 国产午夜精品一区二区三区嫩草| 色综合av在线| 国产在线精品国自产拍免费| 亚洲免费大片在线观看| 久久婷婷久久一区二区三区| 在线视频一区二区三| 国产精品88888| 亚洲成av人综合在线观看| 国产色产综合色产在线视频| 欧美私模裸体表演在线观看| 国产美女av一区二区三区| 亚洲图片欧美色图| 国产精品乱码久久久久久| 欧美一区二区视频观看视频| 97久久超碰国产精品| 韩国三级在线一区| 亚洲成人动漫av| 综合色中文字幕| 久久久国际精品| 日韩亚洲欧美成人一区| 色婷婷激情综合| 国产成人免费视频网站高清观看视频| 午夜视频久久久久久| 亚洲欧美日本韩国| 中文字幕精品一区二区精品绿巨人 | 日韩精品五月天| 亚洲美女屁股眼交| 国产精品欧美精品| 国产日韩欧美一区二区三区乱码 | 国产精品全国免费观看高清 | 欧美日本国产视频| 色综合久久久久久久| 国产精品亚洲一区二区三区妖精| 日本亚洲视频在线| 日韩精品免费专区| 亚洲chinese男男1069| 亚洲综合久久久| 一区二区在线观看免费视频播放| 中文一区一区三区高中清不卡| 亚洲精品在线一区二区| 欧美一级一级性生活免费录像| 欧美疯狂做受xxxx富婆| 91.com在线观看| 777午夜精品视频在线播放| 欧美日韩不卡一区二区| 欧美久久免费观看| 日韩一区二区免费在线观看| 日韩一级片网站| xvideos.蜜桃一区二区| 久久久亚洲综合| 国产精品色呦呦| 玉米视频成人免费看| 亚洲精品中文字幕在线观看| 日韩久久一区二区| 亚洲成人激情综合网| 婷婷综合在线观看| 免费在线观看视频一区| 久久99久久久久| 国产宾馆实践打屁股91| 色综合 综合色| 欧美日韩在线观看一区二区| 欧美精品日韩一区| 精品99一区二区三区| 国产精品久久久久影院色老大 | 欧美亚洲动漫精品| 7777精品伊人久久久大香线蕉的| 日韩一卡二卡三卡| 国产精品美女久久久久aⅴ| 亚洲黄色av一区| 美女免费视频一区二区| 国产成人精品www牛牛影视| 一本色道久久综合亚洲精品按摩 | 亚洲午夜日本在线观看| 精品写真视频在线观看| 不卡的av在线播放| 欧美一区欧美二区| 国产精品久久久久久久久免费丝袜 | 91在线观看一区二区| 欧美视频三区在线播放| 欧美va亚洲va在线观看蝴蝶网| 欧美国产日韩亚洲一区| 亚洲1区2区3区视频| 国产成人精品一区二| 欧美性猛交xxxxxx富婆| 欧美精品一区二区三区视频| 亚洲天堂福利av| 麻豆成人免费电影| 色屁屁一区二区| 久久久91精品国产一区二区三区| 怡红院av一区二区三区| 国内久久精品视频| 欧美亚洲精品一区| 国产欧美一区二区精品性| 天天操天天色综合| 不卡一区二区三区四区| 欧美大片一区二区| 亚洲午夜激情av| 成人免费观看视频| 精品国产自在久精品国产| 亚洲国产精品久久久久婷婷884| 国产一区 二区 三区一级| 欧美人牲a欧美精品| 中文字幕一区二区三区蜜月| 国内一区二区在线| 555夜色666亚洲国产免| 亚洲另类中文字| 成人性色生活片| 久久伊人中文字幕| 日本亚洲免费观看| 欧美日韩久久久| 亚洲777理论| 欧美日本一区二区在线观看| 亚洲你懂的在线视频| 成人激情午夜影院| 国产欧美一区二区在线| 国内一区二区在线| 久久亚洲捆绑美女| 国内精品写真在线观看| 日韩欧美你懂的| 日韩电影免费在线| 在线播放日韩导航| 亚洲一二三四久久| 欧美性受xxxx黑人xyx性爽| 中文字幕制服丝袜一区二区三区 | 国产精品久久久久久亚洲毛片 | 亚洲欧美国产三级| 色综合久久中文字幕| 国产精品色一区二区三区| 国产成人精品aa毛片| 国产视频911| 懂色av中文一区二区三区|