freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

目標(biāo)檢測與跟蹤技術(shù)研究及實現(xiàn)畢業(yè)論文(編輯修改稿)

2024-07-19 16:10 本頁面
 

【文章內(nèi)容簡介】 Method){ m_nFrame = index。 memcpy(m_pCurImage,sBuf,WIDTH*HEIGHT*3)。RGBToYUV(m_pCurImage,m_pGrayImage,WIDTH,HEIGHT)。GetMultiData(m_pGrayImage,WIDTH,HEIGHT)。if(m_nFrameBACK_ALL_NUM){ if(m_nFrame==(BACK_ALL_NUM+1)) { GetBgImage()。 memset(m_pTemplate,0,IMAGESIZE*sizeof(UINT))。 count = 0。 SaveBmp(m_pBackground,WIDTH,HEIGHT,8,index)。 } else if(m_nFrame%(2*BACK_ALL_NUM)==1) //更新背景圖像 { GetBgImage()。 memset(m_pTemplate,0,IMAGESIZE*sizeof(UINT))。 count = 0。 SaveBmp(m_pBackground,WIDTH,HEIGHT,8,index)。 }DiffImage(m_pGrayImage,m_pBackground,WIDTH,HEIGHT,THRESHOLD)。 DeNoise(m_pDiffImage,WIDTH,HEIGHT)。 }/*DiffImage函數(shù)說明:對圖像差分處理 */void CStatsticDetect::DiffImage(BYTE *sGray,BYTE *pGray,int nWidth, int nHeight,int nThreshold){ int i,j。 for(j=0。jnHeight。j++) { for(i=0。inWidth。i++) { int diff=sGray[j*nWidth+i]pGray[nWidth*j+i]。 if(diffnThreshold||diffnThreshold) { m_pDiffImage[j*nWidth+i]=255。 } else { m_pDiffImage[j*nWidth+i]=0。 } } }}/* GetMultiData函數(shù)說明:用于多針累加 */void CStatsticDetect::GetMultiData(BYTE *sGray,int nWidth, int nHeight){ count++。for(int j=0。jnHeight。j++) for(int i=0。inWidth。i++) m_pTemplate[j*nWidth+i]+=sGray[j*nWidth+i]。}/*GetBgImage函數(shù)說明:用于獲取背景圖像*/void CStatsticDetect::GetBgImage(){ int i,j,t,pixel。 for(j=0。jHEIGHT。j++) { for(i=0。iWIDTH。i++) { t = j*WIDTH+i。 pixel = UINT(m_pTemplate[t]/count+)。 if(pixel255) m_pBackground[t] = BYTE(255)。 else if(pixel0) m_pBackground[t] = BYTE(0)。 else m_pBackground[t] = BYTE(pixel)。 } }} 函數(shù)調(diào)用建立CStaticDetect對象,每過一幀圖像,調(diào)用ReceiveFrame函數(shù),該函數(shù)有兩個參數(shù),第一個參數(shù)index是當(dāng)前幀的幀號,第二個參數(shù)sBuf代表幀圖像數(shù)據(jù),其大小與給定的圖像大小相同。在達(dá)到預(yù)定的閾值后,ReceiveFrame函數(shù)將建立起背景模型,并進(jìn)行目標(biāo)檢測,檢測結(jié)果通過成員變m_pDiffImage量輸出。實驗結(jié)果如圖所示。圖(31)第n幀圖像 圖(32)第n+1幀圖像圖(33)第n幀對應(yīng)檢測結(jié)果 圖(34)第n+1幀對引發(fā)檢測結(jié)果 動態(tài)背景下得運(yùn)動目標(biāo)檢測如果目標(biāo)運(yùn)動的同時,攝像機(jī)也發(fā)生了相對運(yùn)動時,運(yùn)動目標(biāo)的變化與背景的變化就會混合,使得目標(biāo)檢測變得復(fù)雜困難。對于動態(tài)背景下的運(yùn)動目標(biāo)檢測,如果在動態(tài)背景中的目標(biāo)檢測中沿用靜態(tài)背景下得目標(biāo)檢測思想,那么在進(jìn)行圖像處理時,可以這樣,首先將連續(xù)幾幀的背景圖像確定于同一幀的相同位置,這樣就把運(yùn)動目標(biāo)給顯現(xiàn)出來。這個方法是基于圖像配準(zhǔn)技術(shù)的,通過圖像配準(zhǔn)處理估計出幀間運(yùn)動背景的全局運(yùn)動矢量,然后把后幀與前幀進(jìn)行圖像配準(zhǔn)。圖像配準(zhǔn)完成后確定了背景圖像,接著就可以利用幀間差分法完成目標(biāo)檢測工作。下面闡述一個基于圖像配準(zhǔn)和差分相乘的目標(biāo)檢測的方法。圖像配準(zhǔn)的方法有很多種,傳統(tǒng)的配準(zhǔn)方法如基于灰度互相關(guān)的模板匹配算法、平均絕對差算法、基于統(tǒng)計的匹配算法、基于特征的匹配算法等。當(dāng)兩幀圖像的背景只有平移變化時,只需要簡單計算出平移量就可以實現(xiàn)配準(zhǔn)。但當(dāng)兩幅圖像之間不僅有平移變化,還存在旋轉(zhuǎn)或者比例變化時,需要使用特征點(diǎn)匹配或其他方法進(jìn)行圖像配準(zhǔn)從而求出兩幀圖像之間的變換關(guān)系。圖像的配準(zhǔn)可以定義為兩幅圖像空間以及強(qiáng)度上得一種映射。如果用和來表示兩幅圖像,和表示它們各自的強(qiáng)度值,這種映射關(guān)系可以表示為: (35)式中,——二維空間變換,即為;G——一個一維變換。 差分相乘原理在確定相鄰幀圖像背景間的運(yùn)動偏移量之后,把后幀圖像按運(yùn)動偏移量與前幀圖像進(jìn)行對準(zhǔn),再作幀間差分運(yùn)算,現(xiàn)在就減掉了之前配準(zhǔn)的背景。對于二維差分圖像,從理論上來講,只有目運(yùn)動的重疊區(qū)域的像素點(diǎn)值為零,不過實際處理中,相鄰幀圖像中,光照的改變、高頻噪聲干擾以及場景中小的變化,都會使得二維差分圖像中除了運(yùn)動目標(biāo)以外不少像素點(diǎn)值都不為零,存在很多這樣會產(chǎn)生虛假運(yùn)動目標(biāo)。為了克服干擾,可以采用多幀圖像差分相乘,銳化二維差分圖像中運(yùn)動邊緣的相關(guān)峰,增強(qiáng)圖像邊緣,減少甚至消除光照不均、噪聲和自然場景中變化帶來的干擾,能夠準(zhǔn)確地檢測出目標(biāo)的邊緣信息。這里采用相鄰四幀差分相乘方法,能夠有效減少虛假目標(biāo)。公式如下: (36)式中,,分別為配準(zhǔn)后的圖像像素,為經(jīng)過差分相乘處理后后所得圖像像素。一個階躍的邊緣信號從第1幀中順序運(yùn)動到、和中的位置時,進(jìn)行差分相乘或差分累加,對它們結(jié)果進(jìn)行對比發(fā)現(xiàn),如果使用差分累加方法,不僅兩差值信號的中間因為累加出現(xiàn)了較大值,而且使其他信號的值也變大;如果對兩個差值信號進(jìn)行相乘處理,最后結(jié)果只有兩個差值信號的中間出現(xiàn)較大值,而且其他位置依然為零。 基于差分相乘原理的運(yùn)動目標(biāo)檢測算法實現(xiàn) 動態(tài)背景下運(yùn)動目標(biāo)的檢測步驟1) 將第一幀圖像與第三幀圖像配準(zhǔn),第二幀圖像與第四幀圖像配準(zhǔn)。2) 將配準(zhǔn)后的圖像第一幀與第三幀做差分,第二幀與第四幀做差分。3) 將兩幅幀差圖像相乘,存在運(yùn)動重疊的地方出現(xiàn)較高的相關(guān)峰,其他不連續(xù)的區(qū)域的數(shù)值為零或較小,這樣利用閾值就能有效排除虛假目標(biāo)的干擾,從而得到較精確的運(yùn)動目標(biāo)的邊緣。4) 得到差分相乘圖像后,按照靜態(tài)背景下運(yùn)動目標(biāo)檢測的方法對圖像進(jìn)行形態(tài)學(xué)處理和陰影去除,從而實現(xiàn)運(yùn)動目標(biāo)的檢測。5) 利用形心法計算出目標(biāo)的形心位置坐標(biāo),作為下一幀跟蹤的初始位置。 類的定義差分相乘運(yùn)動目標(biāo)檢測類名為“ChafenMul”,該類中主要包含兩個方法:PrepareData用來提供幀數(shù)據(jù),process用來做差分相乘運(yùn)動目標(biāo)的檢測工作。class ChafenMul{public: ChafenMul(int width,int height,int targetThreshold)。 ~ChafenMul()。public: unsigned char *frame1。 //第1幀數(shù)據(jù) unsigned char *frame2。 //第2幀數(shù)據(jù) unsigned char *frame3。 //第3幀數(shù)據(jù) unsigned char *frame4。 //第4幀數(shù)據(jù) int frameWidth。 int frameHeight。 //幀寬度和高度 int readyCount。 //輸入幀的數(shù)量 int targetThreshold。 //目標(biāo)檢測閾值public: void PrepareData(unsigned char *buffer,int width,int height)。 void process()。}。 類的實現(xiàn)/*ChafenMul函數(shù) 說明:構(gòu)造函數(shù),并分配內(nèi)存空間,參數(shù)為幀的高度和寬度*/ChafenMul::ChafenMul(int width,int height,int _targetThreshold):targetThreshold(_targetThreshold),frameWidth(width),frameHeight(height),frame1(NULL),frame2(NULL),frame3(NULL),frame4(NULL){ frame1 = new unsigned char[width * height]。 frame2 = new unsigned char[width * height]。 frame3 = new unsigned char[width * height]。 frame4 = new unsigned char[width * height]。 memset(frame1,0,sizeof(unsigned char) * width * height)。 memset(frame2,0,sizeof(unsigned char) * width * height)。 memset(frame3,0,sizeof(unsigned char) * width * height)。 memset(frame4,0,sizeof(unsigned char) * width * height)。 readyCount = 0。}/* ~ChafenMul函數(shù)說明:析構(gòu)函數(shù),釋放內(nèi)存空間*/ChafenMul::~ChafenMul(){ if(frame1 != NULL) delete[] frame1。 if(frame2 != NULL) delete[] frame2。 if(frame3 != NULL) delete[] frame3。 if(frame4 != NULL) delete[] frame4。}/*PrepareData函數(shù) 說明:輸入幀圖像數(shù)據(jù),并分別將幀圖像數(shù)據(jù)拷貝至緩存中*/void ChafenMul::PrepareData(unsigned char *buffer,int width,int height){ if(readyCount == 0) memcpy(frame1,buffer,width * height * sizeof(unsigned char))。 if(readyCount == 1) memcpy(frame2,buffer,width * height * sizeof(unsigned char))。 if(readyCount == 2) memcpy(frame3,buffer,width * height * sizeof(unsigned char))。 if(readyCount == 3) memcpy(frame4,buffer,width * height * sizeof(unsigned char))。 readyCount ++。 if(readyCount == 4) readyCount = 0。}/*process函數(shù) 說明:差分相乘法檢測目標(biāo)*/void ChafenMul::process(){ int * mul = new int[frameWidth * frameHeight]。 for(int j = 0。 j frameHeight。 j ++) { for(int i = 0。 i frameWidth。 i ++) { frame1[j*frameWidth+i]=abs(frame3[j*frameWidth+i] frame1[j * frameWidth + i])。 frame2[j*frameWidth+i]=abs(frame4[j*frameWidth+ i] frame2[j * frameWidth + i])。 mul[j*frameWidth +i] = frame1[j * frameWidth + i] * frame2[j * frameWidth + i]。 if(mul[j*frameWidth +i] targetThreshold) { frame1[j * frameWidth + i] =
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1