1. 程式人生 > >Opencv 三次樣條曲線(Cubic Spline)插值

Opencv 三次樣條曲線(Cubic Spline)插值

1.樣條曲線簡介

樣條曲線(Spline)本質是分段多項式實函式,在實數範圍內有:S:[a,b]R,在區間[a,b]上包含k個子區間[ti1,ti],且有:

a=t0<t1<<tk1<tk=b(1)

對應每一段區間i的存在多項式: Pi:[ti1,ti]R,且滿足於:

S(t)=P1(t) , t0t<t1,S(t)=P2(t) , t1t<t2,S(t)=Pk(t) , tk1ttk.(2)

其中,Pi(t)多項式中最高次項的冪,視為樣條的階數或次數(Order of spline),根據子區間[ti1,ti]的區間長度是否一致分為均勻(Uniform)樣條和非均勻(Non-uniform)樣條。

滿足了公式(2)的多項式有很多,為了保證曲線在S區間內具有據夠的平滑度,一條n次樣條,同時應具備處處連續且可微的性質:

P(j)i(ti)=P(j)i+1(ti);(3)

其中 i=1,,k1;j=0,,n1

2.三次樣條曲線

2.1曲線條件

按照上述的定義,給定節點:

t:z:a=t0z0<t1z1<<tk1zk1<tkzk=b(4)

三次樣條曲線滿足三個條件:

  1. 在每段分段區間[ti,ti+1],i=0,1,,k1上,S(t)=Si(t)都是一個三次多項式;
  2. 滿足S(ti)=zi,i=1,,

    相關推薦

    Opencv 曲線(Cubic Spline)

    1.樣條曲線簡介 樣條曲線(Spline)本質是分段多項式實函式,在實數範圍內有:S:[a,b]→R,在區間[a,b]上包含k個子區間[ti−1,ti],且有: a=t0<t1<⋯<tk−1<tk=b(1) 對應每一段區

    採用Cardinal法構造枝分段曲線 : 實戰篇

    本文由timewolf完成,首發於CSDN,作者保留版權。未經許可,不得使用於任何商業用途。如需聯絡請發郵件:karla9(AT)eyou(dot)com 下面會給出一個簡單的例子: 在視窗上用滑鼠點8個點,然後就會將這8個點的座標畫出來~~~, 我共總用了3

    採用Cardinal法構造枝分段曲線 : 程式碼篇

    說明:Spline類就是Cardinal樣條曲線了,這個類裡面記錄了4個控制點:m_startControlPoint, m_startPoint, m_endPoint, m_endControlPoint, 分別按順序對應Pk-1, Pk, Pk+1, Pk+2, 由於C

    曲線座標系與直角座標系轉換(二)——基礎:原理(cubic spline

    一、引入 上一篇提到插值多項式,幾次函式就稱為幾次樣條函式如, 二次樣條函式為:f(x) = a*x^2 + b*x + c 三次樣條函式為:f(x) = a*x^3 + b^x^2 + c*x +d x=[1,3,5,7,9]; y=[2,4,6,8,10];有5個節點,4個區

    Cubic spline)(轉載)

    轉自:http://blog.csdn.net/lsxpu/article/details/38849775 自己以前上過數值分析這門課,用的是[1]這本教材,三次樣條插值這一節,當時似乎看明白了,但在實際碰到它時,總覺得很神祕,也很心虛。過了好幾年之後,想徹底理解這個

    【 MATLAB 】MATLAB 實現模擬訊號取樣後的重建()應用函式spline實現內

    前三篇博文講了三種方法進行內插重建訊號: 這篇文章使用三次樣條函式spline來實現內插重建,並分析重建誤差。 採用的案例依然是上篇博文中的案例: 模擬訊號: 對該訊號使用兩種不

    Matlab

    end for 直接 mat wid tla 文獻 nbsp 出現 以N方向為例: 1、將N方向數據導入Matlab,將十進制年轉化為年積日 2、重新排序,將缺失數據的天數以NaN補齊 3、尋找出NaN所在的天數 nxx = find( isnan(n) ); 4、

    fortran程式例項

    Program testspline implicit none integer :: i integer, parameter :: n = 50, m = 100, dp = 8 real(dp) :: x(n), y

    MATLAB 原始碼

    MATLAB 原始碼: function yy = Interpolation_Spline0(x, y, xx) %{ 函式功能:三次樣條插值法; 輸入: x:已知點橫座標; y:已知點縱座標; xx:插值點; 輸出: yy:插值點的函式值; 示例: clear; clc; x

    數值分析用matlab求解多項式

    數值分析用matlab求解三次樣條插值多項式 時間真快,2018年只剩下2天,2019年即將來臨! 今晚整理筆記本中的資料,看了下之前給朋友解答的一個《數值分析》實驗題目,還是有點意思。不管怎樣,分享給需要的朋友,希望有所幫助! 給定函式,及節點如下: 求其三次樣條插值多項式(

    演算法的C++實現

    標頭檔案: /* * Copyright (c) 2008-2011 Zhang Ming (M. Zhang), [email protected] * * This program is free software; you can redistri

    擬合典型例項

    1設計目的、要求    對龍格函式在區間[-1,1]上取的等距節點,分別作多項式插值、三次樣條插值和三次曲線擬合,畫出及各逼近函式的圖形,比較各結果。 2設計原理 (1)   多項式插值:利用拉格朗日多項式插值的方法,其主要原理是拉格朗日多項式,即: 表示待插值函式的個節點

    用matlab程式實現求解

    X =[ 0,0.2,0.4,0.6,0.8,1.0]; Y=[1.0, 0.818732, 0.670320, 0.548812, 0.449329, 0.367879]; cs = csapi(

    Matlab之畫圖和表示式

        這一題是得到資料點(0,3),(1,5),(2,4),(3,1)並得到它的三次樣條表示式和畫出三次樣條後的圖圖形。     以及對資料點(-1,3),(0,5),(3,1),(4,1),(5,1)並得到它的三次樣條表示式和畫出三次樣條後的圖圖形。     用函

    Matlab 多項式表示

    Matlab Spline pp.coefs 如何運用MATLAB 三次樣條插值的問題,今天做作業,突然想用Matlab搞搞。 題目如下: 清華大學出版社的《數值分析(第5版)》 P49,20題。 x=[0.25 0.3 0.39 0.45 0.53]; y=[ 0

    C++實現演算法

    程式中函式說明: 用float f(int x1, int x2, int x3)來寫函式; 用void cal_m(int n)來解係數; 用void printout(int n)來確定次數。 三次樣條插值演算法(壓緊樣條)原始碼: //#incl

    (27)曲線

    三次插值樣條曲線在靈活性和計算速度之間進行了合理的折中。與更高次樣條相比,三次插值樣條只需較少的計算和儲存,且較穩定。與二次插值樣條相比,三次插值樣條在模擬任意形狀時顯得更靈活。 三次插值樣條曲線由

    分段Hermite曲線的應用(Unity 動畫曲線AnimationCurve的實現方法的還原)

    分段三次Hermite插值是一種光滑的分段插值。 分段三次Hermite插值函式要滿足的條件: 1. 已知節點(x_i,y_i) 及微商值 k_i (i = 0 , 1, 2, ....... n); 2. 在每個小區間[x_i , x_i_1] 上是不高於三次的多項式

    B-spline Curves 學習之B曲線定義(4)

    轉自:http://www.cnblogs.com/icmzn/p/5100789.html   給定 n + 1個控制點P0, P1, ..., Pn 和一個節點向量U = { u0, u1, ..., um },  p 次B-樣條曲線由這些控制點和節點向量U 定義  

    B曲線(B-spline Curves)

    關鍵字:NURBS,基函式,控制點,節點, 看了網上很多相關資料才得以下筆,資料太多,這裡就不一一列舉了,感謝各位大佬的資料 本部落格順序不太好,看前面的東西可能需要提前看後面的東西。正在努力修煉,敬請諒解 寫了個B樣條曲線計算的完成程式,包括繪圖,https://