1. 程式人生 > >最小二乘法擬合圓公式推導及其實現

最小二乘法擬合圓公式推導及其實現

https://blog.csdn.net/Jacky_Ponder/article/details/70314919

1.1最小二乘擬合圓介紹與推導最小二乘法(least squares analysis)是一種數學優化技術,它通過最小化誤差的平方和找到一組資料的最佳函式匹配。最小二乘法是用最簡的方法求得一些絕對不可知的真值,而令誤差平方之和為最小來尋找一組資料的最佳匹配函式的計算方法,最小二乘法通常用於曲線擬合 (least squares fitting) 。最小二乘圓擬合方法是一種基於統計的檢測方法,即便是影象中圓形目標受光照強度不均等因素的影響而產生邊緣缺失,也不會影響圓心的定位和半徑的檢測,若邊緣定位精確輪廓清晰,最小二乘法可實現亞畫素級別的精確擬合定位。這裡有擬合圓曲線的公式推導過程和vc實現。1.2VC實現的程式碼[cpp] view plain copy<code class="language-cpp">void CViewActionImageTool::LeastSquaresFitting()  {      if (m_nNum<3)      {          return;      }      int i=0;      double X1=0;      double Y1=0;      double X2=0;      double Y2=0;      double X3=0;      double Y3=0;      double X1Y1=0;      double X1Y2=0;      double X2Y1=0;      for (i=0;i<m_nNum;i++)      {          X1 = X1 + m_points[i].x;          Y1 = Y1 + m_points[i].y;          X2 = X2 + m_points[i].x*m_points[i].x;          Y2 = Y2 + m_points[i].y*m_points[i].y;          X3 = X3 + m_points[i].x*m_points[i].x*m_points[i].x;          Y3 = Y3 + m_points[i].y*m_points[i].y*m_points[i].y;          X1Y1 = X1Y1 + m_points[i].x*m_points[i].y;          X1Y2 = X1Y2 + m_points[i].x*m_points[i].y*m_points[i].y;          X2Y1 = X2Y1 + m_points[i].x*m_points[i].x*m_points[i].y;      }      double C,D,E,G,H,N;      double a,b,c;      N = m_nNum;      C = N*X2 - X1*X1;      D = N*X1Y1 - X1*Y1;      E = N*X3 + N*X1Y2 - (X2+Y2)*X1;      G = N*Y2 - Y1*Y1;      H = N*X2Y1 + N*Y3 - (X2+Y2)*Y1;      a = (H*D-E*G)/(C*G-D*D);      b = (H*C-E*D)/(D*D-G*C);      c = -(a*X1 + b*Y1 + X2 + Y2)/N;      double A,B,R;      A = a/(-2);      B = b/(-2);      R = sqrt(a*a+b*b-4*c)/2;      m_fCenterX = A;      m_fCenterY = B;      m_fRadius = R;      return;  }</code>  --------------------- 作者:Jacky_Ponder 來源:CSDN 原文:https://blog.csdn.net/Jacky_Ponder/article/details/70314919 

相關推薦

乘法公式推導及其實現

https://blog.csdn.net/Jacky_Ponder/article/details/703149191.1最小二乘擬合圓介紹與推導最小二乘法(least squares analysis)是一種數學優化技術,它通過最小化誤差的平方和找到一組資料的最佳函式匹配。最小二乘法是用最簡的方法求得一些

乘法公式推導及vc實現[r]

{    if (m_nNum<3)    {        return;    }    int i=0;    double X1=0;    double Y1=0;    double X2=0;    double Y2=0;    double X3=0;    double Y3=0; 

基於OpenCV資料結構乘法-程式碼部分

對於網上常用的擬合圓程式碼(經過修改, 因為除數可能為0) /* * 參考: http://blog.csdn.net/liyuanbhu/article/details/50889951 * 通過最小二乘法來擬合圓的資訊 * pts: 所有點座標 * center: 得到

利用乘法脫密坐標的方法

微信 旋轉 殘差 擬合 cnblogs 整體 ont soft 尋找 文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/ 1.背景 公司某項目中,業主使用了由中科院進行過脫密處理的公網地圖,同時提供

python中matplotlib實現乘法的過程詳解

ast array plt atp ons 正則 key code 擬合 這篇文章主要給大家介紹了關於python中matplotlib實現最小二乘法擬合的相關資料,文中通過示例代碼詳細介紹了關於最小二乘法擬合直線和最小二乘法擬合曲線的實現過程,需要的朋友可以參考借鑒,下

乘法直線方程

Code(python) x = [] y = [] n = input(); n = int(n) sumx = 0 sumx2 = 0 sumy = 0 sumxy = 0 for i in range(n): v = input() v = float

乘法

import numpy as np #P145 例題2 x=np.array([-1,-0.75,-0.5,-0.25,0,0.25,0.5,0.75,1]) y=np.array([-0.2209,0.3295,0.8826,1.4392,2.0003,2.5645,3.1334

python3-多項式乘法

class numpy.poly1d(c_or_r, r=False, variable=None)[source]引數:c_or_r:array_like多項式的係數,或者如果第二個引數的值是True,多項式的根(值多項式的求值結果為0)。例如,poly1d([1, 2, 3])返回一個物件,代表:x ^

乘法直線c++程式碼

最近公司的一個專案需要計算TVDI(Temperature Vegetation Dryness Index ,溫度植被幹旱指數) ,TVDI的計算公式如下(具體原理自行百度): 其中,為任意像元的地表溫度;為某一NDVI對應的最小地表溫度,對應的是溼邊;為某一NDVI對應的最大地表

乘法及其相關程式碼實現

當我們手中握有大量的資料時,對於二維的資料,我們會對他們進行直線擬合、對數擬合,圓曲線的擬合等等。這些擬合的方法都是運用的了非常古老而又非常有效的方法,即最小二乘法。 今天給大家介紹一種三維球面資料的擬合方法,該方法也是運用的最小二乘的方法。旨在使擬合的半徑在均方意義下誤差達

opencv學習——乘法直線

 最小二乘法擬合直線概念:最小二乘法多項式直線擬合,根據給定的點,求出它的函式y=f(x),當然求得準確的函式是不太可能的,但是我們能求出它的近似曲線y=φ(x)原理假設有點

如何使用線性代數實現乘法曲線

也許在我們讀高中的時候,就知道在數學的世界裡,有一種直線擬合的方式:最小二乘法。它是一種數學優化技術,原理是通過最小化誤差的平方和尋找資料的最佳函式匹配。 比如研究x和y之間的關係,假設我們擁有的資料是將這些資料描繪在x-y直角座標系中,發現這些點並沒有能夠連線成一條直線。

乘法直線--C++/Opencv

1.原理 在現實中經常遇到這樣的問題,一個函式並不是以某個數學表示式的形式給出,而是以一些自變數與因變數的對應表給出,老師講課的時候舉的個例子是犯罪人的身高和留下的腳印長,可以測出一些人的資料然後得到一張表,它反應的是一個函式,迴歸的意思就是將它還原成數學表示式,這個

關於大似然估計和乘法的理解和公式推導

最小二乘法可以從Cost/Loss function角度去想,這是統計(機器)學習裡面一個重要概念,一般建立模型就是讓loss function最小,而最小二乘法可以認為是 loss function = (y_hat -y )^2的一個特例,類似的想各位說的還可以用各種距離度量來作為loss functi

非線性函式的及在Jupyter notebook中輸入公式 [原創]

突然有個想法,利用機器學習的基本方法——線性迴歸方法,來學習一階RC電路的階躍響應,從而得到RC電路的結構特徵——時間常數τ(即R*C)。回答無疑是肯定的,但問題是怎樣通過最小二乘法、正規方程,以更多的取樣點數來降低訊號採集噪聲對τ估計值的影響。另外,由於最近在搗鼓Jupyter和numpy這些東西,正好嘗試

(九)次曲線

.fig pac atp matrix plot .text Coding 運算 提取數據 1 #coding=utf-8 2 from numpy import * 3 import numpy as np 4 import matplotlib.pyplo

有用 初始 等於 計算 合成 mage RR 周期性 () 來自:某小皮 最優化函數庫Optimization 優化是找到最小值或等式的數值解的問題。scipy.optimization子模塊提供函數最小值,曲線擬合和尋找等式的跟的有用算法。 最小二乘擬合 假設有一組實驗數

halcon之直線

如果不瞭解最小二乘演算法 請先閱讀: Least squares的演算法細節原理https://en.wikipedia.org/wiki/Least_squares 通常在halcon中擬合直線會用houghline或者 fitline。本文提供一種新的選擇,用halcon的矩陣操作

RANSAC與 通俗講解

一、RANSAC理論介紹 普通最小二乘是保守派:在現有資料下,如何實現最優。是從一個整體誤差最小的角度去考慮,儘量誰也不得罪。 RANSAC是改革派:首先假設資料具有某種特性(目的),為了達到目的,適當割捨一些現有的資料。 給出最小二乘擬合(紅線)、RANSAC(綠線)對於一階直線、二階

3D點雲法向量估計(平面)

1、點雲法向量估計的主要思路是對K-近鄰的N個點進行平面擬合(平面過N點重心),平面法向量即為所求; 2、最小二乘擬合可以轉換為求協方差矩陣最小特徵值對應的特徵向量(SVD分解);此種解法對資料噪聲有很強的魯棒性,關鍵點在於要對資料去中心化處理,將座標原點移動到資料重心。 3、最後根據特徵點P到重心Oi形成的