日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hough Transform 的算法思想

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hough Transform 的算法思想 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Hough Transform 的算法思想

在直角坐標系和極坐標系中,點、線是對偶關系。

即直角坐標系中的點是極坐標系中的線,直角坐標系中的線是極坐標系中的點。反之也成立。

如下圖所示,想要檢測圖像中的直線,可以轉化為檢測極坐標系中的點(θ,r)


2.Hough空間的表示

如下圖所示,圖像中直線的表示,由斜率和截距表示,而極坐標中用(θ,r)

表示,并且存在下式關系:

r=cos(θ)?x+sin(θ)?y 對于點 (x0,y0),代入上式,在極坐標中就是一條線(很多對 (θ,r)點): r=cos(θ)?x0+sin(θ)?y0

rθ

就是一對Hough空間的變量表示。

旋轉的 θ

不容易表示,若將 rθ 看成直角坐標空間。一個點 (x0,y0)

, 就是一個正弦曲線。

r=cos(θ)?x0+sin(θ)?y0 如下圖所示,左圖直角坐標系中的一個點,對應于右圖 r- θ 空間的一條正弦曲線。

如下圖,直角坐標系中的多個點,對應于 r

- θ

空間的多條正弦曲線。

直角坐標系的三點共線,對應于 r

-θ

空間的多線共點

因此,我們可以通過檢測 r

- θ

空間的交集點,來檢測原始空間的線段。

接下來,就是要考慮 將rθ

離散化,形成離散化的Hough空間,類似于一個矩陣/圖像(如下圖),用于統計交集點的個數。


3.Hough變換代碼分析

以下是使用Matlab進行直線檢測的代碼。

Hough Transform

首先預處理,轉為二值圖像:

I = imread('road.jpg'); I = rgb2gray(I); BW = edge(I,'canny');
  • 1
  • 2
  • 3

然后進行霍夫變換:

[H,T,R] = hough(BW,'RhoResolution',0.5,'Theta',-90:0.5:89.5); imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit'); xlabel('\theta'), ylabel('\rho'); axis on, axis normal, hold on;
  • 1
  • 2
  • 3
  • 4

檢測hough域極值點

P = houghpeaks(H,50,'threshold',ceil(0.3*max(H(:)))); x = T(P(:,2)); y = R(P(:,1)); plot(x,y,'s','color','white');
  • 1
  • 2
  • 3
  • 4

檢測直線

% Find lines and plot them lines = houghlines(BW,T,R,P,'FillGap',7,'MinLength',100); figure, imshow(I), 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 beginnings and ends of linesplot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');% determine the endpoints of the longest line segmentlen = norm(lines(k).point1 - lines(k).point2);if ( len > max_len)max_len = len;xy_long = xy;end end% highlight the longest line segment plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

實驗結果

r

- θ

空間及前50個極值點:

最終車道直線檢測結果:


[注] 所有的代碼可以在此處免費下載:http://download.csdn.net/detail/ws_20100/9492054

總結

以上是生活随笔為你收集整理的Hough Transform 的算法思想的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。