![圖像處理課程設(shè)計_第1頁](http://file4.renrendoc.com/view/bd30b8c89e62fe1643d1ab1e02b9c066/bd30b8c89e62fe1643d1ab1e02b9c0661.gif)
![圖像處理課程設(shè)計_第2頁](http://file4.renrendoc.com/view/bd30b8c89e62fe1643d1ab1e02b9c066/bd30b8c89e62fe1643d1ab1e02b9c0662.gif)
![圖像處理課程設(shè)計_第3頁](http://file4.renrendoc.com/view/bd30b8c89e62fe1643d1ab1e02b9c066/bd30b8c89e62fe1643d1ab1e02b9c0663.gif)
![圖像處理課程設(shè)計_第4頁](http://file4.renrendoc.com/view/bd30b8c89e62fe1643d1ab1e02b9c066/bd30b8c89e62fe1643d1ab1e02b9c0664.gif)
![圖像處理課程設(shè)計_第5頁](http://file4.renrendoc.com/view/bd30b8c89e62fe1643d1ab1e02b9c066/bd30b8c89e62fe1643d1ab1e02b9c0665.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程設(shè)計報告課程名稱數(shù)字圖像處理課題名稱圖像特征提取軟件設(shè)計專業(yè)班級學(xué)號姓名指導(dǎo)教師2011年1月20日
湖南工程學(xué)院課程設(shè)計任務(wù)書課程名稱數(shù)字圖像處理課題圖像特征提取軟件設(shè)計專業(yè)班級計算機0781學(xué)生姓名學(xué)號指導(dǎo)老師劉長松審批任務(wù)書下達日期2011年1月5日任務(wù)完成日期2011年1月20日一、設(shè)計內(nèi)容與設(shè)計要求1.設(shè)計內(nèi)容(1)圖像分割、邊緣檢測、邊界跟蹤、模板匹配、幾何形狀特征等圖像特征提取方法集成為一個完整的圖像特征提取軟件。(2)針對一幅人臉圖像,利用所設(shè)計的軟件實現(xiàn)人臉特征的提?。ㄍ字行?、鼻孔、鼻尖、嘴角等特征點的抽取,以及嘴形輪廓、頭部輪廓的提取等);2.設(shè)計要求1)總體要求(1)充分認識課程設(shè)計的重要性,認真做好準(zhǔn)備工作,尤其是對編程軟件的使用有基本的認識。(2)虛心接受老師的指導(dǎo),充分發(fā)揮主觀能動性。結(jié)合課題,獨立思考,努力鉆研,勤于實踐,勇于創(chuàng)新。(3)獨立按時完成規(guī)定的工作任務(wù),不得弄虛作假,不準(zhǔn)抄襲他人內(nèi)容。2)實施要求(1)理解各種圖像處理方法確切意義。(2)獨立進行方案的制定,系統(tǒng)結(jié)構(gòu)設(shè)計要合理。(3)在程序開發(fā)時,則必須清楚主要實現(xiàn)函數(shù)的目的和作用,需要在程序書寫時說明做適當(dāng)?shù)淖⑨尅T趯懻n設(shè)報告時,必須要將主要函數(shù)的功能和參數(shù)做詳細的說明。(4)通過多幅不同形式的圖像來檢測該系統(tǒng)的穩(wěn)定性和正確性。3)課程設(shè)計報告的內(nèi)容及要求在完成課題驗收后,學(xué)生應(yīng)在規(guī)定的時間內(nèi)完成課程設(shè)計報告一份(不少于2000字)。二、進度安排第19周星期一8時:00分——12時:00分星期二8時:00分——12時:00分星期三8時:30分——12時:00分星期四14時:00分——18時:00分星期五14時:00分——18時:00分第20周星期一8時:00分——12時:00分附:課程設(shè)計報告裝訂順序:封面、任務(wù)書、目錄、正文、評分表、附件(A4大小的圖紙及程序清單)。正文的格式:一級標(biāo)題用3號黑體,二級標(biāo)題用四號宋體加粗,正文用小四號宋體;行距為22。正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖);三、主要功能的實現(xiàn)(至少要有一個主要模塊的流程圖);四、程序調(diào)試;五、總結(jié);六、附件(所有程序的原代碼,要求對程序?qū)懗霰匾淖⑨專?。正文總字?shù)要求在5000字以上(不含程序原代碼)。目錄TOC\o"1-3"\h\u7374一、課題的主要功能 5176511、圖像獲取功能 580282、圖像預(yù)處理功能 5319463、人臉定位功能 5120194、特征提取功能 518380二、課題的功能模塊的劃分 6819一、功能模塊流程圖 617236二、各模塊的功能 6244151、圖像獲取模塊 670782、人臉區(qū)域獲取 711643、圖像預(yù)處理模塊 7173704、人臉定位模塊 8241615、特征提取模塊 829218三、主要功能的實現(xiàn) 91743一、Gabor變換人臉提取特征的流程圖 911052二、功能的實現(xiàn) 9246651、光線補償 9157962、圖像灰度化 10173933、高斯平滑 10223994、灰度均衡 11262315、圖像對比度增強 1226454四、程序調(diào)試 1331570五、總結(jié) 1623487六、附錄 17一、課題的主要功能1、圖像獲取功能:該模塊主要是從攝像頭拍照后進行獲取圖片,也可以從圖片庫中獲取,獲取后的圖片可以在軟件的界面中顯示出來。2、圖像預(yù)處理功能:該模塊主要包括圖像光線補償、圖像變成灰色、高斯平滑、均衡直方圖、實現(xiàn)圖像對比度增強、二值化變換等。3、人臉定位功能:該模塊主要是將處理后的人臉圖片進行定位,將眼睛、鼻子、嘴巴標(biāo)記出來,以便進行特征提取。4、特征提取功能:該模塊是在定位后的人臉圖片中將眼睛、鼻子、嘴巴的特征值提取出來。課題的功能模塊的劃分一、功能模塊流程圖圖像獲取模塊人臉區(qū)域獲取圖像預(yù)處理模塊圖像預(yù)處理模塊人臉定位模塊特征提取模塊圖2.1二、各模塊的功能1、圖像獲取模塊該模塊主要是從攝像頭拍照后進行獲取圖片,也可以從圖片庫中獲取,獲取后的圖片可以在軟件的界面中顯示出來以便進行識別。2、人臉區(qū)域獲取該系統(tǒng)中圖像里人臉區(qū)域的獲取,主要是根據(jù)膚色來進行獲取,通過膚色非線形分段色彩變換來實現(xiàn)。這一非線性分段色彩變換得到的膚色模型屬于色彩空間中的聚類模型,這一類膚色模型的建立首先要選取一種合適的色彩空間。3、圖像預(yù)處理模塊圖像預(yù)處理就是對獲取得來的圖像進行適當(dāng)?shù)奶幚?,使它具有的特征能夠在圖像中明顯的表現(xiàn)出來。該模塊中的子模塊有如下5個,下面對它們進行概述:·光線補償[3]因為系統(tǒng)得到的圖片可能會存在光線不平衡的情況,這會影響我們對特征的提取,同時系統(tǒng)中要用到Y(jié)crCB色彩空間,所以有必要對圖像進行光線補償。盡可能將它的特征在圖像中表現(xiàn)出來。YcrCB是一種色彩空間,它用于視頻系統(tǒng)中,在該色彩空間中,Y分量表示像素的亮度,Cr表示紅色分量,Cb表示藍色分量,通常把Cr和Cb稱為色度。YcrCB色彩空間是以演播室質(zhì)量標(biāo)準(zhǔn)為目標(biāo)的CC601編碼方案中采用的彩色表示模型?!せ叶茸兓痆4]圖像灰度化的過程就是把彩色圖像轉(zhuǎn)換為黑白色圖像的過程,它也是為了將圖像的信息更加具體、簡單的表現(xiàn)出來,但是,這樣做也將會丟失圖像信息。因此,盡可能在轉(zhuǎn)化的過程中用簡單的方式表現(xiàn)圖像復(fù)雜的信息?!じ咚蛊交幚韀5]高斯平滑將對圖像進行平滑處理,在圖像采集過程中,由于各種因素的影響,圖像往往會出現(xiàn)一些不規(guī)則的噪聲,入圖像在傳輸、存儲等都有可能產(chǎn)生數(shù)據(jù)的丟失。從而影響圖像的質(zhì)量。處理噪聲的過程稱為平滑。平滑可以降低圖像的視覺噪聲,同時出去圖像中的高頻部分后,那些本來不明顯的低頻成分更容易識別。平滑可以通過卷積來實現(xiàn)。經(jīng)過卷積平滑后的水平投影后,二值化提供了較好的圖像效果?!Ρ榷仍鰪奫6]對比度增強,就是對圖像的進一步處理,將對比度再一次拉開。它針對原始圖像的每一個像素直接對其灰度進行處理的,其處理過程主要是通過增強函數(shù)對像素的灰度級進行運算并將運算結(jié)果作為該像素的新灰度值來實現(xiàn)的。通過改變選用的增強函數(shù)的解析表達式就可以得到不同的處理效果?!ざ祷痆7]二值化的目的是將采集獲得的多層次灰度圖像處理成二值圖像,以便于分析理解和識別并減少計算量。二值化就是通過一些算法,通過一個閾值改變圖像中的像素顏色,令整幅圖像畫面內(nèi)僅有黑白二值,該圖像一般由黑色區(qū)域和白色區(qū)域組成,可以用一個比特表示一個像素,“1”表示黑色,“0”表示白色,當(dāng)然也可以倒過來表示,這種圖像稱之為二值圖像。這便有利于我們對特征的提取。該設(shè)計中采用組內(nèi)方差和組外方差來實現(xiàn)二值化?!ぶ狈綀D均衡[8]直方圖均衡化的目的是使一輸入圖像轉(zhuǎn)換為在每一灰度級上都有相同的象素點數(shù),它的處理的中心思想是把原始圖像的灰度直方圖從比較集中的某個灰度區(qū)間變成在全部灰度范圍內(nèi)的均勻分布,它的研究思路是:通過直方圖變換式來進行直方圖的均衡處理,直方圖變換式是但是直方圖均衡化存在著兩個缺點:
1)變換后圖像的灰度級減少,某些細節(jié)消失;
2)某些圖像,如直方圖有高峰,經(jīng)處理后對比度不自然的過分增強。4、人臉定位模塊人臉定位是將典型的臉部特征(如眼睛,鼻尖,嘴唇等等)標(biāo)記出來,在本系統(tǒng)中,定位的特征是眼睛,鼻尖和嘴巴三個。由于眼睛具有對稱性,因此可以很快就能標(biāo)記出來,而鼻子是在眼睛下面,且嘴巴在鼻子下面,所以只要眼睛標(biāo)記好,鼻子和嘴巴也能相應(yīng)的標(biāo)記出來。5、特征提取模塊特征提取按以下4個步驟進行:(1)、提取兩只眼睛的距離(2)、眼睛的傾角度(3)、眼睛、嘴巴的重心(4)、用一個矩形標(biāo)出每一個特征在特征提取完之后將會得到相應(yīng)的特征值以便存入后臺數(shù)據(jù)庫。三、主要功能的實現(xiàn)Gabor變換人臉提取特征的流程圖AboutAbout核函數(shù)下采樣FFT變換乘法器圖像輸入FFT變換特征提取圖3.1功能的實現(xiàn)1、光線補償光線補償功能實質(zhì)上是用上段代碼中的LightingCompensate()函數(shù)來進行實現(xiàn)。函數(shù)LightingCompensate()是類DIB的一個成員函數(shù)。其核心代碼如下所述: //下面的循環(huán)對圖像進行光線補償 for(i=0;i<height;i++) for(intj=0;j<width;j++) { //獲取像素偏移 lOffset=this->PixelOffset(i,j,wBytesPerLine); //得到藍色分量 *(lpData+lOffset)=colorb; //綠色分量 colorb=*(lpData+lOffset+1); colorb*=co; if(colorb>255) colorb=255; *(lpData+lOffset+1)=colorb; //紅色分量 colorb=*(lpData+lOffset+2); colorb*=co; if(colorb>255) colorb=255; *(lpData+lOffset+2)=colorb;}2、圖像灰度化①彩色轉(zhuǎn)換成灰度將彩色圖像轉(zhuǎn)化為灰階圖像常采用如下的經(jīng)驗式:gray=0.39×R+0.50×G+0.11×B(式3)其中,gray為灰度值,R、G、B分別為紅色、綠色和藍色分量值。②灰度比例變換灰度比例變換是把原像素的灰度乘以一個縮放因子,并最后截至[0,255]。③灰度線性變換當(dāng)圖像由于成像時曝光不足或曝光過度,會產(chǎn)生對比度不足的弊病,從而使圖像中的細節(jié)分辨不清。將圖像灰度進行線性擴展,常能顯著地改善圖像的外觀。3、高斯平滑在類CFaceDetectView中添加“高斯平滑”菜單項的事件處理程序,其代碼如下: Template(tem,3,3,xishu); Invalidate(TRUE);其中tem是模板參數(shù),xishu是模板系數(shù);Template()函數(shù)是實現(xiàn)高斯平滑的主要函數(shù),其核心代碼是:for(m=i-((tem_h-1)/2);m<=i+((tem_h-1)/2);m++){ for(n=j-((tem_w-1)/2);n<=j+((tem_w-1)/2);n++) 注:將以點(i,j)為中心,與模板大小相同的范圍內(nèi)的象素與模板對用位置的系數(shù)進行相乘并線形疊加 sum+=Gray[m][n]*tem[(m-i+((tem_h-1)/2))*tem_w+n-j+((tem_w-1)/2)]; } 將結(jié)果乘上總的模板系數(shù)sum=(int)sum*xishu; 計算絕對值 sum=fabs(sum); 如果小于0,強制賦值為0if(sum<0)sum=0; 如果大于255,強制賦值為255if(sum>255) sum=255;HeightTemplate[i][j]=sum;4、灰度均衡在灰度均衡操作同樣不需要改變DIB的調(diào)色板和文件夾,只要把指向DIB像素起始位置的指針和DIB高度、寬度信息傳遞給子函數(shù)就可以完成灰度均衡變換工作,其核心代碼如下:*(lpData+lOffset)=state;//顯示灰度均衡*(lpData+lOffset+1)=state;*(lpData+lOffset+2)=state;5、圖像對比度增強類CFaceDetectView中添加“實現(xiàn)圖像對比度增強”菜單項的事件處理程序,其代碼如下;lOffset=gDib.PixelOffset(i,j,gwBytesPerLine);獲取圖像灰度增強函數(shù)intstate=IncreaseContrast(ZFT[k][k1],100);顯示灰度增強后的圖像*(lpData+lOffset)=state;*(lpData+lOffset+1)=state;*(lpData+lOffset+2)=state;其中IncreaseContras()函數(shù)是實現(xiàn)圖像對比度增強的關(guān)鍵函數(shù),該根據(jù)參數(shù)n來調(diào)節(jié)對比度,n越大,對比越強烈,其核心是:如果數(shù)據(jù)很小,設(shè)置為0if(pByte<=Low) return0; 獲得中間數(shù)據(jù),并進行對比增強處理 elseif((Low<pByte)&&(pByte<High)) returnint(((pByte-Low)/Grad)); 如果數(shù)據(jù)很大,設(shè)置為255 else return255四、程序調(diào)試本系統(tǒng)主要由圖像處理、人臉定位、特征提取三個部分組成,而圖像處理對于后面的工作結(jié)果好壞起著至關(guān)重要的作用,因此從軟件開發(fā)的最初階段我們就要對軟件進行不斷的測試,對圖像處理模塊中的各個子模塊進行測試以便檢測經(jīng)過處理后的圖像效果是否達到預(yù)期的效果圖4.1編譯成功編譯成功后進入操作界面:圖4..2運行界面當(dāng)輸入的圖片不符合規(guī)格時,程序會發(fā)出警告提示,終止程序的運行圖4.3錯誤提示成功載入圖片,準(zhǔn)備進行圖片的編輯:圖4.4載入圖片編譯圖片嘴角的匹配,勾勒出人物輪廓:圖臉部輪廓五、總結(jié)經(jīng)過兩個禮拜的課程設(shè)計,又重新溫故了本學(xué)期數(shù)字圖像處理的課本知識,同時鍛煉了C++的編程能力。面對著諸多的問題和考驗,我一次又一次享受了難題解決前的困惑和難題解決后的興奮。兩個星期的數(shù)字圖像處理的課程設(shè)計在充滿緊張的氛圍中結(jié)束了,這次操作系統(tǒng)課程設(shè)計讓我收獲很多。課程設(shè)計目的不僅是對所學(xué)知識的運用和擴展,也是在大學(xué)期間培養(yǎng)學(xué)生動手、分析問題和解決問題的能力。通過這一周的課程設(shè)計實踐讓我重新溫習(xí)了過去學(xué)過的知識。通過資料的查詢發(fā)現(xiàn)圖像的處理方法很多,我們可以根據(jù)需要,有選擇地使用各種方法。在確定臉部區(qū)域上,通常使用的方法有膚色提取。膚色提取,則對臉部區(qū)域的獲取則比較準(zhǔn)確,成功率達到95%以上,并且速度快,減少很多工作。圖像的亮度變化,由于圖像的亮度在不同環(huán)境的當(dāng)中,必然受到不同光線的影響,圖像就變得太暗或太亮,我們就要對它的亮度進行調(diào)整,主要采取的措施是對圖像進行光線補償。進行灰度處理,我們要保證圖像信息盡可能少的丟失。在圖像的采集過程中,由于各種因素的影響,圖像中往往會出現(xiàn)一些不規(guī)則的隨機噪聲,如數(shù)據(jù)在傳輸、存儲時發(fā)生的數(shù)據(jù)丟失和損壞等,這些都會影響圖像的質(zhì)量,因此需要將圖片進行平滑操作以此來消除噪聲。同樣在進行灰度變換前,我們也要對圖像的信息進行統(tǒng)計,找出一個比較合理的灰度值,才能進行灰度變換?;叶茸儞Q后,就要進行灰度均衡,可以根據(jù)灰度分布來進行灰度均衡。對于這次的課程設(shè)計,我們最重要的不是學(xué)會如何去編程,如何去實現(xiàn)算法,更重要的是我們學(xué)會怎樣通過自己去查閱資料掌握我們要懂的知識,學(xué)會自己分析,學(xué)會自己獨立去研究。提高我們自學(xué)的能力,使我們即使有一天出去社會,沒有老師在身邊,也可以自己獨立去研究我們的專業(yè)知識。六、附錄#include"stdafx.h"#include"DIB.h"#include"math.h"#defineWIDTHBYTES(bits)((bits+31)/32*4)#defineRECTWIDTH(x)(x->right-x->left)#defineRECTHEIGHT(x)(x->bottom-x->top)#defineTHRESHOLDCONTRAST40#ifdef_DEBUG#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#definenewDEBUG_NEW#endif#definePI3.1415926externintlocax,locay;#definem_WIDTH600#definem_HEIGHT600HDIBDIB::ReadDIBFile(HANDLEhFile){ BITMAPFILEHEADERbmfHeader; DWORDdwBitsSize; HANDLEhDIB; HANDLEhDIBtmp; LPBITMAPINFOHEADERlpbi; DWORDdwRead;//得到文件大小 dwBitsSize=GetFileSize(hFile,NULL); hDIB=GlobalAlloc(GMEM_MOVEABLE,(DWORD)(sizeof(BITMAPINFOHEADER))); if(!hDIB) returnNULL; lpbi=(LPBITMAPINFOHEADER)GlobalLock(hDIB); if(!lpbi) { GlobalFree(hDIB); returnNULL; } if(!ReadFile(hFile,(LPBYTE)&bmfHeader,sizeof(BITMAPFILEHEADER),&dwRead,NULL)) gotoErrExit; if(sizeof(BITMAPFILEHEADER)!=dwRead)//讀取文件出錯 gotoErrExit; if(bmfHeader.bfType!=0x4d42)//文件類型不匹配 gotoErrExit; if(!ReadFile(hFile,(LPBYTE)lpbi,sizeof(BITMAPINFOHEADER),&dwRead,NULL)) gotoErrExit; if(sizeof(BITMAPINFOHEADER)!=dwRead)//讀取數(shù)據(jù)出錯 gotoErrExit; GlobalUnlock(hDIB); if(lpbi->biSizeImage==0) lpbi->biSizeImage=(this->BytePerLine(hDIB))*lpbi->biHeight; hDIBtmp=GlobalReAlloc(hDIB,lpbi->biSize+lpbi->biSizeImage,0); if(!hDIBtmp) gotoErrExitNoUnlock; else hDIB=hDIBtmp; lpbi=(LPBITMAPINFOHEADER)GlobalLock(hDIB); //根據(jù)情況設(shè)定文件指針 if(bmfHeader.bfOffBits!=0L) SetFilePointer(hFile,bmfHeader.bfOffBits,NULL,FILE_BEGIN);//讀取文件的象素顏色數(shù)據(jù) if(ReadFile(hFile,(LPBYTE)lpbi+lpbi->biSize,lpbi->biSizeImage,&dwRead,NULL)) gotoOKExit; ErrExit: GlobalUnlock(hDIB); ErrExitNoUnlock: GlobalFree(hDIB);//釋放內(nèi)存 returnNULL; OKExit: GlobalUnlock(hDIB); returnhDIB; }HDIBDIB::ToGray(HANDLEhDIB){ HDIBhNewDIB=NULL; LPBITMAPINFOHEADERlpSrc,lpDest; LPBYTElpS,lpD; DWORDdwBytesPerLine; DWORDdwImgSize; WORDwBytesPerLine; unsignedi,j,height,width; if(!hDIB) returnNULL; lpSrc=(LPBITMAPINFOHEADER)GlobalLock(hDIB); dwBytesPerLine=WIDTHBYTES(24*(lpSrc->biWidth)); dwImgSize=lpSrc->biHeight*dwBytesPerLine; //申請新的內(nèi)存,大小等于原來圖象的大小 hNewDIB=GlobalAlloc(GHND,sizeof(BITMAPINFOHEADER)+dwImgSize); lpDest=(LPBITMAPINFOHEADER)GlobalLock(hNewDIB); //保存圖片的長寬、顏色深度等信息 memcpy((void*)lpDest,(void*)lpSrc,sizeof(BITMAPINFOHEADER)); DWORDdwSBytesPerLine; dwSBytesPerLine=(24*(lpSrc->biWidth)+31)/32*4; height=lpDest->biHeight; width=lpDest->biWidth; lpS=(LPBYTE)lpSrc; wBytesPerLine=this->BytePerLine(hDIB); lpD=(LPBYTE)lpDest; lpS=lpS+sizeof(BITMAPINFOHEADER); lpD=lpD+sizeof(BITMAPINFOHEADER); unsignedr,g,b,gray; //掃描整個圖片,實現(xiàn)灰度化 for(i=0;i<height;i++) { for(j=0;j<(unsigned)lpDest->biWidth;j++) { //獲得原來圖片的顏色值 r=*(lpS++); g=*(lpS++); b=*(lpS++); //計算灰度值 gray=(g*50+r*39+b*11)/100; //保存灰度值到目標(biāo)圖片 *(lpD++)=gray; *(lpD++)=gray; *(lpD++)=gray; } //處理四字節(jié)對齊問題 unsignedk; for(k=0;k<dwSBytesPerLine-lpSrc->biWidth*3;k++) { lpS++; lpD++; } } GlobalUnlock(hDIB); GlobalUnlock(hNewDIB); returnhNewDIB; }voidDIB::FaceLocate(HANDLEhDIB,CRectfaceLocation[10],int&faceNum){ HANDLEhDIBTemp; //保存當(dāng)前數(shù)據(jù) hDIBTemp=this->CopyHandle(hDIB); LPBITMAPINFOHEADERlpbi; LPBYTElpData; WORDwBytesPerLine; intheight; intwidth; longlOffset; //得到圖象的基本信息 lpbi=(LPBITMAPINFOHEADER)GlobalLock(hDIB); height=lpbi->biHeight; width=lpbi->biWidth; lpData=FindDIBBits(hDIB); wBytesPerLine=BytePerLine(hDIB); //人臉數(shù)目初始化為0 faceNum=0; for(intk=0;k<10;k++) { //初始化區(qū)域 faceLocation[k].bottom=-1; faceLocation[k].top=height; faceLocation[k].right=-1; faceLocation[k].left=width; } for(inti=0;i<height;i++) for(intj=0;j<width;j++) { //偏移 lOffset=PixelOffset(i,j,wBytesPerLine); intnum; //當(dāng)前點的數(shù)值 num=*(lpData+lOffset); if(num!=0)//不是黑色 { //遞歸計算 RecursiveLocateRect(lpData,wBytesPerLine,i,j,num,faceLocation[faceNum]); faceNum++; } } GlobalUnlock(hDIB); GlobalFree(hDIB); //數(shù)值還原 hDIB=this->CopyHandle(hDIBTemp); lpData=FindDIBBits(hDIB); wBytesPerLine=BytePerLine(hDIB); for(i=0;i<faceNum;i++) for(intj=faceLocation[i].top;j<faceLocation[i].bottom;j++) { //把得到的人臉區(qū)域用綠色矩形標(biāo)注,處理豎直的兩條邊 lOffset=this->PixelOffset(j,faceLocation[i].left,wBytesPerLine); *(lpData+lOffset++)=0; *(lpData+lOffset++)=255; *(lpData+lOffset++)=0; lOffset=this->PixelOffset(j,faceLocation[i].right,wBytesPerLine); *(lpData+lOffset++)=0; *(lpData+lOffset++)=255; *(lpData+lOffset++)=0; } for(i=0;i<faceNum;i++) for(intj=faceLocation[i].left;j<faceLocation[i].right;j++) { //處理水平的兩天矩形邊 lOffset=this->PixelOffset(faceLocation[i].top,j,wBytesPerLine); *(lpData+lOffset++)=0; *(lpData+lOffset++)=255; *(lpData+lOffset++)=0; lOffset=this->PixelOffset(faceLocation[i].bottom,j,wBytesPerLine); *(lpData+lOffset++)=0; *(lpData+lOffset++)=255; *(lpData+lOffset++)=0; } GlobalFree(hDIBTemp); GlobalUnlock(hDIB);}voidDIB::EyeMapC(LPBYTElpRgb,constLPBYTElpYcc,WORDwBytesPerLine,CRectfaceLocation){ longlOffset; intcr; intcb; //根據(jù)傳進來的矩形區(qū)域進行眼睛的色度匹配 for(inti=faceLocation.top;i<=faceLocation.bottom;i++) for(intj=faceLocation.left;j<=faceLocation.right;j++) { //得到Cr,Cb數(shù)值 lOffset=PixelOffset(i,j,wBytesPerLine); cr=*(lpYcc+lOffset+1); cb=*(lpYcc+lOffset+2); //標(biāo)志 boollab; //判斷Cb分量的數(shù)值,并修改標(biāo)志 intcmap=cb-116; if(cmap>-1&&cmap<4) lab=true; else lab=false; //判斷Cr分量的數(shù)值,并修改標(biāo)志 cmap=cr-144; if(cmap<=-2||cmap>=2) { lab=false; } //根據(jù)標(biāo)志設(shè)定圖像顏色 if(lab) cmap=255; else cmap=0; //保存圖象顏色 *(lpRgb+lOffset++)=cmap; *(lpRgb+lOffset++)=cmap; *(lpRgb+lOffset++)=cmap; }voidDIB::FaceLocate(HANDLEhDIB,CRectfaceLocation[10],int&faceNum){ HANDLEhDIBTemp; //保存當(dāng)前數(shù)據(jù) hDIBTemp=this->CopyHandle(hDIB); LPBITMAPINFOHEADERlpbi; LPBYTElpData; WORDwBytesPerLine; intheight; intwidth; longlOffset; //得到圖象的基本信息 lpbi=(LPBITMAPINFOHEADER)GlobalLock(hDIB); height=lpbi->biHeight; width=lpbi->biWidth; lpData=FindDIBBits(hDIB); wBytesPerLine=BytePerLine(hDIB); //人臉數(shù)目初始化為0 faceNum=0; for(intk=0;k<10;k++) { //初始化區(qū)域 faceLocation[k].bottom=-1; faceLocation[k].top=height; faceLocation[k].right=-1; faceLocation[k].left=width; } for(inti=0;i<height;i++) for(intj=0;j<width;j++) { //偏移 lOffset=PixelOffset(i,j,wBytesPerLine); intnum; //當(dāng)前點的數(shù)值 num=*(lpData+lOffset); if(num!=0)//不是黑色 { //遞歸計算 RecursiveLocateRect(lpData,wBytesPerLine,i,j,num,faceLocation[faceNum]); faceNum++; } } GlobalUnlock(hDIB); GlobalFree(hDIB); //數(shù)值還原 hDIB=this->CopyHandle(hDIBTemp); lpData=FindDIBBits(hDIB); wBytesPerLine=BytePerLine(hDIB); for(i=0;i<faceNum;i++) for(intj=faceLocation[i].top;j<faceLocation[i].bottom;j++) { //把得到的人臉區(qū)域用綠色矩形標(biāo)注,處理豎直的兩條邊 lOffset=this->PixelOffset(j,faceLocation[i].left,wBytesPerLine); *(lpData+lOffset++)=0; *(lpData+lOffset++)=255; *(lpData+lOffset++)=0; lOffset=this->PixelOffset(j,faceLocation[i].right,wBytesPerLine); *(lpData+lOffset++)=0; *(lpData+lOffset++)=255; *(lpData+lOffset++)=0; } for(i=0;i<faceNum;i++) for(intj=faceLocation[i].left;j<faceLocation[i].right;j++) { //處理水平的兩天矩形邊 lOffset=this->PixelOffset(faceLocation[i].top,j,wBytesPerLine); *(lpData+lOffset++)=0; *(lpData+lOffset++)=255; *(lpData+lOffset++)=0; lOffset=this->PixelOffset(faceLocation[i].bottom,j,wBytesPerLine); *(lpData+lOffset++)=0; *(lpData+lOffset++)=255; *(lpData+lOffset++)=0; } voidDIB::EyeMapC(LPBYTElpRgb,constLPBYTElpYcc,WORDwBytesPerLine,CRectfaceLocation){ longlOffset; intcr; intcb; //根據(jù)傳進來的矩形區(qū)域進行眼睛的色度匹配 for(inti=faceLocation.top;i<=faceLocation.bottom;i++) for(intj=faceL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年01月紹興市外服派駐越城機關(guān)單位景點講解員公開招聘1人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025至2030年中國服裝裝飾帶數(shù)據(jù)監(jiān)測研究報告
- 2025年TPR雙色模具項目可行性研究報告
- 社團部長申請書
- 建筑材料跨國運輸協(xié)議
- 2025年01月山東青島經(jīng)濟技術(shù)開發(fā)區(qū)管委會選聘23人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025至2030年中國不銹鋼西餐餐具數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年橢圓管項目投資價值分析報告
- 舞蹈隊退隊申請書
- 不想留隊申請書
- 東芝授權(quán)委托書標(biāo)準(zhǔn)版
- 調(diào)車作業(yè)-調(diào)車概述(鐵路行車組織)
- 【住院患者跌倒或墜床預(yù)防護理措施研究國內(nèi)外文獻綜述3300字】
- 2023施工項目部標(biāo)準(zhǔn)化工作手冊
- 酒店員工招聘與面試技巧培訓(xùn)課件
- 技術(shù)服務(wù)合同-英文版模板
- 公眾聚集場所消防技術(shù)標(biāo)準(zhǔn)要點
- 人教部編版三年級上冊語文【選擇題】專項復(fù)習(xí)訓(xùn)練練習(xí)100題
- DB64-T 1933-2023 園林樹種引種馴化技術(shù)規(guī)程
- 路損案件現(xiàn)場勘查-路損案件現(xiàn)場拍照取證(路政管理課件)
- 幼兒園員工手冊與規(guī)章制度
評論
0/150
提交評論