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

正文內(nèi)容

目標(biāo)檢測與跟蹤技術(shù)研究及實現(xiàn)畢業(yè)論文-在線瀏覽

2024-08-02 16:10本頁面
  

【正文】 下運動圖像涉及的一些基本內(nèi)容和原理。在場景中,考慮導(dǎo)致圖像改變的所有因素,由于背景的變化非常緩慢,而運動目標(biāo)的變化比較迅速,比較容易區(qū)分開兩種運動。在場景中檢測出目標(biāo)位置,通過提取的目標(biāo)特征和運動參數(shù)等進(jìn)一步確定目標(biāo),一般通過攝像機(jī)獲取動態(tài)序列圖像的信息。目前有很多運動目標(biāo)的跟蹤方法,不同的目的可采用不同的跟蹤算法,以保證目標(biāo)跟蹤的準(zhǔn)確性和實時性。前景運動也叫作局部運動,是指目標(biāo)在場景中自身的運動;背景運動也叫作全局運動(或攝像機(jī)運動),是指由攝像機(jī)的運動所造成的拍攝背景的移動。 運動的表達(dá)全局運動和局部運動各有特點。而局部運動較復(fù)雜,尤其是在存在多目標(biāo)的情況下,各個目標(biāo)做不同的運動,只有采用精細(xì)方法才能夠準(zhǔn)確表達(dá)。 矢量場表達(dá)因為運動有大小,有方向,所以可以用矢量表示,為了表示瞬時運動得矢量場,這里將運動矢量用不帶箭頭的線段表示,線段的長度、矢量的大小與運動的速度均成正比關(guān)系。圖21 矢量場表達(dá)為了表示目標(biāo)運動具有的復(fù)雜性和多變性,進(jìn)行連續(xù)短時間運動分析,采用運動矢量方向直方圖的表達(dá)方式。見圖22。這些關(guān)鍵點可以用2D或3D的坐標(biāo)值來表達(dá),而插值函數(shù)分別對應(yīng)各坐標(biāo)軸。圖23 運動軌跡表達(dá)在實際工程應(yīng)用中可以根據(jù)具體的場景、運動的類型、目標(biāo)的類型等來選擇合適的表達(dá)方式描述運動。包含運動目標(biāo)的圖像序列可以分為兩種情況即靜止背景和變化背景。下面將分別討論靜止背景和變化背景兩種情況下的目標(biāo)檢測方法。還有一些優(yōu)秀的算法如神經(jīng)網(wǎng)絡(luò)方法和小波放大等也被應(yīng)用到運動目標(biāo)檢測中,由于硬件運算能力和算法的限制,在目前的目標(biāo)檢測與跟蹤的實時性和魯棒性并不太理想。下面介紹一下這兩種方法。首先將相鄰幀圖像對應(yīng)的像素值進(jìn)行差分運算得到差分圖像,減掉灰度不會變化的背景部分。幀間差分法分有點就是具有較好的實時性、算法較為簡單、計算量小。且閾值的選擇決定了檢測結(jié)果的好壞,閾值過低不能抑制圖像噪聲,過高則濾去了有用變化。使用背景差分方法的關(guān)鍵在于背景的建模及其實時更新。非回歸遞推建模方法是利用一段時間內(nèi)存儲的觀測數(shù)據(jù)進(jìn)行建模,常用的有幀間差分、中值濾波等。幀間差分法和背景差分法算法復(fù)雜度適中,計算簡單且實時性較好,是目前使用最廣泛的目標(biāo)檢測方法。大致思想是先根據(jù)幀間差分提取出運動區(qū)域,然后在提取的運動區(qū)域內(nèi)對背景差分圖像和幀間差分圖像進(jìn)行目標(biāo)檢測。 建立背景模型目前常用的背景建模方法有兩種:一種是取圖像序列中的一系列圖像的平均值作為背景的參考圖像,這個參考圖像十分接近于背景圖像,適用于目標(biāo)連續(xù)運動的情況,不適用目標(biāo)緩慢運動的情況;另一種是通過訓(xùn)練的方法,先設(shè)定圖像像素值服從某一種空間分布模型,通過訓(xùn)練不斷地更新分布參數(shù)。檢測出的這個區(qū)域?qū)嶋H上包含了運動物體在前一幀所處區(qū)域P和其在當(dāng)前幀所處的區(qū)域Q,它們的關(guān)系如下圖。 (32)式中:——檢測的閾值; ——差分處理后確定為背景區(qū)域;——差分處理后確定為變化區(qū)域 檢測運動目標(biāo)確定背景區(qū)域和變化區(qū)域之后,對于當(dāng)前幀圖像,只考慮對變化區(qū)域中的圖像與背景圖像做差分處理來檢測運動目標(biāo)。閾值分割完成之后,為了能更好地進(jìn)行目標(biāo)定位,需要將由于噪聲干擾出現(xiàn)的一些小孔洞和毛刺填補(bǔ)或去除。首先,需要定義結(jié)構(gòu)元素: (34)然后進(jìn)行圖像形態(tài)學(xué)腐蝕,結(jié)構(gòu)元素像“探針”一樣對二值圖像進(jìn)行探測,尋找出圖像內(nèi)能夠放下它的區(qū)域,這樣就可以消除一些小而無意義的毛刺。這樣,一些小的空洞和毛刺就被去除。 virtual ~CStatsticDetect()。 public: BYTE *m_pCurImage。 //背景圖像 BYTE *m_pDetectImage。 int WIDTH, HEIGHT,IMAGESIZE。 //背景顏色統(tǒng)計 BYTE *m_pGrayImage。 //背景 BYTE *m_pDiffImage。 //存取多幀數(shù)據(jù) BYTE *m_pPreGrayImage。 BYTE *image2。 BYTE *image4。 BOOL GetBgByHistgram(short int *pHistgram,BYTE *sBg,int nWidth,int nHeight)。 void DeNoise(BYTE *sGray,int nWidth, int nHeight)。 void Dilation(BYTE *sGray,int nWidth, int nHeight,int structure[3][3])。 void GetMultiData(BYTE *sGray,int nWidth, int nHeight)。 void SaveBmp(BYTE *buffer,int nwidth, int nheight, int bit, int index)。 }。 count = 0。 HEIGHT = nheight。 m_pCurImage = new BYTE[IMAGESIZE*3]。 m_pGrayImage = new BYTE[IMAGESIZE]。 m_pBackground = new BYTE[IMAGESIZE]。 m_pBgImage = new BYTE[IMAGESIZE*3]。 m_pDiffImage = new BYTE[IMAGESIZE]。 m_pDetectImage = new BYTE[IMAGESIZE*3]。 m_pBackHistgram = new short int[IMAGESIZE*256]。 m_pTemplate = new UINT[IMAGESIZE]。 }CStatsticDetect::~CStatsticDetect(){ delete []m_pBackHistgram。 delete []m_pBgImage。 delete []m_pBackground。 delete []m_pCurImage。}/*ReceiveFrame函數(shù)說明:接收圖像并進(jìn)行運算 */Void CStatsticDetect::ReceiveFrame(int index, BYTE *sBuf, DETECT_METHOD sMethod){ m_nFrame = index。RGBToYUV(m_pCurImage,m_pGrayImage,WIDTH,HEIGHT)。if(m_nFrameBACK_ALL_NUM){ if(m_nFrame==(BACK_ALL_NUM+1)) { GetBgImage()。 count = 0。 } else if(m_nFrame%(2*BACK_ALL_NUM)==1) //更新背景圖像 { GetBgImage()。 count = 0。 }DiffImage(m_pGrayImage,m_pBackground,WIDTH,HEIGHT,THRESHOLD)。 }/*DiffImage函數(shù)說明:對圖像差分處理 */void CStatsticDetect::DiffImage(BYTE *sGray,BYTE *pGray,int nWidth, int nHeight,int nThreshold){ int i,j。jnHeight。inWidth。 if(diffnThreshold||diffnThreshold) { m_pDiffImage[j*nWidth+i]=255。 } } }}/* GetMultiData函數(shù)說明:用于多針累加 */void CStatsticDetect::GetMultiData(BYTE *sGray,int nWidth, int nHeight){ count++。jnHeight。inWidth。}/*GetBgImage函數(shù)說明:用于獲取背景圖像*/void CStatsticDetect::GetBgImage(){ int i,j,t,pixel。jHEIGHT。iWIDTH。 pixel = UINT(m_pTemplate[t]/count+)。 else if(pixel0) m_pBackground[t] = BYTE(0)。 } }} 函數(shù)調(diào)用建立CStaticDetect對象,每過一幀圖像,調(diào)用ReceiveFrame函數(shù),該函數(shù)有兩個參數(shù),第一個參數(shù)index是當(dāng)前幀的幀號,第二個參數(shù)sBuf代表幀圖像數(shù)據(jù),其大小與給定的圖像大小相同。實驗結(jié)果如圖所示。對于動態(tài)背景下的運動目標(biāo)檢測,如果在動態(tài)背景中的目標(biāo)檢測中沿用靜態(tài)背景下得目標(biāo)檢測思想,那么在進(jìn)行圖像處理時,可以這樣,首先將連續(xù)幾幀的背景圖像確定于同一幀的相同位置,這樣就把運動目標(biāo)給顯現(xiàn)出來。圖像配準(zhǔn)完成后確定了背景圖像,接著就可以利用幀間差分法完成目標(biāo)檢測工作。圖像配準(zhǔn)的方法有很多種,傳統(tǒng)的配準(zhǔn)方法如基于灰度互相關(guān)的模板匹配算法、平均絕對差算法、基于統(tǒng)計的匹配算法、基于特征的匹配算法等。但當(dāng)兩幅圖像之間不僅有平移變化,還存在旋轉(zhuǎn)或者比例變化時,需要使用特征點匹配或其他方法進(jìn)行圖像配準(zhǔn)從而求出兩幀圖像之間的變換關(guān)系。如果用和來表示兩幅圖像,和表示它們各自的強(qiáng)度值,這種映射關(guān)系可以表示為: (35)式中,——二維空間變換,即為;G——一個一維變換。對于二維差分圖像,從理論上來講,只有目運動的重疊區(qū)域的像素點值為零,不過實際處理中,相鄰幀圖像中,光照的改變、高頻噪聲干擾以及場景中小的變化,都會使得二維差分圖像中除了運動目標(biāo)以外不少像素點值都不為零,存在很多這樣會產(chǎn)生虛假運動目標(biāo)。這里采用相鄰四幀差分相乘方法,能夠有效減少虛假目標(biāo)。一個階躍的邊緣信號從第1幀中順序運動到、和中的位置時,進(jìn)行差分相乘或差分累加,對它們結(jié)果進(jìn)行對比發(fā)現(xiàn),如果使用差分累加方法,不僅兩差值信號的中間因為累加出現(xiàn)了較大值,而且使其他信號的值也變大;如果對兩個差值信號進(jìn)行相乘處理,最后結(jié)果只有兩個差值信號的中間出現(xiàn)較大值,而且其他位置依然為零。2) 將配準(zhǔn)后的圖像第一幀與第三幀做差分,第二幀與第四幀做差分。4) 得到差分相乘圖像后,按照靜態(tài)背景下運動目標(biāo)檢測的方法對圖像進(jìn)行形態(tài)學(xué)處理和陰影去除,從而實現(xiàn)運動目標(biāo)的檢測。 類的定義差分相乘運動目標(biāo)檢測類名為“ChafenMul”,該類中主要包含兩個方法:PrepareData用來提供幀數(shù)據(jù),process用來做差分相乘運動目標(biāo)的檢測工作。 ~ChafenMul()。 //第1幀數(shù)據(jù) unsigned char *frame2。 //第3幀數(shù)據(jù) unsigned char *frame4。 int frameHeight。 //輸入幀的數(shù)量 int targetThreshold。 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]。 frame3 = new unsigned char[width * height]。 memset(frame1,0,sizeof(unsigned char) * width * height)。 memset(frame3,0,sizeof(unsigned char) * width * height)。 readyCount = 0。 if(frame2 != NULL) delete[] frame2。 if(frame4 != NULL) delete[] frame4。 if(readyCount == 1) memcpy(frame2,buffer,width * height * sizeof(unsigned char))。 if(readyCount == 3) memcpy(frame4,buffer,width * height * sizeof(unsigned char))。 if(readyCount == 4) readyCount = 0。 for(int j = 0。 j ++) { for(int i = 0。 i ++) { frame1[j*frameWidth+i]=abs(frame3[j*frameWidth+i] frame1[j * frameWidth + i])。 mul[j*frameWidth +i] = frame1[j * frameWidth + i] * frame2[j * frameWidth + i]。 }else frame1[j * frameWidth + i] = 0。} 函數(shù)調(diào)用第一步,建立ChafenMul對象
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1