SUSAN算子特征點檢測實驗報告_第1頁
SUSAN算子特征點檢測實驗報告_第2頁
SUSAN算子特征點檢測實驗報告_第3頁
SUSAN算子特征點檢測實驗報告_第4頁
SUSAN算子特征點檢測實驗報告_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、機器視覺實驗(3)一、實驗介紹特征點:即圖像的極值點、線段的端點、曲線曲率最大點,是圖像的重要特征,對圖像處理與分析具有重要作用。特征點保留了圖像的重要特征,可以代替圖像的處理,有效減少數(shù)據(jù)量,提高處理速度。特征點檢測:從圖像中檢測和提取特征點的過程和算法。檢測方法有基于梯度的檢測方法,基于模板的檢測方法,基于梯度和模板的檢測方法。比較常用的算子有SUSAN、Harris、Moravec、Foerstner、FAST、SIFT等角點檢測算子。二、實驗內(nèi)容1、SUSAN算子SUSAN算子是牛津大學(xué)的smith教授提出的,只使用一個圓形模板來計算各向同性的響應(yīng),既可檢測目標(biāo)邊緣點,又能檢測圖像中的

2、角點,且具有較強的魯棒性。(1) 基本思想 SUSAN準(zhǔn)則的原理如圖所示,用一個圓形模板遍歷圖像,若模板內(nèi)其他任意像素的灰度值與模板中心像素(核)的灰度值的差小于一定閾值,就認(rèn)為該點與核具有相同(或相近)的灰度值,滿足這樣條件的像素組成的區(qū)域稱為核值相似區(qū)(Univalue Segment Assimilating Nucleus, USAN)。把圖像中的每個像素與具有相近灰度值的局部區(qū)域相聯(lián)系是SUSAN準(zhǔn)則的基礎(chǔ)。(2)基本步驟 第一步:選擇圓形模板,計算相似度。 a、圓形模板如圖所示,共37個像素。 b、相似度 第二步:確定USAN區(qū)域。 第三步:閾值化得到初步的邊緣響應(yīng)。 G的取值為U

3、SAN最大值的1/2。USAN值越小,角點的響應(yīng)就越強。 第四步:可選擇性進(jìn)行非極大值抑制,角點特征就得到全部增強。2、實驗程序 BOOL CBmpProcessView:Susan(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)/ 指向源圖像的指針LPSTRlpSrc;/ 指向緩存圖像的指針LPSTRlpDst;/ 指向緩存DIB圖像的指針LPSTRlpNewDIBBits;HLOCALhNewDIBBits;/循環(huán)變量long i;long j;/像素值int x,r,n=0;unsigned char pixel37;/ 暫時分配內(nèi)存,以保存新圖像

4、hNewDIBBits = LocalAlloc(LHND, 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);POINT pointxy;/定義一個POINT型數(shù)據(jù) corner.clear();/使用水平方向的結(jié)構(gòu)元素進(jìn)行腐蝕fo

5、r(j = lHeight-3; j=2; j-)for(i = 2;i lWidth-2; i+)/ 指向源圖像第j行,第i個象素的指針lpSrc = (char *)lpDIBBits + lWidth * j + i;/ 指向目標(biāo)圖像第j行,第i個象素的指針lpDst = (char *)lpNewDIBBits + lWidth * j + i;/取得當(dāng)前指針處7*7區(qū)域的像素值,注意要轉(zhuǎn)換為unsigned char型pixel0 = (unsigned char)*(lpSrc - 3 * lWidth - 1);pixel1 = (unsigned char)*(lpSrc -

6、3 * lWidth );pixel2 = (unsigned char)*(lpSrc - 3 * lWidth + 1);pixel3 = (unsigned char)*(lpSrc - 2 * lWidth + 2);pixel4 = (unsigned char)*(lpSrc - lWidth + 3);pixel5 = (unsigned char)*(lpSrc + 3);pixel6 = (unsigned char)*(lpSrc + lWidth + 3);pixel7 = (unsigned char)*(lpSrc + 2 * lWidth + 2);pixel8 =

7、 (unsigned char)*(lpSrc + 3 * lWidth + 1);pixel9 = (unsigned char)*(lpSrc + 3 * lWidth);pixel10 = (unsigned char)*(lpSrc + 3 * lWidth - 1);pixel11 = (unsigned char)*(lpSrc + 2 * lWidth - 2);pixel12 = (unsigned char)*(lpSrc + lWidth - 3);pixel13 = (unsigned char)*(lpSrc - 3);pixel14 = (unsigned char)

8、*(lpSrc - lWidth - 3);pixel15 = (unsigned char)*(lpSrc - 2 * lWidth - 2);pixel16 = (unsigned char)*(lpSrc - 2 * lWidth - 1);pixel17 = (unsigned char)*(lpSrc - 2 * lWidth );pixel18 = (unsigned char)*(lpSrc - 2 * lWidth + 1);pixel19 = (unsigned char)*(lpSrc - lWidth + 2);pixel20 = (unsigned char)*(lpS

9、rc + 2);pixel21 = (unsigned char)*(lpSrc + lWidth + 2);pixel22 = (unsigned char)*(lpSrc + 2 * lWidth + 1);pixel23 = (unsigned char)*(lpSrc + 2 * lWidth);pixel24 = (unsigned char)*(lpSrc + 2 * lWidth - 1);pixel25 = (unsigned char)*(lpSrc + lWidth - 2);pixel26 = (unsigned char)*(lpSrc - 2);pixel27 = (

10、unsigned char)*(lpSrc - lWidth - 2);pixel28 = (unsigned char)*(lpSrc - lWidth - 1);pixel29 = (unsigned char)*(lpSrc - lWidth);pixel30 = (unsigned char)*(lpSrc - lWidth + 1);pixel31 = (unsigned char)*(lpSrc + 1);pixel32 = (unsigned char)*(lpSrc + lWidth + 1);pixel33 = (unsigned char)*(lpSrc + lWidth)

11、;pixel34 = (unsigned char)*(lpSrc + lWidth - 1);pixel35 = (unsigned char)*(lpSrc - 1);pixel36 = (unsigned char)*lpSrc; n=0;for(x=0;x37;x+)if(abs(pixel36-pixelx)=30) /可根據(jù)實際情況確定閾值n+;r=0; if(nGetHDIB();/ 判斷DIB是否為空if (hDIB != NULL)LPSTR lpDIB = (LPSTR) :GlobalLock(HGLOBAL) hDIB);/ 獲取DIB寬度int cxDIB = (in

12、t) :DIBWidth(lpDIB);/ 獲取DIB高度int cyDIB = (int) :DIBHeight(lpDIB);:GlobalUnlock(HGLOBAL) hDIB);CRect rcDIB;rcDIB.top = rcDIB.left = 0;rcDIB.right = cxDIB;rcDIB.bottom = cyDIB;CRect rcDest;/ 判斷是否是打印if (pDC-IsPrinting()/ 是打印,計算輸出圖像的位置和大小,以便符合頁面/ 獲取打印頁面的水平寬度(象素)int cxPage = pDC-GetDeviceCaps(HORZRES);/

13、獲取打印頁面的垂直高度(象素)int cyPage = pDC-GetDeviceCaps(VERTRES);/ 獲取打印機每英寸象素數(shù)int cxInch = pDC-GetDeviceCaps(LOGPIXELSX);int cyInch = pDC-GetDeviceCaps(LOGPIXELSY);/ 計算打印圖像大?。s放,根據(jù)頁面寬度調(diào)整圖像大?。﹔cDest.top = rcDest.left = 0;rcDest.bottom = (int)(double)cyDIB * cxPage * cyInch)/ (double)cxDIB * cxInch);rcDest.righ

14、t = cxPage;/ 計算打印圖像位置(垂直居中)int temp = cyPage - (rcDest.bottom - rcDest.top);rcDest.bottom += temp/2;rcDest.top += temp/2;else / 不必縮放圖像rcDest = rcDIB;/ 輸出DIB:PaintDIB(pDC-m_hDC, &rcDest, pDoc-GetHDIB(),&rcDIB, pDoc-GetDocPalette();/ 恢復(fù)正常光標(biāo) CPen *ppen=new CPen;ppen-CreatePen(PS_SOLID,1,RGB(255,0,0);pDC-SelectObject(ppen);for(int i=0;iMoveTo(corneri.x-3,corneri.y);pDC-LineTo(corneri.x+3,corneri.y);pDC-MoveTo(corneri.x,corner

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論