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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

CS131专题-4:拟合(最小二乘、RANSAC、霍夫变换)

發(fā)布時(shí)間:2023/11/27 生活经验 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CS131专题-4:拟合(最小二乘、RANSAC、霍夫变换) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本專題目的:了解最小二乘、RANSAC、霍夫變換這3個(gè)算法的基本原理,能夠做到脫口而出,并從零編程實(shí)現(xiàn)。

目錄

1 前言

2 最小二乘

2.1 基本原理

2.2 求解方法

3 RANSAC 算法

3.1 基本原理

4 霍夫變換

4.1 基本原理——檢測(cè)直線

4.1.1?極坐標(biāo)系

4.1.2 找到參數(shù)空間中交點(diǎn)密集位置的方法

4.1.3 一些效果圖

4.2 基本原理——檢測(cè)圓

4.3 霍夫變換的其他應(yīng)用

5 總結(jié)


1 前言

上一專題知道了如何提取圖像中邊緣像素,本專題我們看看如何從邊緣圖中,通過(guò)‘擬合’技術(shù),來(lái)進(jìn)一步提取一些我們需要的幾何形狀邊緣,如直線、圓、或者其他形狀。

當(dāng)然,從圖像中找到我們想要的一些幾何特征,存在一些難點(diǎn):

  1. 噪聲:圖像以及預(yù)處理會(huì)存在各種噪聲,影響擬合。
  2. 外點(diǎn)(無(wú)關(guān)點(diǎn)):如果我們要找一輛車上的幾何形狀,那么圖像中車之外的像素點(diǎn)都是無(wú)關(guān)像素,但它們會(huì)影響我們程序自動(dòng)化尋找。
  3. 遮擋:目標(biāo)圖形部分被遮擋,使幾何形狀間斷。

(備注:機(jī)器學(xué)習(xí)中也有算法可以完成此事,而且效果更好、更魯棒,所以本專題不做太深入細(xì)究,且一些傳統(tǒng)視覺(jué)算法的延伸優(yōu)化問(wèn)題也不介紹了)

2 最小二乘

2.1 基本原理

最小二乘法(least square method)是一種常用的數(shù)學(xué)優(yōu)化方法,所謂二乘就是平方的意思。這平方一詞指的是在擬合一個(gè)函數(shù)的時(shí)候,通過(guò)最小化誤差的平方來(lái)確定最佳的匹配函數(shù),所以最小二乘指的就是擬合的誤差平方達(dá)到最小。

假設(shè)這種線性關(guān)系為:f(x) = ax+b

總誤差的平方為:

在誤差式子中,不同的 a,b 會(huì)導(dǎo)致不同的 E,根據(jù)多元微分的知識(shí),當(dāng)它們的偏微分等于0時(shí),E 可取最小值。

上述方程組為線性方程組,求解上述方程組,得出 a,b 的值后,我們就能找到一條‘最佳’擬合線。(備注:其實(shí)這種距離判定方法并不是最優(yōu)的,具體可見(jiàn)北郵魯鵬的《計(jì)算機(jī)視覺(jué)》中一些最小二乘的改進(jìn)方法)

2.2 求解方法

主要利用線性代數(shù)相關(guān)技巧:

本小節(jié)主要參考:http://mangoroom.cn/opencv/least-square-method-line-fit.html

3 RANSAC 算法

一眼就能明白,最小二乘擬合方法有太多局限性。效果受噪音數(shù)據(jù)、圖像遮擋等很大影響。

  • 普通最小二乘法是保守派:在現(xiàn)有數(shù)據(jù)下,如何實(shí)現(xiàn)最優(yōu)。是從一個(gè)整體誤差最小的角度去考慮,盡量誰(shuí)也不得罪。
  • RANSAC是改革派:首先假設(shè)數(shù)據(jù)具有某種特性(目的),為了達(dá)到目的,適當(dāng)割舍一些現(xiàn)有的數(shù)據(jù)。

3.1 基本原理

RANSAC簡(jiǎn)化版的思路就是:

第1步:隨機(jī)選擇幾個(gè)樣本點(diǎn)(如估計(jì)一條直線方程需要兩個(gè)點(diǎn),其他模型可能不一樣)

第2步:擬合出一個(gè)模型(即把這個(gè)直線方程定下來(lái))

第3步:設(shè)置一個(gè)門限

第4步:記下門限內(nèi)囊括的“內(nèi)點(diǎn)”的數(shù)量,重復(fù)1~4步,迭代N次

第5步:最后選用那個(gè)“內(nèi)點(diǎn)”最多的擬合模型。

RANSAC算法一個(gè)很重要參數(shù)是:迭代次數(shù)。這個(gè)參數(shù)有種方法可以估算大概是要多少。

具體原理和過(guò)程參考:

  • RANSAC算法詳解(附Python擬合直線模型代碼) - 知乎
  • RANSAC算法理解_robinhjwy的博客-CSDN博客

真實(shí)應(yīng)用時(shí),其實(shí)需要針對(duì)特定問(wèn)題和情況做更多改進(jìn),比如RANSAC最終得到最好的一根線,其實(shí)再用最小二乘去擬合這根線周圍的點(diǎn),得到的新直線會(huì)更好。

4 霍夫變換

RANSAC不好解決圖像中存在大量線的情況。

  • 霍夫變換,可以用來(lái)檢測(cè)圖像中任意多個(gè)直線、圓、橢圓等幾何體。它最初被設(shè)計(jì)成用來(lái)檢測(cè)能夠精確地解析定義的形狀(即可以用數(shù)學(xué)公式精確定義的幾何體)。后來(lái)廣義霍夫變換(1972不要求給出幾何體的解析式。
  • 它通過(guò)將圖像坐標(biāo)空間變換到參數(shù)空間,來(lái)實(shí)現(xiàn)直線與曲線的擬合。

4.1 基本原理——檢測(cè)直線

理解第1點(diǎn):圖像中的一條直線在參數(shù)空間(霍夫空間)是一個(gè)點(diǎn):

原因:只要確定了m和b值,那么也就在 x,y 空間確定了一條直線。

理解第2點(diǎn):圖像中,經(jīng)過(guò)某點(diǎn)的無(wú)數(shù)條直線,在參數(shù)空間里可以用一條直線表示。(或者也可以說(shuō),圖像空間中一個(gè)點(diǎn),在參數(shù)空間中是一條直線)

原因:圖像中經(jīng)過(guò)某點(diǎn)的直線公式為 y0 = x0*m+b,而這個(gè)公式在參數(shù)空間就是一條直線。

理解第3點(diǎn):參數(shù)空間中兩條線的交點(diǎn),代表圖像空間中兩個(gè)點(diǎn)的直線。

原因:參數(shù)空間中兩條線交點(diǎn)位置的參數(shù),可以在圖像空間確定一條直線,而這條這些必定經(jīng)過(guò)參數(shù)空間那兩條直線所對(duì)應(yīng)圖像空間中那兩個(gè)點(diǎn)。

理解第4點(diǎn):將圖像空間中所有點(diǎn)在參數(shù)空間用直線描述,然后將參數(shù)空間網(wǎng)格化,統(tǒng)計(jì)參數(shù)空間每個(gè)網(wǎng)格內(nèi)的直線交點(diǎn)個(gè)數(shù)(也就是投票),交點(diǎn)數(shù)越多的,表示這個(gè)網(wǎng)格所對(duì)應(yīng)的參數(shù)在圖像空間所形成的直線更有可能是圖像邊緣所形成的直線。

以下是圖片中得票率(交點(diǎn)數(shù))最高的20條直線:

理解上面4點(diǎn),基本也就理解霍夫變換找直線的方法了,其實(shí)找圓也類似,只是直線參數(shù)空間變成圓方程參數(shù)空間。

當(dāng)然,實(shí)際找直線時(shí),并不是用 y = mx + b方程。原因是:

  • 圖像中垂直的直線,斜率無(wú)窮大,在參數(shù)空間中此交點(diǎn)位置會(huì)離原點(diǎn)無(wú)窮遠(yuǎn)。這導(dǎo)致沒(méi)法計(jì)算了。

4.1.1?極坐標(biāo)系

圖像坐標(biāo)是笛卡爾坐標(biāo)系,我們把參數(shù)空間用極坐標(biāo)中參數(shù)表示就能解決上述問(wèn)題。

如下圖,xy坐標(biāo)系中任意一個(gè)點(diǎn),可以用θ和ρ參數(shù)來(lái)表示:

要意識(shí)到兩點(diǎn):

  • θ值僅在180個(gè)單位長(zhǎng)度內(nèi)就能完整的與圖像空間中所有點(diǎn)進(jìn)行對(duì)應(yīng)。
  • ρ值其實(shí)也是有限大的,因?yàn)閳D像尺寸是長(zhǎng)寬的,也即xy長(zhǎng)度有限,那么根據(jù)極坐標(biāo)轉(zhuǎn)換公式,ρ也不會(huì)無(wú)限大。

把θ和ρ作為參數(shù),則圖像空間中一個(gè)點(diǎn),在參數(shù)空間中就變?yōu)橐粭l正弦曲線,如下圖:

上圖,我們的θ在0~180直接,也可以畫在-90~90之間。

4.1.2 找到參數(shù)空間中交點(diǎn)密集位置的方法

首先我們網(wǎng)格化參數(shù)空間,只要統(tǒng)計(jì)出每個(gè)網(wǎng)格內(nèi)有多少根線經(jīng)過(guò),就也算出了該網(wǎng)格所對(duì)應(yīng)的參數(shù)值在邊緣圖像空間中形成的直線,是會(huì)經(jīng)過(guò)多少個(gè)邊緣像素點(diǎn)。

我們用一個(gè)二維矩陣 H 來(lái)代表參數(shù)空間:

具體算法過(guò)程如下:

  • 將二維數(shù)組(作為累加器) H(θ, ρ) 初始化為0
  • For 圖像空間每個(gè)像素點(diǎn)(x, y)
    • For θ 0到180
      • 計(jì)算ρ值:(ρ = x*cosθ + y*cosθ)
      • 投票+1(因?yàn)榇甩群挺腰c(diǎn)有條線經(jīng)過(guò)):H(θ, ρ)? = H(θ, ρ) + 1
    • End
  • End
  • 尋找H矩陣中,元素值的局部波峰位置,這些位置所對(duì)應(yīng)θ和ρ值,就對(duì)應(yīng)圖像中各邊緣形成的直線。

注意:

  • 由于圖像中的直線往往具有一定的像素寬度,這會(huì)導(dǎo)致 H 矩陣的局部會(huì)有連續(xù)幾個(gè)高投票值位置,因此每找到一個(gè)當(dāng)前最大的峰值點(diǎn)后,需要將該點(diǎn)及其附近點(diǎn)清零,以防算法檢測(cè)出多條極其鄰近的“假”直線。
  • 具體使用時(shí),還是要應(yīng)對(duì)噪聲問(wèn)題,也可以借助圖像中梯度方向來(lái)減少遍歷次數(shù)等等,具體要用時(shí)還是要更深入研究。

4.1.3 一些效果圖

散點(diǎn)線:

有噪聲的情況:

兩根粗直線:

上圖左邊是一個(gè)邊緣圖像,每個(gè)像素點(diǎn)通過(guò)極坐標(biāo)映射到霍夫空間后,會(huì)有2個(gè)密集交匯區(qū),而且這個(gè)高亮區(qū)寬度還是比較大的(代表邊緣圖像中大量平行且臨近的直線)。

正方形和圓:

上圖正方形霍夫空間會(huì)有4個(gè)交匯點(diǎn),而圓沒(méi)有任何密集交匯區(qū)(上圖亮度只是可視化方式不一樣)。

幾何圖形在一起情況:

電路板:

網(wǎng)格線:

4.2 基本原理——檢測(cè)圓

根據(jù)下面的圖,理解如下幾點(diǎn):

  1. 圖像中一個(gè)圓,可以用三個(gè)參數(shù)表示:圓心坐標(biāo)(x, y)和半徑 r ,所以,圖像中一個(gè)圓,可以用三維參數(shù)空間中一個(gè)點(diǎn)來(lái)表示。
  2. 圖像中一個(gè)點(diǎn),它如果在圖像中的某個(gè)圓上,那它和圓心所成的方向,是該點(diǎn)圖像梯度的方向!(圖像梯度的原理和計(jì)算方法見(jiàn)專題2)。這一點(diǎn)很重要,這是理解后續(xù)的基礎(chǔ),也是該建模方法可窮舉投票的理由。(當(dāng)然,殘缺了一點(diǎn)的圓,這些殘缺像素位置梯度可能為0或其他,但并不影響后續(xù)投票算法)
  3. 基于已知的某點(diǎn)圖像梯度方向,經(jīng)過(guò)圖像中某一個(gè)點(diǎn)的所有可能的圓,可以在x,y,r三維空間中用兩根直線表示。(如果不考慮該點(diǎn)梯度方向,則笛卡爾坐標(biāo)系中某一個(gè)點(diǎn),其所有可能的圓,在參數(shù)空間中可以用一個(gè)立體圓錐曲面表示!)
  4. 對(duì)于圖像中某個(gè)像素點(diǎn) (x,y) ,當(dāng)給定r半徑值后,僅有兩個(gè)可能的圓心位置(這兩個(gè)潛在可能的圓心位置相對(duì)這個(gè)像素點(diǎn)互為鏡像位置),這兩個(gè)圓心的位置可以通過(guò)x,y,r,以及圖像梯度角度值計(jì)算出來(lái)。

理解上述4點(diǎn)后,遍歷圖像中每個(gè)像素點(diǎn),再遍歷r長(zhǎng)度的可能范圍,通過(guò)投票來(lái)找,找到參數(shù)空間中密度高亮區(qū),這些位置的參數(shù)就鎖定了圖像中一些圓。算法如下:

  • For 圖像中每一個(gè)邊緣像素點(diǎn)
    • For r in range( len(最大半徑) )(注意:r是可窮舉的,因?yàn)閳D像中最大的完整圓,其半徑最大為圖像高或?qū)挼囊话?#xff09;
      • 計(jì)算圓心坐標(biāo)(a, b)
      • H(a, b, r) = H(a, b, r)? + 1
    • End
  • End
  • 找出H(a, b, r) 中局部最大點(diǎn)。

4.3 霍夫變換的其他應(yīng)用

除了檢測(cè)出直線、圓等幾何體,此算法進(jìn)一步還能做一些其他事,因?yàn)樽罱鼛啄隂](méi)什么進(jìn)展了,就不細(xì)研究了。

案例:通過(guò)檢測(cè)一些大物體的局部組件相對(duì)大物體的位置關(guān)系,通過(guò)方向投票機(jī)制,去鎖定圖像中某大物體的中心位置。

5 總結(jié)

本專題介紹了圖像擬合的一些經(jīng)典計(jì)算機(jī)視覺(jué)方法,雖然這些方法在深度學(xué)習(xí)時(shí)代競(jìng)爭(zhēng)力已不大,但是其經(jīng)久考驗(yàn)的算法思想還是很值得學(xué)習(xí)的。通過(guò)本專題整理,收獲主要如下:

  1. 霍夫變換思想,真的讓我震驚了,感覺(jué)可以和DL技術(shù)相結(jié)合。
  2. 投票機(jī)制。
  3. 圖像噪聲對(duì)各種算法的影響,以及應(yīng)對(duì)措施,這方面非常麻煩,效果也要特定問(wèn)題特定分析,讓我更加感受到深度學(xué)習(xí)技術(shù)的潛在威力。

總結(jié)

以上是生活随笔為你收集整理的CS131专题-4:拟合(最小二乘、RANSAC、霍夫变换)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。