![輪廓提取算法_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/cb5ffea7-47d5-4d26-a286-3695d0e433ed/cb5ffea7-47d5-4d26-a286-3695d0e433ed1.gif)
![輪廓提取算法_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/cb5ffea7-47d5-4d26-a286-3695d0e433ed/cb5ffea7-47d5-4d26-a286-3695d0e433ed2.gif)
![輪廓提取算法_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/cb5ffea7-47d5-4d26-a286-3695d0e433ed/cb5ffea7-47d5-4d26-a286-3695d0e433ed3.gif)
![輪廓提取算法_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/cb5ffea7-47d5-4d26-a286-3695d0e433ed/cb5ffea7-47d5-4d26-a286-3695d0e433ed4.gif)
![輪廓提取算法_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/cb5ffea7-47d5-4d26-a286-3695d0e433ed/cb5ffea7-47d5-4d26-a286-3695d0e433ed5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、輪廓提取算法(contour extraction) 輪廓提取的目的就是獲得圖像的外部特征,是進(jìn)行圖像分析的有用手段之一.二值圖像輪廓提取的算法非常簡單,就是掏空內(nèi)部點(diǎn):如果原圖中有一點(diǎn)為黑,且它的8個相臨點(diǎn)都是黑色時,則將該黑點(diǎn)刪掉.下面是輪廓提取和跟蹤的簡單實(shí)現(xiàn):/* 函數(shù)名稱:* ContourDIB()* 參數(shù):* LPSTR lpDIBBits - 指向源DIB圖像指針* LONG lWidth
2、60; - 源圖像寬度(象素數(shù),必須是4的倍數(shù))* LONG lHeight - 源圖像高度(象素數(shù))* 返回值:* BOOL - 運(yùn)算成功返回TRUE,否則返回FALSE。* 說明:* 該函數(shù)用于對圖像進(jìn)行輪廓提取運(yùn)算。* * 要求目標(biāo)圖像為只有0和25
3、5兩個灰度值的灰度圖像。*/BOOL WINAPI ContourDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)/ 指向源圖像的指針LPSTR lpSrc;/ 指向緩存圖像的指針LPSTR lpDst;/ 指向緩存DIB圖像的指針LPSTR lpNewDIBBits;HLOCAL hNewDIBBits;/循環(huán)變量long i;long j;unsigned char n,e,s,w,ne,se,nw,sw;/像素值unsigned char pixel;/ 暫時分配內(nèi)存,以保存新圖像hNewDIBBits = LocalAlloc(LHND,
4、lWidth * lHeight);if (hNewDIBBits = NULL) / 分配內(nèi)存失敗 return FALSE;/ 鎖定內(nèi)存lpNewDIBBits = (char * )LocalLock(hNewDIBBits);/ 初始化新分配的內(nèi)存,設(shè)定初始值為255lpDst = (char *)lpNewDIBBits;memset(lpDst, (BYTE)255, lWidth * lHeight);for(j = 1; j <lHeight-1; j+) for(i = 1;i <lWidth-1;
5、 i+) / 指向源圖像倒數(shù)第j行,第i個象素的指針 lpSrc = (char *)lpDIBBits + lWidth * j + i; / 指向目標(biāo)圖像倒數(shù)第j行,第i個象素的指針 lpDst = (char *)lpNewDIBBits + lWidth * j + i; /取得當(dāng)前指針處的像素值,注意要轉(zhuǎn)換為uns
6、igned char型 pixel = (unsigned char)*lpSrc; /目標(biāo)圖像中含有0和255外的其它灰度值/ if(pixel != 255 && pixel != 0)/ return FALSE; if(pixel = 0) *lpDst = (unsigned char)0; nw = (unsi
7、gned char)*(lpSrc + lWidth -1); n = (unsigned char)*(lpSrc + lWidth ); ne = (unsigned char)*(lpSrc + lWidth +1); w = (unsigned char)*(lpSrc -1); e = (unsigned char)*(lpSrc +1);
8、60;sw = (unsigned char)*(lpSrc - lWidth -1); s = (unsigned char)*(lpSrc - lWidth ); se = (unsigned char)*(lpSrc - lWidth +1); /如果相鄰的八個點(diǎn)都是黑點(diǎn) if(nw+n+ne+w+e+sw+s+se=0)
9、160; *lpDst = (unsigned char)255; / 復(fù)制腐蝕后的圖像memcpy(lpDIBBits, lpNewDIBBits, lWidth * lHeight);/ 釋放內(nèi)存LocalUnlock(hNewDIBBits);LocalFree(hNewDIBBits);/ 返回return TRUE;/* 函數(shù)名稱:* TraceDIB()* 參數(shù):* LPSTR lpDIBBits
10、0; - 指向源DIB圖像指針* LONG lWidth - 源圖像寬度(象素數(shù),必須是4的倍數(shù))* LONG lHeight - 源圖像高度(象素數(shù))* 返回值:* BOOL
11、 - 運(yùn)算成功返回TRUE,否則返回FALSE。* 說明:* 該函數(shù)用于對圖像進(jìn)行輪廓跟蹤運(yùn)算。* * 要求目標(biāo)圖像為只有0和255兩個灰度值的灰度圖像。*/BOOL WINAPI TraceDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)/ 指向源圖像的指針LPSTR lpSrc;/ 指向緩存圖像的指針LPSTR lpDst;/ 指向緩存DIB圖像的指針LPSTR lpNewDIBBits;HLOCAL hNewDIBBits;/ 圖像每行的字節(jié)數(shù)LONG lLineBytes;/循環(huán)變量long i;long j;/像素
12、值unsigned char pixel;/是否找到起始點(diǎn)及回到起始點(diǎn)bool bFindStartPoint;/是否掃描到一個邊界點(diǎn)bool bFindPoint;/起始邊界點(diǎn)與當(dāng)前邊界點(diǎn)Point StartPoint,CurrentPoint;/八個方向和起始掃描方向int Direction82=-1,1,0,1,1,1,1,0,1,-1,0,-1,-1,-1,-1,0;int BeginDirect;/ 計算圖像每行的字節(jié)數(shù)lLineBytes = WIDTHBYTES(lWidth * 8);/ 暫時分配內(nèi)存,以保存新圖像hNewDIBBits = LocalAlloc(LHND,
13、 lLineBytes * lHeight);if (hNewDIBBits = NULL) / 分配內(nèi)存失敗 return FALSE;/ 鎖定內(nèi)存lpNewDIBBits = (char * )LocalLock(hNewDIBBits);/ 初始化新分配的內(nèi)存,設(shè)定初始值為255lpDst = (char *)lpNewDIBBits;memset(lpDst, (BYTE)255, lLineBytes * lHeight);/先找到最左上方的邊界點(diǎn)bFindStartPoint = false;for (j = 0;j < lHeig
14、ht && !bFindStartPoint;j+) for(i = 0;i < lWidth && !bFindStartPoint;i+) / 指向源圖像倒數(shù)第j行,第i個象素的指針 lpSrc = (char *)lpDIBBits + lLineBytes * j + i; /取得當(dāng)前指針處的像素值,注意要轉(zhuǎn)換為unsigned char型 pixel =
15、(unsigned char)*lpSrc; if(pixel = 0) bFindStartPoint = true; StartPoint.Height = j; StartPoint.Width = i; / 指向目標(biāo)圖像倒數(shù)第j行,第i個象素的指針 lpDst
16、 = (char *)lpNewDIBBits + lLineBytes * j + i; *lpDst = (unsigned char)0; /由于起始點(diǎn)是在左下方,故起始掃描沿左上方向BeginDirect = 0;/跟蹤邊界bFindStartPoint = false;/從初始點(diǎn)開始掃描CurrentPoint.Height = StartPoint.Height;CurrentPoint.Width = StartPoint.Width;while(!bFindS
17、tartPoint) bFindPoint = false; while(!bFindPoint) /沿掃描方向查看一個像素 lpSrc = (char *)lpDIBBits + lLineBytes * ( CurrentPoint.Height + DirectionBeginDirect1) + (CurrentPoint.Width + DirectionBeginDirect0); pixel =
18、(unsigned char)*lpSrc; if(pixel = 0) bFindPoint = true; CurrentPoint.Height = CurrentPoint.Height + DirectionBeginDirect1; CurrentPoint.Width = CurrentPoint.Width + DirectionBeginDirect0; &
19、#160;if(CurrentPoint.Height = StartPoint.Height && CurrentPoint.Width = StartPoint.Width) bFindStartPoint = true; lpDst = (char *)lpNewDIBBits + lLineBytes * CurrentPoint.Height + CurrentPoint.Width; *lpDst = (unsigned char)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人民版道德與法治九年級上冊3.2《將關(guān)愛傳遞》聽課評課記錄1
- 人教版八年級地理下冊三環(huán)一體式導(dǎo)學(xué)助聽課評課記錄《第六章 北方地區(qū)》
- 湘教版數(shù)學(xué)九年級下冊1.5《二次函數(shù)的應(yīng)用》聽評課記錄1
- 統(tǒng)編版七年級下冊道德與法治第四課 揭開情緒的面紗 聽課評課記錄
- 2022年新課標(biāo)八年級上冊道德與法治《6.2 做負(fù)責(zé)人的人 》聽課評課記錄
- 小學(xué)二年級上冊口算練習(xí)題
- 八年級下學(xué)期工作總結(jié)
- 五年級上冊數(shù)學(xué)口算500題
- 滬科版數(shù)學(xué)八年級下冊《中位數(shù)和眾數(shù)》聽評課記錄1
- 合作社管理分紅協(xié)議書范本
- 《港口管理》課件綜述
- 湖北工業(yè)大學(xué)學(xué)報投稿模板
- VDA6.3 基本知識培訓(xùn)教材
- 萜類天然藥物化學(xué)
- 婦產(chǎn)科學(xué)女性生殖系統(tǒng)解剖優(yōu)秀課件
- 妊娠合并急性胰腺炎課件
- 上課用03工程中的價值利益與公正課件
- 《滅火器維修》GA95-2015(全文)
- 皮膚科疑難病例討論課件
- 通信系統(tǒng)防雷與接地下篇的知識
- Q∕GDW 12118.2-2021 人工智能平臺架構(gòu)及技術(shù)要求 第2部分:算法模型共享應(yīng)用要求
評論
0/150
提交評論