二階邊緣檢測_第1頁
二階邊緣檢測_第2頁
二階邊緣檢測_第3頁
二階邊緣檢測_第4頁
二階邊緣檢測_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)五二階邊緣檢測、實(shí)驗(yàn)內(nèi)容本次實(shí)驗(yàn)需要根據(jù)課堂講授知識,按照已知算法,在VC+6.0平臺上編譯圖像邊緣檢測處理的程序。邊緣檢測算法主要是基于圖像強(qiáng)度的一階和二階導(dǎo)數(shù),據(jù)此可以實(shí)現(xiàn)幾種一階和二階的邊緣檢測器。本次實(shí)驗(yàn)主要對二階邊緣檢測進(jìn)行編譯和分析,主要包括Laplacian算子,LoG算子。二、實(shí)驗(yàn)原理1、Laplacian算子Laplacian算子是二階導(dǎo)數(shù)的二維等效式。函數(shù)f(x,y)的Laplacian算子公式為:V2f=d2f+d2fdx2dy2使用差分方程對x和y方向上的二階偏導(dǎo)數(shù)近似如下:a2f=0Gx=o(fi,j+1-fi,j)dx2axax_afi,j+1afi,jdxdx

2、_(fi,j+2-2fi,j+1+fi,j)將上述近似式用j-1替換j,即以點(diǎn)i,j為中心,得到:孚_(fi,j+1-2fi,j+fi,j-1)dx2,學(xué)_(fi+1,j-2fi,j+fi-1,j)dy2用卷積模板表示為:010V2Q1-41010如果希望鄰域中心點(diǎn)具有更大權(quán)值,可以使用下述模板:141V2沁4-2041412、LoG算法所謂的LoG算法全稱為LaplacianofGaussian算法,是將Gaussian濾波和Laplacian邊緣檢測結(jié)合在一起的一種算法。LoG算子的輸出h(x,y)是通過卷積運(yùn)算得到的:h(x,y)二V2g(x,y)*f(x,y)根據(jù)卷積求導(dǎo)法,上式變?yōu)椋?/p>

3、h(x,y)二V2g(x,y)*f(x,y)其中Lz、zx2+y2-22_x2+y2V2g(x,y)二()e26G4書上給出了直接實(shí)現(xiàn)LoG算法的典型模板:00-1000-1-2-10-1-216-2-0-1-2-1000-1005x5LoG算法模板三、實(shí)驗(yàn)代碼1、Laplacian算子BOOLCBmpProcessView:LaplacianDIB(LPSTRlpDIBBits,LONGlWidth,LONGlHeight)/指向源圖像的指針LPSTRlpSrc;/指向緩存圖像的指針LPSTRlpDst;/指向緩存DIB圖像的指針LPSTRlpNewDIBBits;HLOCALhNewDIB

4、Bits;/循環(huán)變量longi;longj;/像素值doubleresult;unsignedcharpixel9;/暫時(shí)分配內(nèi)存,以保存新圖像hNewDIBBits=LocalAlloc(LHND,lWidth*lHeight);if(hNewDIBBits=NULL)/分配內(nèi)存失敗returnFALSE;/鎖定內(nèi)存lpNewDIBBits=(char*)LocalLock(hNewDIBBits);/初始化新分配的內(nèi)存,設(shè)定初始值為255lpDst二(char*)lpNewDIBBits;memset(lpDst,(BYTE)255,lWidth*lHeight);/使用水平方向的結(jié)構(gòu)元素

5、進(jìn)行腐蝕for(j=lHeight-2;j0;j)for(i=1;ilWidth-1;i+)/由于使用3X3的模板,為防止越界,所以不處理最下邊和最右邊的兩列像素/指向源圖像第j行,第i個(gè)象素的指針lpSrc=(char*)lpDIBBits+lWidth*j+i;/指向目標(biāo)圖像第j行,第i個(gè)象素的指針lpDst二(char*)lpNewDIBBits+lWidth*j+i;/取得當(dāng)前指針處3*3區(qū)域的像素值,注意要轉(zhuǎn)換為unsignedcharpixel0=(unsignedchar)*(lpSrc-lWidth-1);pixel1=(unsignedchar)*(lpSrc-lWidth)

6、;pixel2=(unsignedchar)*(lpSrc-lWidth+1);pixel3=(unsignedchar)*(lpSrc+1);pixel4=(unsignedchar)*(lpSrc+lWidth+1);pixel5=(unsignedchar)*(lpSrc-lWidth);pixel6=(unsignedchar)*(lpSrc+lWidthT);pixel7=(unsignedchar)*(lpSrc-1);pixel8=(unsignedchar)*lpSrc;result二pixell+pixel3+pixel5+pixel7-pixel8*4;*lpDst二(un

7、signedchar)result;/復(fù)制腐蝕后的圖像memcpy(lpDIBBits,lpNewDIBBits,lWidth*lHeight);/釋放內(nèi)存LocalUnlock(hNewDIBBits);LocalFree(hNewDIBBits);/返回returnTRUE;2、LoG算法LONGBOOLCBmpProcessView:LoGDIB(LPSTRlpDIBBits,LONGlWidth,lHeight)/指向源圖像的指針LPSTRlpSrc;/指向緩存圖像的指針LPSTRlpDst;/指向緩存DIB圖像的指針LPSTRlpNewDIBBits;HLOCALhNewDIBBit

8、s;/循環(huán)變量longi;longj;/像素值doubleresult;unsignedcharpixel25;/暫時(shí)分配內(nèi)存,以保存新圖像hNewDIBBits=LocalAlloc(LHND,lWidth*lHeight);if(hNewDIBBits=NULL)/分配內(nèi)存失敗returnFALSE;/鎖定內(nèi)存lpNewDIBBits=(char*)LocalLock(hNewDIBBits);/初始化新分配的內(nèi)存,設(shè)定初始值為255lpDst二(char*)lpNewDIBBits;memset(lpDst,(BYTE)255,lWidth*lHeight);/使用水平方向的結(jié)構(gòu)元素進(jìn)行

9、腐蝕for(j=lHeight-3;j2;j)for(i=2;ilWidth-2;i+)/由于使用5X5的模板,為防止越界,所以不處理最下邊和最右邊的兩列像素/指向源圖像第j行,第i個(gè)象素的指針lpSrc=(char*)lpDIBBits+lWidth*j+i;/指向目標(biāo)圖像第j行,第i個(gè)象素的指針lpDst二(char*)lpNewDIBBits+lWidth*j+i;/取得當(dāng)前指針處5*5區(qū)域的像素值,注意要轉(zhuǎn)換為unsignedchar型pixel0=(unsignedchar)*(lpSrc-2*lWidth-2);pixel1=(unsignedchar)*(lpSrc-2*lWid

10、th-1);pixel2=(unsignedchar)*(lpSrc-lWidth*2);pixel3=(unsignedchar)*(lpSrc-2*lWidth+1);TOC o 1-5 h zpixel4=(unsignedchar)*(lpSrc-2*lWidth+2);pixel5=(unsignedchar)*(lpSrc-lWidth+2);pixel6=(unsignedchar)*(lpSrc+2);pixel7=(unsignedchar)*(lpSrc+lWidth+2);pixel8=(unsignedchar)*(lpSrc+2*lWidth+2);pixel9=(u

11、nsignedchar)*(lpSrc+2*lWidth+1);TOC o 1-5 h zpixel10=(unsignedchar)*(lpSrc+2*lWidth);pixelll=(unsignedchar)*(lpSrc+2*lWidth-1);pixel12=(unsignedchar)*(lpSrc+2*lWidth-2);pixel13=(unsignedchar)*(lpSrc+lWidth-2);pixel14=(unsignedchar)*(lpSrc-2);pixel15=(unsignedchar)*(lpSrcTWidth-2);pixel16=(unsignedch

12、ar)*(lpSrcTWidth-1);pixel17=(unsignedchar)*(lpSrc-lWidth);pixel18=(unsignedchar)*(lpSrc-lWidth+1);pixel19=(unsignedchar)*(lpSrc+1);pixel20=(unsignedchar)*(lpSrc+lWidth+1);pixel21=(unsignedchar)*(lpSrc+lWidth);pixel22=(unsignedchar)*(lpSrc+lWidth-1);pixel23=(unsignedchar)*(lpSrcT);pixel24=(unsignedch

13、ar)*lpSrc;/計(jì)算目標(biāo)圖像中的當(dāng)前點(diǎn)result二(pixel2*(-1)-pixel16-2*pixel17-pixel18-pixel14-2*pixel23+16*pixel24-2*pixel19-pixel6-pixel22-2*pixel21-pixel20-pixel10);*lpDst二(unsignedchar)result;/復(fù)制腐蝕后的圖像memcpy(lpDIBBits,lpNewDIBBits,lWidth*lHeight);/釋放內(nèi)存LocalUnlock(hNewDIBBits);LocalFree(hNewDIBBits);/返回returnTRUE;四、實(shí)驗(yàn)效果圖1、Laplacian算子原

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論