擬合一條曲線 曲線檢測演算法總結

2021-10-14 21:12:30 字數 1500 閱讀 1478

基於rgb影象或者3維點雲資料的曲線檢測有一定的應用場景,比如車道線檢測、拋物線檢測等等,其中曲線擬合演算法是整個框架的核心。本文根據查閱過的相關文獻和自己的思考,將曲線擬合演算法進行總結和歸納,主要描述演算法的核心思想,對具體細節感興趣的讀者可以自行查閱相關文獻,希望對讀者有所幫助。後續將會開源對應的python實現**。

例項如下:

rgb影象的曲線檢測

3維點雲的曲線檢測

以rgb為例,假設待擬合的點集的橫縱座標分別用

霍夫變換 霍夫變換的核心思想是將原始的座標空間轉到引數空間,引數空間**現次數最多的引數座標即為所要擬合的曲線引數。下面以拋物線為例進行介紹。 假設拋物線的開口沿y軸方向(ps: 對於任意朝向的拋物線,可對座標系進行線性變換使得開口與y軸平行),則拋物的方程可以表示為:

將其變換到引數空間,可得:

現在,已知的資料是

。根據先驗知識,給定

的分布區間和解析度。對於每個點

,遍歷,計算對應的引數

。 同時,維持乙個累加器accumulator,對於每一組

,更新accumulator: accumulator[a, b, c] += 1。更新完成後,accumulator最大值所在的下標

即為擬合的拋物線的引數。

最小二乘法 故名思意,該演算法將曲線擬合問題視作乙個線性回歸問題,用最小二乘法求解。同樣,以拋物線為例,曲線擬合問題可以轉化為求解下列方程組問題:

寫成矩陣形式,則為

進一步簡化:

所以:

(遺傳演算法 該演算法的基本流程是隨機取樣構成決定一條曲線所需的點,利用這些點計算出曲線的引數。然後評估該曲線的優劣,利用遺傳演算法或分布估計演算法更新每個點被選擇的概率。重複上述步驟,儲存中間的最優結果,直到滿足終止條件。 同樣地,以拋物線和分布估計演算法為例,流程如下: (1). 按照點在點集中的順序對點進行二進位制編碼:假設乙個rgb影象中的前景點個數為32個,那麼每個點可用5位二進位制數表示。 (2). 一條拋物線需要3個滿足一定條件的點唯一確定。用均勻分布初始化5*3=15位二進位制中每一位取1的概率。 (3). 按照該概率分布取樣n組候選點,每組包含3個點。根據這3個候選點計算拋物線方程的引數a, b, c。計算該拋物線經過的前景畫素的個數。 (4). 按照經過的前景畫素的個數從高到低排序,從n組候選點中選擇前m組,更新二進位制每一位的概率分布

。 (5). 判斷是否滿足終止條件。若不滿足,則返回步驟(3)

演算法速度準確度

霍夫變換

慢。受限於曲線引數的範圍和解析度

若曲線的範圍和解析度足夠準確的話,則能找到最優曲線

最小二乘法

快無法保證檢測的曲線一定經過前景點,同時受outlier影響較大

遺傳演算法

快一般而言,能找到比較優的解,但無法找到最優解

擬合一條曲線 技巧篇 ELISA曲線擬合

很多使用者諮詢elisa實驗後如何進行曲線製作?那麼對於那麼多的曲線計算公式,該如何選擇最佳的擬合方程呢?那麼今天我們就來簡要聊一聊elisa標曲擬合的那些事兒吧!產品說明書都會推薦使用者擬合標曲方法,可以用軟體繪製也可以通過excel進行製作。按照科學分析方法,如果存在奇異點或者汙點,直接採用線性...

貝塞爾曲線生成工具 如何自製一條貝塞爾曲線(有碼)

如果在工作時間摸魚 咳咳 為啥畫個曲線還有公式,還要寫 在各位使用各種編輯軟體的時候,其實到處都有貝塞爾曲線的影子。photoshop ae flash,除了鋼筆工具,還有調色曲線 運動曲線等等,有些是畫在畫布上的曲線,有些則影響了 度 亮度 運動速度等等,這類曲線最大的特點是可以通過拖動幾個控制點...

172 手動SVG繪製一條曲線

我發現我所有的svg使用量中有98 來自預先設計為最終匯出為svg的某些設計軟體中的svg檔案或向量藝術。我不是經常手動操作svg 中事物的座標。嘿,我什至有一本書 但是偶爾,這是適當的,甚至可能有點有趣。在這種情況下,我想畫一條非常具體的線,並在其中進行一些柔和的轉彎。在對svg的路徑語法 最奇怪...