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

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

?? meanshiftsegger.cpp

?? 數(shù)字圖像處理
?? CPP
字號:
#include "MeanShiftSegger.h"
#include "math.h"


int max(int x,int y)
{
	if(x > y)
		return x;

	return y;

}
int min(int x,int y)
{
	if(x > y)
		return y;

	return x;

}
/***********************************************************************
* 函數(shù)名稱:
*     MeanShiftSegger()
*
*說明:構(gòu)造函數(shù) 
***********************************************************************/
MeanShiftSegger::MeanShiftSegger():
imgWidth(0),imgHeight(0){
    for(int i = 0; i < HISTOGRAM_LENGTH; i ++)
		currHistogram[i] = 0;
    for(i = 0; i < HISTOGRAM_LENGTH; i ++)
		tempHistogram[i] = 0;
	//memset(currHistogram,0,sizeof(float) * HISTOGRAM_LENGTH);
	//memset(tempHistogram,0,sizeof(float) * HISTOGRAM_LENGTH);
	//SetZeroHistogram(currHistogram);
	//SetZeroHistogram(tempHistogram);
	return;

}
/***********************************************************************
* 函數(shù)名稱:
*     ~MeanShiftSegger()
* 說明:
*     析構(gòu)函數(shù)
***********************************************************************/
MeanShiftSegger::~MeanShiftSegger(){

}

/***********************************************************************
* 函數(shù)名稱:
*     InitMeanShiftTracker()
* 參數(shù):
*     unsigned char * firstFrame 第一幀緩沖
*     int frameWidth-幀寬度
*     int frameHeight-幀高度
*     int targetPosX-目標(biāo)位置橫坐標(biāo)
*     int targetPosY-目標(biāo)位置縱坐標(biāo)
*     int targetWidth-目標(biāo)寬度
*     int targetHeight-目標(biāo)高度
* 說明:MeanShift過程跟蹤初始化程序
***********************************************************************/

void MeanShiftSegger::InitMeanShiftTracker(unsigned char*  firstFrame,int frameWidth,int frameHeight,int targetPosX,int targetPosY,int targetWidth,int targetHeight){
	this->imgWidth = frameWidth;
	this->imgHeight = frameHeight;

	this->currentX = targetPosX;
	this->currentY = targetPosY;

	this->trackWinHeight = targetHeight;
	this->trackWinWidth = targetWidth;
}


/***********************************************************************
* 函數(shù)名稱:
*     CalculateHistogramSp
* 參數(shù):
*     image frame-當(dāng)前輸入幀
*     char kernel-核類型選擇(目前只支持Uniform核)
*     float * histogram-直方圖緩沖
* 說明:統(tǒng)計(jì)直方圖,建立區(qū)域模型(無參數(shù)概率密度估計(jì))
***********************************************************************/
int MeanShiftSegger::CalculateHistogramSp(unsigned char*  frame,char kernel, float *histogram){
	int pxValue = 0;

	for(int i = 0 ; i < HISTOGRAM_LENGTH; i++)
		histogram[i] = 0;

	if(kernel == 'U')
	{

		for(int j = max(0,currentY - trackWinHeight / 2);j < min(currentY + trackWinHeight / 2,imgHeight - 1); j ++){
			for(int i = max(0,currentX - trackWinWidth / 2); i < min(currentX + trackWinWidth / 2,imgWidth - 1);i ++){
				pixel r = frame[j * imgWidth * 3 + i * 3] / 16;
				pixel g = frame[j * imgWidth * 3 + i * 3 + 1] / 16;
				pixel b = frame[j * imgWidth * 3 + i * 3 + 2] / 16;

				histogram[256 * (int)r + 16 * (int)g + (int)b] += 1;
				pxValue ++;

			}

		}

		for(int i = 0; i < HISTOGRAM_LENGTH; i ++)
			histogram[i] /= pxValue;
	}
	else
	{
		return 0;
	}
	return pxValue;
}

/***********************************************************************
* 函數(shù)名稱:
*     MeanShiftTrackerProcess
* 參數(shù):
*     unsigned char *frame-當(dāng)前幀緩沖
* 說明:跟蹤中的MeanShift過程
***********************************************************************/
void MeanShiftSegger::MeanShiftProcessSp(unsigned char * frame){
	float weights[HISTOGRAM_LENGTH];

	float newX = 0.0;
	float newY = 0.0;

	for (int i=0;i<HISTOGRAM_LENGTH;i++)
	{
		if (currHistogram[i] >0.0 )
			weights[i] = (float)tempHistogram[i]/(float)currHistogram[i];
		//目標(biāo)模板直方圖/當(dāng)前直方圖
		else
			weights[i] = 0;
	}

	float sumOfWeights = 0.0;

		for(int j = max(0,currentY - trackWinHeight / 2);j < min(currentY + trackWinHeight / 2,imgHeight - 1); j ++){
			for(int i = max(0,currentX - trackWinWidth / 2); i < min(currentX + trackWinWidth / 2,imgWidth - 1);i ++){
			pixel r = frame[j * imgWidth * 3 + i * 3] / 16;
			pixel g = frame[j * imgWidth * 3 + i * 3 + 1] / 16;
			pixel b = frame[j * imgWidth * 3 + i * 3 + 2] / 16;

			int ptr = (int)(256 * (int)r + 16 * (int)g + (int)b);

			newX += (weights[ptr] * (float)i);
			newY += (weights[ptr] * (float)j);

			sumOfWeights += weights[ptr];


		}

	}
	if(sumOfWeights != 0){
		currentX = int((newX/sumOfWeights) + 0.5);
		currentY = int((newY/sumOfWeights) + 0.5);
	}
	return;

}


/***********************************************************************
* 函數(shù)名稱
*     MeanShiftTrackProcess 
* 參數(shù):
*     image frame-當(dāng)前輸入幀
*     int frameNumber-輸入幀號
* 說明:MeanShift跟蹤主調(diào)用過程
***********************************************************************/
void MeanShiftSegger::MeanShiftTrackProcess(unsigned char*  frame,int frameNumber)
{
	if(frameNumber == 0){
		//在指定位置建立目標(biāo)模型
		CalculateHistogramSp(frame,'U',this->tempHistogram);
	}
	else
	{
		int stopThreshold = 10;
		int iteratorCoumt = 0;
		while(iteratorCoumt < stopThreshold){

			//在后續(xù)幀中檢測目標(biāo)新位置
			CalculateHistogramSp(frame,'U',this->currHistogram);
			MeanShiftProcessSp(frame); //獲得新位置

			//更新直方圖
			iteratorCoumt++;
		}
		
		DrawTrackBox(frame);

	}
}


/***********************************************************************
* 函數(shù)名稱:
*     DrawTrackBox
* 參數(shù):
*     unsigned char * frame-當(dāng)前幀緩沖
* 說明:在輸出中畫跟蹤窗口
***********************************************************************/
void MeanShiftSegger::DrawTrackBox(unsigned char*  frame)
{

	for(int i = currentX; i < min(imgWidth,currentX + trackWinWidth); i ++)
	{
		frame[currentY * imgWidth * 3 + i * 3 + 0] = 0;
		frame[currentY * imgWidth * 3 + i * 3 + 1] = 0;
		frame[currentY * imgWidth * 3 + i * 3 + 2] = 255;

		frame[min(imgHeight - 1,currentY + trackWinHeight) * imgWidth * 3 + i * 3 + 0] = 0;
		frame[min(imgHeight - 1,currentY + trackWinHeight) * imgWidth * 3 + i * 3 + 1] = 0;
		frame[min(imgHeight - 1,currentY + trackWinHeight) * imgWidth * 3 + i * 3 + 2] = 255;
	}

	for(int j = currentY; j < min(imgHeight - 1,currentY + trackWinHeight); j ++)
	{

		frame[j * imgWidth * 3 + currentX * 3 + 0] = 0;
		frame[j * imgWidth * 3 + currentX * 3 + 1] = 0;
		frame[j * imgWidth * 3 + currentX * 3 + 2] = 255;

		frame[j * imgWidth * 3 + min(imgWidth - 1,currentX + trackWinWidth) * 3 + 0] = 0;
		frame[j * imgWidth * 3 + min(imgWidth - 1,currentX + trackWinWidth) * 3 + 1] = 0;
		frame[j * imgWidth * 3 + min(imgWidth - 1,currentX + trackWinWidth) * 3 + 2] = 255;
	}


}

/***********************************************************************
* 函數(shù)名稱:
*     CalculateBhattacharyya
* 說明:計(jì)算Bhattachryya
***********************************************************************/
float MeanShiftSegger::CalculateBhattacharyya(float initHistogram [HISTOGRAM_LENGTH],float tempHistogram[HISTOGRAM_LENGTH]){
	float dis = 0;

	for(int i = 0;i < HISTOGRAM_LENGTH ;i ++)
		dis += float(sqrt(double(currHistogram[i] * tempHistogram[i])));

	return dis;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩一区二区三区在线看| 一区二区三区久久| 狠狠久久亚洲欧美| 欧美videos大乳护士334| 韩国欧美国产1区| 中文字幕国产一区二区| 99视频有精品| 亚洲成人av在线电影| 欧美日韩一区二区三区四区五区| 天天综合网天天综合色 | 欧美少妇一区二区| 日本不卡免费在线视频| 精品久久人人做人人爽| 丁香六月久久综合狠狠色| 亚洲欧美视频在线观看| 69堂亚洲精品首页| 国产大片一区二区| 亚洲在线观看免费| 欧美不卡视频一区| 99精品国产一区二区三区不卡| 午夜国产精品一区| 久久精品亚洲一区二区三区浴池| 91污片在线观看| 久久成人精品无人区| 中文字幕亚洲在| 日韩视频在线你懂得| 91老司机福利 在线| 裸体在线国模精品偷拍| 亚洲欧美日韩系列| 欧美成人一区二区三区| 在线观看日韩电影| 国产成人aaa| 美女视频一区在线观看| 亚洲三级在线看| 久久亚洲一区二区三区四区| 在线视频一区二区三区| 国产成人亚洲综合a∨猫咪| 午夜免费久久看| 国产精品欧美极品| 精品毛片乱码1区2区3区| 91国模大尺度私拍在线视频| 国产乱人伦偷精品视频不卡| 午夜久久电影网| 国产精品动漫网站| 久久午夜电影网| 91精品国产福利在线观看 | 国内不卡的二区三区中文字幕 | 视频在线观看一区二区三区| 中文字幕一区二区三区乱码在线| 91精品国产综合久久久久久久| 99视频一区二区| 懂色av中文字幕一区二区三区| 全国精品久久少妇| 亚洲韩国精品一区| 亚洲精品你懂的| 国产精品国产a级| 国产日韩欧美精品在线| 日韩欧美久久一区| 日韩一区二区电影| 7777精品伊人久久久大香线蕉完整版 | 欧美日韩国产首页在线观看| 色综合天天做天天爱| 成人性生交大片免费看在线播放| 激情欧美日韩一区二区| 蜜臀av一区二区在线免费观看| 亚洲午夜精品一区二区三区他趣| 中文字幕精品一区二区精品绿巨人| 久久伊人中文字幕| 欧美成人一级视频| 久久一区二区三区国产精品| 精品国产区一区| 久久一二三国产| 国产亚洲精品资源在线26u| 精品国产欧美一区二区| 日韩视频永久免费| 欧美精品一区二区三区高清aⅴ| 日韩欧美精品在线| 欧美一区二区三级| 日韩免费性生活视频播放| 欧美成人一区二区三区片免费| 日韩一区二区免费在线电影| 欧美mv日韩mv亚洲| 久久久久国产精品人| 国产精品嫩草影院com| 中文字幕一区二区三区不卡在线| 中文字幕中文在线不卡住| 中文字幕综合网| 亚洲高清视频的网址| 日本免费新一区视频| 韩国av一区二区三区| 成人免费毛片嘿嘿连载视频| av影院午夜一区| 欧美少妇一区二区| 欧美不卡一二三| 国产精品乱码妇女bbbb| 亚洲免费看黄网站| 日韩成人一区二区三区在线观看| 久久精品99国产精品日本| 国产精品99久| 色伊人久久综合中文字幕| 51精品秘密在线观看| 欧美精品一区二区三区蜜桃 | 亚洲精品中文字幕在线观看| 五月激情综合婷婷| 国产乱理伦片在线观看夜一区 | 欧美日韩国产影片| 久久免费的精品国产v∧| 亚洲日本青草视频在线怡红院 | 韩国女主播成人在线观看| 不卡一区在线观看| 欧美高清hd18日本| 中日韩av电影| 天天色天天操综合| 成人午夜av电影| 91精品在线免费| 最新日韩在线视频| 激情六月婷婷久久| 欧美亚洲一区二区在线| 久久综合成人精品亚洲另类欧美| 一区二区三区产品免费精品久久75| 免费观看久久久4p| 在线一区二区三区| 国产欧美一区二区精品性色超碰| 亚洲国产一区二区在线播放| 国产精品99久久久久久似苏梦涵| 欧美日韩另类一区| 1区2区3区国产精品| 久久精品国产亚洲高清剧情介绍| 91国内精品野花午夜精品| 久久先锋影音av鲁色资源网| 亚洲狠狠爱一区二区三区| 波多野结衣中文字幕一区| 日韩视频一区二区在线观看| 亚洲乱码中文字幕| 不卡视频一二三| 精品久久久久99| 亚洲成av人片| 91网站最新网址| 日本一区二区动态图| 精品一区精品二区高清| 欧美精品久久一区| 亚洲精品第1页| 波多野结衣在线aⅴ中文字幕不卡| 精品乱人伦一区二区三区| 亚洲va欧美va人人爽午夜| 色婷婷狠狠综合| 中文字幕中文字幕在线一区| 国产白丝精品91爽爽久久| 精品国产91洋老外米糕| 日韩不卡一二三区| 欧美日韩电影一区| 一二三四社区欧美黄| 91在线码无精品| 国产精品国产三级国产普通话蜜臀 | 欧美色男人天堂| 一二三区精品福利视频| 色综合久久久久综合99| 亚洲色图视频网站| 95精品视频在线| 自拍偷拍亚洲综合| 一本久道中文字幕精品亚洲嫩| 日韩一区欧美小说| 91麻豆国产自产在线观看| 中文字幕一区二区三中文字幕| 99久久精品国产一区二区三区| 国产精品久久国产精麻豆99网站| 岛国av在线一区| 中文字幕中文字幕在线一区| 91丨porny丨首页| 一区二区三区中文免费| 在线精品视频免费观看| 午夜一区二区三区视频| 在线综合视频播放| 激情伊人五月天久久综合| 久久久91精品国产一区二区精品 | 精品国产一二三| 国产福利91精品一区二区三区| 日本一区二区成人| 色悠久久久久综合欧美99| 亚洲国产日日夜夜| 日韩三级免费观看| 韩日av一区二区| 1024成人网| 在线成人免费视频| 狠狠色狠狠色综合| 亚洲视频一区在线观看| 日本久久电影网| 日本vs亚洲vs韩国一区三区| 2021中文字幕一区亚洲| 成人黄色av网站在线| 亚洲综合免费观看高清完整版在线| 欧美日韩精品一区二区三区蜜桃| 麻豆精品视频在线观看免费| 久久久99精品免费观看不卡| 色婷婷一区二区| 麻豆国产一区二区| 综合中文字幕亚洲| 欧美一区二区三区不卡| 不卡av在线免费观看| 日本伊人色综合网|