Hough變換檢測直線_第1頁
Hough變換檢測直線_第2頁
Hough變換檢測直線_第3頁
Hough變換檢測直線_第4頁
Hough變換檢測直線_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

Hough變換檢測直線實(shí)驗(yàn)報(bào)告一,實(shí)驗(yàn)要求用hough算法檢測圖像中的直線算法。使用這一算法來求一幅圖像中的所有大于規(guī)定長度的直線段,設(shè)規(guī)定的長度為20點(diǎn)。二,Hough變換簡介Hough變換是圖像處理中從圖像中識(shí)別幾何形狀的基本方法之一。Hough變換的基本原理在于利用點(diǎn)與線的對偶性,將原始圖像空間的給定的曲線通過曲線表達(dá)形式變?yōu)閰?shù)空間的一個(gè)點(diǎn)。這樣就把原始圖像中給定曲線的檢測問題轉(zhuǎn)化為尋找參數(shù)空間中的峰值問題。圖1Hough變換如上圖所示,在圖像空間,直線上一點(diǎn)轉(zhuǎn)換到參數(shù)空間就是一條曲線,而且,圖像空間同一直線上的點(diǎn)轉(zhuǎn)換到參數(shù)空間的曲線一定相交于一點(diǎn),即參數(shù)空間各曲線的交點(diǎn)對應(yīng)著圖像空間的一條直線,這樣,檢測參數(shù)空間曲線交點(diǎn)就檢測出了圖像空間的直線。三,實(shí)驗(yàn)過程和結(jié)果分析用Hough變換之前,首先要對圖像進(jìn)行邊緣檢測的處理,也即霍夫線變換的直接輸入只能是邊緣二值圖像。本實(shí)驗(yàn)基于VS2008和OPENCV來實(shí)現(xiàn)。實(shí)驗(yàn)的步驟如下:(1)讀入圖像,轉(zhuǎn)換成灰度圖像OPENCV中用cvLoadImage函數(shù)來讀取圖像,函數(shù)原型:IplImage*cvLoadImage(constchar*filename,intflags=CV_LOAD_IMAGE_COLOR);filename:要被讀入的文件的文件名(包括后綴);flags:指定讀入圖像的顏色和深度;例如:cvLoadImage(filename,-1);//默認(rèn)讀取圖像的原通道數(shù)cvLoadImage(filename,0);//強(qiáng)制轉(zhuǎn)化讀取圖像為灰度圖cvLoadImage(filename,1);//讀取彩色圖進(jìn)行邊緣檢測本實(shí)驗(yàn)選擇Canny算子的邊緣檢測,OPENCV中用Canny函數(shù)來進(jìn)行Canny算子的邊緣檢測,函數(shù)原型為:voidcvCanny(constCvArr*image,CvArr*edges,doublethreshold1,doublethreshold2,intaperture_size=3);image:單通道輸入圖像edges:單通道存儲(chǔ)邊緣的輸出圖像threshold1:第一個(gè)閾值threshold2:第二個(gè)閾值aperture_size:算子內(nèi)核大小3,對檢測出的二值圖像進(jìn)行Hough變換OPENCV中用cvHoughLines2函數(shù)來進(jìn)行Hough變換,函數(shù)原型為:CvSeq*cvHonghLines2(CvArr*image,void*line_storage,intmehtod,doublerho,doubletheta,intthreshold,doubleparam1=0,doubleparam2=0);Image:輸入8-比特、單通道(二值)圖像line_storage:檢測到的線段存儲(chǔ)倉Method:Hough變換變量,是下面變量的其中之一CV_HOUGH_STANDARD——傳統(tǒng)或標(biāo)準(zhǔn)Hough變換CV_HOUGH_PROBABILISTIC——概率Hough變換CV_HOUGH_MULTI_SCALE——傳統(tǒng)Hough變換多尺度變種Rho:以象素為單位的距離精度,一般取1Theta:以弧度為單位角度精度,一般取CV_PI/180Threshold:閾值參數(shù),當(dāng)在一條直線上的像素點(diǎn)數(shù)大于threshold時(shí),才將該直線作為檢測結(jié)果顯示出來,該值越大,得到直線越少。本實(shí)驗(yàn)中將該值設(shè)為20即可param1/param2:對傳統(tǒng)Hough變換,不使用(0).將檢測出的直線畫在原圖上在OPENCV中顯示圖像用cvShowImage函數(shù),函數(shù)原型為:voidcvShowImage(constchar*name,constCvArr*image);Name:窗口的名字Image:被顯示的圖像在OPENCV中用cvLine來繪制連接兩個(gè)點(diǎn)的線段,函數(shù)原型為:voidcvLine(CvArr*img,CvPointpt1,CvPointpt2,CvScalarcolor,intthickness=1,intline_type=8,intshift=0);img圖像pt1:線段的第一個(gè)端點(diǎn)pt2:線段的第二個(gè)端點(diǎn)Color:線段的顏色Thickness:線段的粗細(xì)程度line_type:線段的類型8(or0)-8-connectedline(8鄰接)連接線4-4-connectedline(4鄰接)連接線CV_AA-antialiased:線條Shift:坐標(biāo)點(diǎn)的小數(shù)點(diǎn)位數(shù)程序代碼如下:#include<cv.h>#include<iostream>#include<highgui.h>usingnamespacestd;intmain(){ char*path="D:\\zhi2.png";IplImage*src_Img=NULL;src_Img=cvLoadImage(path,1);//加載圖像if(!src_Img)return-1;//顯示原圖像cvNamedWindow("E1",CV_WINDOW_AUTOSIZE);cvShowImage("E1",src_Img);cvWaitKey();IplImage*edge_Img=NULL;edge_Img=cvCreateImage(cvGetSize(src_Img),IPL_DEPTH_8U,1);IplImage*temp_Img=cvCreateImage(cvGetSize(src_Img),IPL_DEPTH_8U,1);cvCvtColor(src_Img,temp_Img,CV_BGR2GRAY);cvShowImage("E1",temp_Img);//顯示灰度圖像cvWaitKey();cvCanny(temp_Img,edge_Img,50,100);cvShowImage("E1",edge_Img);//顯示邊緣檢測后的圖像cvWaitKey();//hough變化直線檢測CvMemStorage*storage=cvCreateMemStorage(0);//內(nèi)存采用默認(rèn)大小CvSeq*lines=0;lines=cvHoughLines2(edge_Img,storage,CV_HOUGH_STANDARD,1,CV_PI/180,20);for(inti=0;i<MIN(lines->total,100);i++)//如果檢測出的直線超過100條,只畫出100條{ float*line=(float*)cvGetSeqElem(lines,i); floatrho=line[0]; floattheta=line[1]; cout<<"rho:"<<rho<<",theta:"<<theta<<endl;//注意坐標(biāo)系采用圖像坐標(biāo)系,坐標(biāo)原點(diǎn)在左上角 CvPointpt1,pt2; doublea=cos(theta),b=sin(theta); doublex0=a*rho,y0=b*rho;pt1.x=cvRound(x0+500*(-b)); pt1.y=cvRound(y0+500*(a)); pt2.x=cvRound(x0-500*(-b)); pt2.y=cvRound(y0-500*(a)); cvLine(src_Img,pt1,pt2,CV_RGB(255,0,0),1,CV_AA,0);//畫出檢測的直線 cout<<x0<<","<<y0<<endl; } cvShowImage("E1",src_Img);//在原圖上畫出檢測的直線 cvWaitKey();cvDestroyWindow("E1"); cvReleaseImage(&src_Img); cvReleaseImage(&edge_Img); cvRelease

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論