Billy Tse
HomeAboutProjectsBlogRoadmapContact
Playground
Buy me a bug

© 2026 Billy Tse

OnlyFansLinkedInGitHubEmailArgoJumpFlow
Back to Blog
January 28, 2026•12 min read

霍夫變換 (Hough Transform):直線與圓形檢測

深入探討 Hough Transform 的原理、數學推導及實際應用,包括直線檢測、圓形檢測與 Linear Regression 的比較

Computer VisionImage ProcessingCMSC 5711

霍夫變換 (Hough Transform)

最近做 project 要用到 Hough Transform,發覺呢個 technique 幾有趣,所以寫低分享下。簡單嚟講,Hough Transform 係電腦視覺入面用嚟搵幾何形狀嘅方法——就算條線斷咗、有雜訊都搵到,真係幾勁。

點解要用極座標?

一開始我都唔明點解唔用 y=mx+cy = mx + cy=mx+c 嚟表示直線咁簡單。原來係因為垂直線會令斜率 mmm 變成無限大,搞到個 algorithm 會出事。所以 Hough Transform 用咗極座標表示法:

ρ=xcos⁡θ+ysin⁡θ\rho = x \cos \theta + y \sin \thetaρ=xcosθ+ysinθ
  • ρ\rhoρ:原點到直線嘅垂直距離
  • θ\thetaθ:垂線同 x 軸嘅夾角

呢個寫法最正係咩線都 handle 到,包括垂直線。

極座標表示法:\rho 係原點到直線嘅距離,\theta 係角度

點樣運作?投票機制

核心概念係將圖像空間嘅點轉換到參數空間 (ρ,θ)(\rho, \theta)(ρ,θ)。圖像入面一個點 (x,y)(x, y)(x,y) 會對應參數空間入面一條 sinusoid curve。如果有幾個點喺同一條線上面,佢哋喺參數空間嘅 curves 就會相交於同一點——呢個交點就代表嗰條直線嘅參數。

步驟:

  1. 先用 edge detection(例如 Canny)搵出邊緣點
  2. 每個邊緣點都會喺 (ρ,θ)(\rho, \theta)(ρ,θ) 空間投票
  3. 搵出票數最高嘅位置,就係我哋要搵嘅直線

實際數學例子

假設圖像上有三個點共線:(2,3)(2, 3)(2,3)、(4,5)(4, 5)(4,5)、(6,7)(6, 7)(6,7)

例子 1:驗證呢三點喺同一條線

先用傳統方法搵條線嘅方程式。計斜率:

m=5−34−2=22=1m = \frac{5-3}{4-2} = \frac{2}{2} = 1m=4−25−3​=22​=1

所以 y=x+1y = x + 1y=x+1。用 Hough Transform 嘅極座標表示法:

For 點 (2,3)(2, 3)(2,3):

ρ=2cos⁡θ+3sin⁡θ\rho = 2\cos\theta + 3\sin\thetaρ=2cosθ+3sinθ

For 點 (4,5)(4, 5)(4,5):

ρ=4cos⁡θ+5sin⁡θ\rho = 4\cos\theta + 5\sin\thetaρ=4cosθ+5sinθ

For 點 (6,7)(6, 7)(6,7):

ρ=6cos⁡θ+7sin⁡θ\rho = 6\cos\theta + 7\sin\thetaρ=6cosθ+7sinθ

如果呢三點真係共線,佢哋會喺某個 (ρ,θ)(\rho, \theta)(ρ,θ) 相交。試下 theta=45°=fracpi4theta = 45° = frac{pi}{4}theta=45°=fracpi4:

  • 點 (2,3)(2, 3)(2,3): ρ=2×22+3×22=522≈3.54\rho = 2 \times \frac{\sqrt{2}}{2} + 3 \times \frac{\sqrt{2}}{2} = \frac{5\sqrt{2}}{2} \approx 3.54ρ=2×22​​+3×22​​=252​​≈3.54
  • 點 (4,5)(4, 5)(4,5): ρ=4×22+5×22=922≈6.36\rho = 4 \times \frac{\sqrt{2}}{2} + 5 \times \frac{\sqrt{2}}{2} = \frac{9\sqrt{2}}{2} \approx 6.36ρ=4×22​​+5×22​​=292​​≈6.36
  • 點 (6,7)(6, 7)(6,7): ρ=6×22+7×22=1322≈9.19\rho = 6 \times \frac{\sqrt{2}}{2} + 7 \times \frac{\sqrt{2}}{2} = \frac{13\sqrt{2}}{2} \approx 9.19ρ=6×22​​+7×22​​=2132​​≈9.19

唔同 ρ\rhoρ 值?咁係咪代表佢哋唔共線?錯喇!記住每個點會產生一條 curve,我哋要搵嘅係 curves 嘅交點。

試返正確嘅 θ\thetaθ 值。對於直線 y=x+1y = x + 1y=x+1,轉換成極座標:

ρ=xcos⁡θ+ysin⁡θ=xcos⁡θ+(x+1)sin⁡θ\rho = x\cos\theta + y\sin\theta = x\cos\theta + (x+1)\sin\thetaρ=xcosθ+ysinθ=xcosθ+(x+1)sinθ ρ=x(cos⁡θ+sin⁡θ)+sin⁡θ\rho = x(\cos\theta + \sin\theta) + \sin\thetaρ=x(cosθ+sinθ)+sinθ

當 thetaapprox135°=frac3pi4theta approx 135° = frac{3pi}{4}thetaapprox135°=frac3pi4:

  • cos(135°)=−fracsqrt22cos(135°) = -frac{sqrt{2}}{2}cos(135°)=−fracsqrt22,sin(135°)=fracsqrt22sin(135°) = frac{sqrt{2}}{2}sin(135°)=fracsqrt22

For 點 (2,3)(2, 3)(2,3): ρ=2×(−22)+3×22=22≈0.707\rho = 2 \times (-\frac{\sqrt{2}}{2}) + 3 \times \frac{\sqrt{2}}{2} = \frac{\sqrt{2}}{2} \approx 0.707ρ=2×(−22​​)+3×22​​=22​​≈0.707

For 點 (4,5)(4, 5)(4,5): ρ=4×(−22)+5×22=22≈0.707\rho = 4 \times (-\frac{\sqrt{2}}{2}) + 5 \times \frac{\sqrt{2}}{2} = \frac{\sqrt{2}}{2} \approx 0.707ρ=4×(−22​​)+5×22​​=22​​≈0.707

For 點 (6,7)(6, 7)(6,7): ρ=6×(−22)+7×22=22≈0.707\rho = 6 \times (-\frac{\sqrt{2}}{2}) + 7 \times \frac{\sqrt{2}}{2} = \frac{\sqrt{2}}{2} \approx 0.707ρ=6×(−22​​)+7×22​​=22​​≈0.707

Bingo!三個點喺 (ρ,θ)=(0.707,135°)(\rho, \theta) = (0.707, 135°)(ρ,θ)=(0.707,135°) 相交,證明佢哋的確共線。

例子 2:Accumulator 投票

喺實際運算中,我哋會建立一個 accumulator array A[ρ][θ]A[\rho][\theta]A[ρ][θ]。對於每個邊緣點 (x,y)(x, y)(x,y):

  1. 將 θ\thetaθ 由 0°0°0° 掃到 180°180°180°(通常用 1° increment)
  2. 對每個 θ\thetaθ 計算對應嘅 ρ=xcos⁡θ+ysin⁡θ\rho = x\cos\theta + y\sin\thetaρ=xcosθ+ysinθ
  3. A[ρ][θ]A[\rho][\theta]A[ρ][θ] 加一票

例如點 (3,4)(3, 4)(3,4):

θ\thetaθ (deg)ρ\rhoρ 計算ρ\rhoρ 值
0°3×1+4×03 \times 1 + 4 \times 03×1+4×03.0
30°3×0.866+4×0.53 \times 0.866 + 4 \times 0.53×0.866+4×0.54.6
45°3×0.707+4×0.7073 \times 0.707 + 4 \times 0.7073×0.707+4×0.7074.95
60°3×0.5+4×0.8663 \times 0.5 + 4 \times 0.8663×0.5+4×0.8664.96
90°3×0+4×13 \times 0 + 4 \times 13×0+4×14.0

每個 (ρ,θ)(\rho, \theta)(ρ,θ) pair 都會喺 accumulator 入面投一票。當多個點投票到同一格時,嗰格嘅數值就會升高,最後我哋搵出 peak 就知道邊條線最明顯。

實際應用

呢個方法真係好實用:

自動駕駛:搵車道線,就算係虛線都 detect 到

醫學影像:搵血管、虹膜(用 circular Hough Transform)

文檔掃描:校正傾斜嘅文件角度

我自己試過用嚟做車道檢測,效果真係唔錯,特別係喺光線唔好或者有陰影嘅情況下。

Circle Detection (圓形檢測)

Hough Transform 除咗可以搵直線,仲可以搵圓形!原理其實差不多,只不過參數空間變咗 3D。

圓形方程式

一個圓形可以用三個參數嚟表示:

(x−a)2+(y−b)2=r2(x - a)^2 + (y - b)^2 = r^2(x−a)2+(y−b)2=r2
  • (a,b)(a, b)(a,b):圓心座標
  • rrr:半徑

所以參數空間係 3D 嘅 (a,b,r)(a, b, r)(a,b,r),而唔係直線檢測嘅 2D (ρ,θ)(\rho, \theta)(ρ,θ)。

點樣運作?

同樣係投票機制,但係複雜咗:

  1. 已知半徑:如果你已經知道要搵嘅圓形半徑 rrr,咁問題就簡化成 2D。對於圖像上嘅每個邊緣點 (x,y)(x, y)(x,y),佢可能係屬於任何一個半徑為 rrr 嘅圓。呢啲可能嘅圓心會形成一個圓圈,圓心就係 (x,y)(x, y)(x,y),半徑就係 rrr。
  2. 未知半徑:如果唔知半徑,就要 scan 晒所有可能嘅 (a,b,r)(a, b, r)(a,b,r) 組合。計算量會大好多,所以通常會限制 rrr 嘅範圍。

數學例子

假設我哋想檢測一個圓心在 (5,5)(5, 5)(5,5)、半徑 r=3r = 3r=3 嘅圓。圓上面有幾個點:

  • (8,5)(8, 5)(8,5)
  • (5,8)(5, 8)(5,8)
  • (2,5)(2, 5)(2,5)
  • (5,2)(5, 2)(5,2)

驗證呢啲點係咪真係喺個圓上面:

For 點 (8,5)(8, 5)(8,5):

(8−5)2+(5−5)2=32+02=9=r2✓(8-5)^2 + (5-5)^2 = 3^2 + 0^2 = 9 = r^2 \quad ✓(8−5)2+(5−5)2=32+02=9=r2✓

For 點 (5,8)(5, 8)(5,8):

(5−5)2+(8−5)2=02+32=9=r2✓(5-5)^2 + (8-5)^2 = 0^2 + 3^2 = 9 = r^2 \quad ✓(5−5)2+(8−5)2=02+32=9=r2✓

喺 Hough Transform 入面,每個點會對所有可能嘅圓心 (a,b)(a, b)(a,b) 投票。如果我哋已知 r=3r = 3r=3:

  • 點 (8,5)(8, 5)(8,5) 會對所有距離佢 3 個單位嘅位置投票
  • 點 (5,8)(5, 8)(5,8) 會對所有距離佢 3 個單位嘅位置投票
  • 點 (2,5)(2, 5)(2,5) 會對所有距離佢 3 個單位嘅位置投票
  • 點 (5,2)(5, 2)(5,2) 會對所有距離佢 3 個單位嘅位置投票

最後,位置 (5,5)(5, 5)(5,5) 會獲得最多票,因為佢係真正嘅圓心!

詳細計算表格:Occurrence Table (出現次數表)

假設我哋有三個邊緣點需要檢測圓心,已知半徑 r=3r = 3r=3。我哋會為每個點建立投票表:

邊緣點 1: (x1,y1)=(8,5)(x_1, y_1) = (8, 5)(x1​,y1​)=(8,5)

對於每個角度 thetathetatheta,計算可能的圓心 (a,b)(a, b)(a,b):

rrrθ\thetaθa=x1−rcos⁡(θ)a = x_1 - r\cos(\theta)a=x1​−rcos(θ)b=y1−rsin⁡(θ)b = y_1 - r\sin(\theta)b=y1​−rsin(θ)可能圓心 (a,b)(a, b)(a,b)
30°8−3×1=58 - 3 \times 1 = 58−3×1=55−3×0=55 - 3 \times 0 = 55−3×0=5(5,5)(5, 5)(5,5) ✓
390°8−3×0=88 - 3 \times 0 = 88−3×0=85−3×1=25 - 3 \times 1 = 25−3×1=2(8,2)(8, 2)(8,2)
3180°8−3×(−1)=118 - 3 \times (-1) = 118−3×(−1)=115−3×0=55 - 3 \times 0 = 55−3×0=5(11,5)(11, 5)(11,5)
3270°8−3×0=88 - 3 \times 0 = 88−3×0=85−3×(−1)=85 - 3 \times (-1) = 85−3×(−1)=8(8,8)(8, 8)(8,8)

邊緣點 2: (x2,y2)=(5,8)(x_2, y_2) = (5, 8)(x2​,y2​)=(5,8)

rrrθ\thetaθa=x2−rcos⁡(θ)a = x_2 - r\cos(\theta)a=x2​−rcos(θ)b=y2−rsin⁡(θ)b = y_2 - r\sin(\theta)b=y2​−rsin(θ)可能圓心 (a,b)(a, b)(a,b)
30°5−3×1=25 - 3 \times 1 = 25−3×1=28−3×0=88 - 3 \times 0 = 88−3×0=8(2,8)(2, 8)(2,8)
390°5−3×0=55 - 3 \times 0 = 55−3×0=58−3×1=58 - 3 \times 1 = 58−3×1=5(5,5)(5, 5)(5,5) ✓
3180°5−3×(−1)=85 - 3 \times (-1) = 85−3×(−1)=88−3×0=88 - 3 \times 0 = 88−3×0=8(8,8)(8, 8)(8,8)
3270°5−3×0=55 - 3 \times 0 = 55−3×0=58−3×(−1)=118 - 3 \times (-1) = 118−3×(−1)=11(5,11)(5, 11)(5,11)

邊緣點 3: (x3,y3)=(2,5)(x_3, y_3) = (2, 5)(x3​,y3​)=(2,5)

rrrθ\thetaθa=x3−rcos⁡(θ)a = x_3 - r\cos(\theta)a=x3​−rcos(θ)b=y3−rsin⁡(θ)b = y_3 - r\sin(\theta)b=y3​−rsin(θ)可能圓心 (a,b)(a, b)(a,b)
30°2−3×1=−12 - 3 \times 1 = -12−3×1=−15−3×0=55 - 3 \times 0 = 55−3×0=5(−1,5)(-1, 5)(−1,5)
390°2−3×0=22 - 3 \times 0 = 22−3×0=25−3×1=25 - 3 \times 1 = 25−3×1=2(2,2)(2, 2)(2,2)
3180°2−3×(−1)=52 - 3 \times (-1) = 52−3×(−1)=55−3×0=55 - 3 \times 0 = 55−3×0=5(5,5)(5, 5)(5,5) ✓
3270°2−3×0=22 - 3 \times 0 = 22−3×0=25−3×(−1)=85 - 3 \times (-1) = 85−3×(−1)=8(2,8)(2, 8)(2,8)

Occurrence Table (出現次數統計)

收集所有可能嘅圓心,計算每個位置被投票嘅次數:

可能圓心 (a,b)(a, b)(a,b)出現次數 (Occurrence)來源邊緣點
(5,5)(5, 5)(5,5) 🎯3 (最高!)點1(theta=0°theta=0°theta=0°), 點2(theta=90°theta=90°theta=90°), 點3(theta=180°theta=180°theta=180°)
(8,2)(8, 2)(8,2)1點1(theta=90°theta=90°theta=90°)
(11,5)(11, 5)(11,5)1點1(theta=180°theta=180°theta=180°)
(8,8)(8, 8)(8,8)2點1(theta=270°theta=270°theta=270°), 點2(theta=180°theta=180°theta=180°)
(2,8)(2, 8)(2,8)2點2(theta=0°theta=0°theta=0°), 點3(theta=270°theta=270°theta=270°)
(5,11)(5, 11)(5,11)1點2(theta=270°theta=270°theta=270°)
(−1,5)(-1, 5)(−1,5)1點3(theta=0°theta=0°theta=0°)
(2,2)(2, 2)(2,2)1點3(theta=90°theta=90°theta=90°)

結論: 圓心 (5,5)(5, 5)(5,5) 獲得 3 票(最高出現次數),所以佢就係我哋要搵嘅圓心!

呢個就係 Hough Transform 嘅核心——投票機制。每個邊緣點都會為好多可能嘅圓心投票,但係只有真正嘅圓心會從所有邊緣點度獲得票數,形成 peak!

直線 vs 圓形檢測

直線檢測圓形檢測
參數數量2 個 (ρ,θ)(\rho, \theta)(ρ,θ)3 個 (a,b,r)(a, b, r)(a,b,r)
參數空間2D3D
計算複雜度較低較高
記憶體需求較少較多
應用車道線、文檔校正虹膜識別、硬幣檢測

實際應用例子

虹膜識別:喺眼睛影像入面搵虹膜(圓形)

硬幣/圓形物件檢測:檢測圖像中嘅硬幣或者其他圓形物體

交通標誌檢測:好多交通標誌都係圓形嘅

細胞檢測:醫學影像入面搵細胞(通常接近圓形)

我之前試過用圓形 Hough Transform 檢測硬幣,效果幾好,但係要小心設定好 radius 嘅範圍,如果範圍太大會好慢。

💡 重點總結
Hough Circle Detection 嘅步驟:

  1. 對每個邊緣點,掃描所有可能嘅角度 θ\thetaθ

  2. 用公式 a=x−rcos(theta)a = x - rcos(theta)a=x−rcos(theta), b=y−rsin⁡(θ)b = y - r\sin(\theta)b=y−rsin(θ) 計算可能圓心

  3. 喺 Accumulator 入面為每個可能圓心投票(occurrence +1)

  4. 搵出票數最高(occurrence 最大)嘅位置 = 真正圓心

變動半徑 (Variable Radius) 詳解

當半徑未知時,問題就複雜好多。我哋需要喺 3D 參數空間 (a,b,r)(a, b, r)(a,b,r) 入面搵 peak。

固定半徑 vs 變動半徑:

情況參數空間Accumulator 維度複雜度
固定半徑 (rrr 已知)2D: (a,b)(a, b)(a,b)2D arrayO(N×W×H)O(N \times W \times H)O(N×W×H)
變動半徑 (rrr 未知)3D: (a,b,r)(a, b, r)(a,b,r)3D arrayO(N×W×H×R)O(N \times W \times H \times R)O(N×W×H×R)

其中 NNN 係邊緣點數量,WWW 同 HHH 係圖像寬高,RRR 係可能嘅半徑數量。

數學例子:變動半徑檢測

假設圖像大小係 500×500500 \times 500500×500 pixels,我哋想檢測半徑介乎 r∈[10,60]r \in [10, 60]r∈[10,60] pixels 嘅圓形。

步驟:

  1. 建立 3D accumulator: A[a][b][r]A[a][b][r]A[a][b][r],初始值全部係 0

    • a,b∈[0,500)a, b \in [0, 500)a,b∈[0,500)
    • rin[10,60]r in [10, 60]rin[10,60],假設每 1 pixel 一個間隔,即 51 個可能值
  2. 對每個邊緣點 (xi,yi)(x_i, y_i)(xi​,yi​) 投票:

    javascriptfor r = 10 to 60: for θ = 0° to 360° (每 1° 一個間隔): a = x_i - r·cos(θ) b = y_i - r·sin(θ) A[a][b][r] += 1
  3. 搵 accumulator 入面嘅 peak

具體計算例子

假設有個邊緣點喺 (100,100)(100, 100)(100,100)。如果真實圓心喺 (70,100)(70, 100)(70,100)、半徑 r=30r = 30r=30:

試 r=30r = 30r=30, theta=0°theta = 0°theta=0°:

a=100−30×cos⁡(0°)=100−30=70✓a = 100 - 30 \times \cos(0°) = 100 - 30 = 70 \quad ✓a=100−30×cos(0°)=100−30=70✓ b=100−30×sin⁡(0°)=100−0=100✓b = 100 - 30 \times \sin(0°) = 100 - 0 = 100 \quad ✓b=100−30×sin(0°)=100−0=100✓

所以呢個點會投一票俾 (a,b,r)=(70,100,30)(a, b, r) = (70, 100, 30)(a,b,r)=(70,100,30)。

試其他半徑:

  • r=20r = 20r=20: 會投票俾 (80,100,20)(80, 100, 20)(80,100,20) ← 錯嘅圓心
  • r=40r = 40r=40: 會投票俾 (60,100,40)(60, 100, 40)(60,100,40) ← 錯嘅圓心

關鍵點: 只有當多個邊緣點都投票俾同一個 (a,b,r)(a, b, r)(a,b,r) 時,嗰個先係真正嘅圓!

記憶體需求比較

固定半徑 (r=30r = 30r=30):

  • Accumulator size: 500×500=250,000500 \times 500 = 250,000500×500=250,000 cells
  • 假設每個 cell 用 4 bytes (int32): ~1 MB

變動半徑 (rin[10,60]r in [10, 60]rin[10,60], 51 個值):

  • Accumulator size: 500×500×51=12,750,000500 \times 500 \times 51 = 12,750,000500×500×51=12,750,000 cells
  • 記憶體: ~51 MB (係固定半徑嘅 50 倍!)

優化技巧

  1. 限制半徑範圍: 根據應用場景設定合理嘅 rminr_{\text{min}}rmin​ 同 rmaxr_{\text{max}}rmax​

  2. 用 edge gradient: 如果你有 edge 嘅 gradient 方向,可以只 check 嗰個方向,唔使 scan 成個圓周:

    javascripta = x_i - r·cos(gradient_angle) b = y_i - r·sin(gradient_angle) 只投一票,唔係 360 票!
  3. Coarse-to-fine: 先用大嘅 step size(例如每 5 pixels)搵大概位置,再喺附近用細 step size 搵精確值

  4. Random sampling: 唔係每個 θ\thetaθ 都試,隨機 sample 部分角度

呢啲優化可以將計算時間減少 10-100 倍,但係要小心 trade-off,太激進嘅優化會 miss 掉啲圓。

Hough Transform vs Linear Regression

好多人會問:點解唔用 linear regression 嚟搵直線?其實呢兩樣嘢雖然都係搵線,但係用途同原理完全唔同。

Linear Regression(最小平方法)

  • 目標:搵一條最 fit 所有點嘅線(minimize 所有點到線嘅距離平方和)
  • 假設:所有點都應該喺條線上面,只係有 noise
  • 方法:用公式 min⁡∑i=1n(yi−(mxi+c))2\min \sum_{i=1}^{n} (y_i - (mx_i + c))^2min∑i=1n​(yi​−(mxi​+c))2 直接計出嚟
  • 輸出:一條線
  • 弱點:好怕 outliers——一個離譜嘅點就可以令成條線偏晒

例子:如果你有點 (1,2),(2,4),(3,6)(1,2), (2,4), (3,6)(1,2),(2,4),(3,6),linear regression 會 fit 出 y=2xy = 2xy=2x。但係加多個 outlier (10,100)(10, 100)(10,100),條線就會被拉歪咗。

Hough Transform

  • 目標:detect 圖像入面存在嘅線(唔係 fit 所有點)
  • 假設:只有部分點屬於直線,可以有 noise、outliers、多條線
  • 方法:投票機制——每個點投票俾所有經過佢嘅可能直線
  • 輸出:可以同時 detect 多條線
  • 優勢:唔怕 outliers——outlier 只會亂投票,唔會形成 peak

例子:同樣嘅點 (1,2),(2,4),(3,6)(1,2), (2,4), (3,6)(1,2),(2,4),(3,6),Hough Transform 會 detect 出 y=2xy = 2xy=2x。就算加咗 outlier (10,100)(10, 100)(10,100),都仍然會搵到 y=2xy = 2xy=2x,因為有 3 個點投票俾佢 vs 1 個點亂投。

主要分別

Linear RegressionHough Transform
Outliers好易受影響 ❌Robust ✅
多條線只搵到一條可以 detect 好多條
斷線處理唔到Handle 到
速度快(有公式直接計)慢啲(要 iterate 投票)
用途統計分析、預測電腦視覺、影像處理

幾時用邊個?

用 Linear Regression:當你相信所有 data points 都應該喺條線上面,而你想 model 呢個 relationship(例如用面積預測樓價)

用 Hough Transform:當你想喺有雜訊嘅圖像入面 detect 幾何形狀(例如喺相片入面搵車道線,但係相片仲有樹、車、陰影等等)

簡單嚟講:Linear regression 係 fitting, Hough Transform 係 detection。

參考資料

  • Hough Transform - Wikipedia
  • Hough Transform using OpenCV
  • Week 4: Hough Transform (Line and Circle Detection)

FAQ

霍夫變換 (Hough Transform) 係乜?

深入探討 Hough Transform 的原理、數學推導及實際應用,包括直線檢測、圓形檢測與 Linear Regression 的比較

呢篇文章適合邊類讀者?

具備基礎 Python、線性代數或深度學習知識嘅 Computer Vision 學生同工程師

Related Articles

Apr 5, 2026

Person ReID 進化史:由 TransReID 到 SOLIDER 到 DINOv2,Transformer 點樣統治行人重識別?

深入解析 Person ReID 由 CNN 時代到 Transformer 時代嘅三大里程碑:TransReID(首個 pure Transformer ReID)、SOLIDER(語義可控自監督預訓練)、DINOv2(通用視覺基礎模型)。了解 JPM、SIE、語義控制器等核心設計,附完整實作指南。

Computer VisionAI
May 24, 2026

RTMO:點樣將 Coordinate Classification 塞入 YOLO,做到 One-Stage Real-Time 多人 Pose Estimation?

深入拆解 RTMO(CVPR 2024):第一個將 dual 1-D heatmap coordinate classification 整合落 YOLO 嘅 one-stage real-time multi-person pose estimation framework。Dynamic Coordinate Classifier(DBA + DBE)、MLE loss with learnable variance、YOLOX-s

Computer VisionAI
Apr 4, 2026

OSNet:點解一個 2.2M 參數嘅輕量 CNN 可以打贏 ResNet50 做 Person Re-ID?

深入解析 OSNet(Omni-Scale Network),一個專為行人重識別設計嘅輕量 CNN。了解點樣透過 multi-scale streams + unified aggregation gate 學習 omni-scale features,用 2.2M 參數打贏 24M 嘅 ResNet50。

Computer VisionAI
Back to all articles
目錄