hough变换连接边缘matlab,边缘检测与Hough变换实验报告 Matlab - 图文
《邊緣檢測與Hough變換實驗報告 Matlab - 圖文》由會員分享,可在線閱讀,更多相關《邊緣檢測與Hough變換實驗報告 Matlab - 圖文(5頁珍藏版)》請在人人文庫網上搜索。
1、邊緣檢測與Hough變換實驗報告 Matlab - 圖文邊緣檢測與Hough變換 實驗目的:寫一段代碼實現一幅圖像,其中分為以下兩個步驟 1. 使用Matlab中的canny算子進行邊緣檢測,可以讓使用者交互式的輸入不同的Sigma的值實現邊緣檢測。 2. 運用Hough變換來找到最突出的邊緣,在圖像中找到并畫出最長的直線。 實驗原理: canny算子邊緣檢測的基本原理是:采用二維高斯函數的任一方向上的一階方向導數為噪聲濾波器,通過與圖像f(x,y)卷積進行濾波,然后對濾波后的圖像尋找圖像梯度的局部極大值,以確定圖像邊緣。 Canny邊緣檢測算子是一種最優邊緣檢測算子。其實現步驟如下: 1) 。
2、用高斯濾波器平滑圖像 2) 計算濾波后圖像梯度的幅值和方向 3) 對梯度幅值應用非極大值抑制,其過程為找出圖像梯度中的局部極大值點,把其他非局部極大值置零,以得到細化的邊緣; 4) 再用雙閾值算法檢測和連接邊緣; 使用canny算子的edge函數調用格式為 BW=edge(I,canny); BW=edge(I,canny,thresh,sigma); BW=edge(I,canny,thresh); BW,threshold=edge(I,canny,?); 2.Hough變換時最常用的直線提取方法,它的基本思想是:將直線上每一個數據點變換為參數平面中的一條直線或曲線,利用共線的數據點對應的。
3、參數曲線相交于參數空間中一點的關系,使得直線提取問題轉化為計數問題。Hough變換提取直線的主要優點是受直線中的間隙和噪聲影響較小。 Hough檢測直線的Matlab實現:在Matlab圖像處理工具箱中提供了3個與Hough變換有關的函數,分別為hough函數,houghpeaks函數和houghlines函數。 hough函數的調用格式為H,theta,rho=hough(BW);其中BW為二值圖像,H為Hough變換矩陣,theta為變換軸間隔,rho為元素個數。 Houghpeaks函數是用來提取Hough變換后參數平面上的峰值點。其調用格式為peaks=houghpeaks(H,num。
4、peaks),其中,H為Hough函數的輸出,參數平面的技術結果矩陣,參數numpeaks為指定要提取的峰值數目,默認值為1;輸出參數peaks為Q*2維峰值位置矩陣,其中Q為提取的峰值數目,peaks的第q行分別存儲第q個峰值的行和列坐標。 Hough函數用于在圖像中提取參數平面上的峰值點對應的直線。其調用格式為lines=houghlines(BW,theta,rho,peaks) Lines=houghlines(?,param1,val1,param2,val2) 其中,BW與Hough函數的BW相同,為二值圖象。theta和rho為hough函數返回的輸出,指示軸和軸各個單元對應的值。
5、。Peaks為houghpeaks函數返回的輸出,指示峰值的行和列坐標,houghlines函數將根據這些峰值提取直線。Param和val是參數對,用于指定是否合并或保留直線段的相關參數,其取值有兩種。當param=MinLength時,bal指定合并后的直線被保留的門限長度,長度小于val的直線被舍去。當param=FillGap時,val指定直線段被合并的門限間隔。如果兩條斜率和截距均相同的直線段間隔小于val給點的值,則它們被合并為一條直線。 實驗程序與實驗結果如下: nny算子邊緣檢測 clear all; I1=imread(F:robotImagessniper.jpg); I=r。
6、gb2gray(I1);% 彩色圖像灰度化 imshow(I1); title(原始圖像); BW1= edge(I,Canny,0.4,0.5) ; ge調用Canny為檢測算子判別閾值為0.5 figure,imshow(BW1); title( 閾值為0.4,sigma值為0.5的Canny算子邊緣檢測圖像 ); BW2= edge(I,Canny,0.4,0.8) ; ge調用Canny為檢測算子判別閾值為0.8 figure,imshow(BW2); title( 閾值為0.4,sigma值為0.8的Canny算子邊緣檢測圖像); BW20= edge(I,Canny,0.4,1) 。
7、; ge調用Canny為檢測算子判別閾值為1 figure,imshow(BW20); title( 閾值為0.4,sigma值為1的Canny算子邊緣檢測圖像); BW21= edge(I,Canny,0.4,1.5) ; ge調用Canny為檢測算子判別閾值為1.5 figure,imshow(BW21); title( 閾值為0.4,sigma值為1.5的Canny算子邊緣檢測圖像 ); BW22= edge(I,Canny,0.4,2) ; ge調用Canny為檢測算子判別閾值為2 figure,imshow(BW22); title( 閾值為0.4,sigma值為2的Canny算子邊。
8、緣檢測圖像 ); %Hough變換檢測直線程序 rotI=I; BW=edge(rotI,canny,0.4,1.5); %用canny算子提取圖像邊緣 H,T,R=hough(BW); %對圖像進行Hough變換 figure; imshow(H, ,XData,T,YData,R,. InitialMagnification,fit); title(峰值提取效果); xlabel(theta),ylabel(rho); axis on,axis normal,hold on; %尋找參數平面上的極值點 P =houghpeaks(H,5,threshold,ceil(0.3*max(H(:。
9、); x=T(P(:,2);y=R(P(:,1); plot(x,y,s,color,white); %找出對應的直線邊緣 lines=houghlines(BW,T,R,P,FillGap,58,MinLength,5); figure,imshow(BW), title(直線標記結果); hold on max_len=0; for k=1:length(lines) xy=lines(k).point1;lines(k).point2; plot(xy(:,1),xy(:,2),LineWidth,2,Color,green); %標記直線邊緣對應的起點 plot(xy(1,1),xy(1,2),x,LineWidth,2,Color,yellow); plot(xy(2,1),xy(2,2),x,LineWidth,2,Color,red); %計算直線邊緣長度 len=norm(lines(k).point1-lines(k).point2); if(lenmax_len) max_len=len; xy_long=xy; end end plot(xy_long(:,1),xy_long(:,2),LineWidth,2,Color,r); 程序結果:。
總結
以上是生活随笔為你收集整理的hough变换连接边缘matlab,边缘检测与Hough变换实验报告 Matlab - 图文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA入门级教学之(匿名内部类)
- 下一篇: 多元线性回归分析matlab实验报告,利