標籤:圖像函數式編程

在離散數據的基礎上補插連續函數,使得這條連續曲線通過全部給定的離散數據點。插值是離散函數逼近的重要方法,利用它可通過函數在有限個點處的取值狀況,估算出函數在其他點處的近似值。插值:用來填充圖像變換時像素之間的空隙。

1發展歷史

早在6世紀,中國的劉焯已將等距二次插值用於天文計算。
17世紀之後,I.牛頓,J.-L.拉格朗日分別討論了等距和非等距的一般插值公式。在近代,插值法仍然是數據處理和編製函數表的常用工具,又是數值積分、數值微分、非線性方程求根和微分方程數值解法的重要基礎,許多求解計算公式都是以插值為基礎導出的。

2主要內涵

插值問題的提法是:假定區間[a,b]上的實值函數f(x)在該區間上 n+1個互不相同點x0,x1……xn 處的值是f (x0),……f(xn),要求估算f(x)在[a,b]中某點x*的值。基本思路是,找到一個函數P(x),在x0,x1……xn 的節點上與f(x)函數值相同(有時,甚至一階導數值也相同),用P(x*)的值作為函數f(x*)的近似。
其通常的做法是:在事先選定的一個由簡單函數構成的有n+1個參數C0,C1,……Cn的函數類Φ(C0,C1,……Cn)中求出滿足條件P(xi)=f(xi)(i=0,1,…… n)的函數P(x),並以P()作為f()的估值。此處f(x)稱為被插值函數,x0,x1,……xn稱為插值結(節)點,Φ(C0,C1,……Cn)稱為插值函數類,上面等式稱為插值條件,Φ(C0,……Cn)中滿足上式的函數稱為插值函數,R(x)= f(x)-P(x)稱為插值余項。當估算點屬於包含x0,x1……xn的最小閉區間時,相應的插值稱為內插,否則稱為外插。

3基本類型

埃爾米特
對於函數f(x),常常不僅知道它在一些點的函數值,而且還知道它在這些點的導數值。這時的插值函數P(x),自然不僅要求在這些點等於f(x)的函數值,而且要求P(x)的導數在這些點也等於f(x)的導數值。這就是埃爾米特插值問題,也稱帶導數的插值問題。從幾何上看,這種插值要尋求的多項式曲線不僅要通過平面上的已知點組,而且在這些點(或者其中一部分)與原曲線「密切」,即它們有相同的斜率。可見埃爾米特插值多項式比起一般多項式插值有較高的光滑逼近要求。
三角函數
當被插函數是以2π為周期的函數時,通常用n階三角多項式作為插值函數,並通過高斯三角插值表出。
辛克插值 在抽樣信號中我們以使用辛克插值,它可以由樣品值完美地重建原始信號。著名的抽樣定理表述,對於正確的抽樣信號s(t),原始信號可以由抽樣值sk進行重建,其公式為:
+∞
s(t) = ∑ sksincπ(t-tk) (註:k為下標)
k=-∞
這裡sk代表在時間tk=t0+k*T時的抽樣值,T是抽樣時間,它的倒數1/T叫做抽樣頻率。此公式表示,已知在規則分佈的區間中的抽樣值sk,我們就可以根據辛克函數先測出抽樣值,然後將它們相加,這樣計算出任意時間t上的值。

4編程使用

matlab中使用插值函數
插值函數(the function of interpolation )
interp1
調用函數的格式(Syntax)
yi = interp1(x,Y,xi)
yi = interp1(Y,xi)
yi = interp1(x,Y,xi,method)
yi = interp1(x,Y,xi,method,'extrap')
yi = interp1(x,Y,xi,method,extrapval)
pp = interp1(x,Y,method,'pp')
調用格式說明(Description)
yi = interp1(x,Y,xi) 返回矢量X和Y決定的根據輸入的節點xi時對應的y的值.矢量Y是矢量X的一個函數映射.
如果Y是一個矩陣,那麼插值結果是一個對應的矩陣.
[===================================================
yi = interp1(x,Y,xi) returns vector yi containing elements corresponding to the elements of xi and determined by interpolation within vectors x and Y. The vector x specifies the points at which the data Y is given. If Y is a matrix, then the interpolation is performed for each column of Y and yi is length(xi)-by-size(Y,2).
===================================================]
yi = interp1(x,Y,xi,method)插值中可以使用的方法:
插值方法
說明
nearest
臨近的兩點插值
linear
線性插值(默認)
spline
三次樣條插值
pchip
分段三次Hermite插值多項式插值
cubic
(作用於pchip相同)
v5cubic
用matlab5版本中斷三次樣條插值
[====================================================
yi = interp1(x,Y,xi,method) interpolates using alternative methods:
methodDescription
nearestNearest neighbor interpolation
linearLinear interpolation (default)
splinesplineCubic spline interpolation
pchipPiecewise cubic Hermite interpolation
cubic(Same as 'pchip')
v5cubicCubic interpolation used in MATLAB 5
======================================================]
簡單程序示例
>>x=[0.0 0.1 0.195 0.3 0.401 0.5];
>>y=[0.39849 0.39695 0.39142 0.38138 0.368120.35206 ];
>>T=interp1(x,y,0..25,'linear') %線性插值
(返回結果T=0.3862)
>> T=interp1(x,y,0.25,'nearest') % 兩點插值
(返回結果T=0.3814)
>>T=interp1(x,y,0.25,'spline')  % 三次樣條插值
(返回結果T =0.3867)
>>T=interp1(x,y,0.25,'cubic') %三次插值
(返回結果T =0.3867)

5圖像處理

作用
插值是在不生成新的像素的情況下對原圖像的像素從新分佈,從而來改變像素數量的一種方法。在圖像放大過程中,像素也相應地增加,增加的過程就是「插值」發生作用的過程,「插值」程序自動選擇信息較好的像素作為增加、彌補空白像素的空間,而並非只使用臨近的像素,所以在放大圖像時,圖像看上去會比較平滑、乾淨。不過需要說明的是插值並不能增加圖像信息,儘管圖像尺寸變大,但效果也相對要模糊些,過程可以理解為白酒摻水。
傳統插值
最臨近像素插值:即將每一個原像素原封不動地複製映射到擴展后對應多個像素中。這種方法在放大圖像的同時保留了所有的原圖像的所有信息。在傳統圖像插值演算法中,最臨近像素插值較簡單,容易實現,早期的時候應用比較普遍。但是,該方法會在新圖像中產生明顯的鋸齒邊緣和馬賽克現象。
雙線性插值:雙線性插值法具有平滑功能,能有效地克服最臨近像素插值的不足,但會退化圖像的高頻部分,使圖像細節變模糊。
高階插值:在放大倍數比較高時,高階插值,如雙三次和三次樣條插值等比低階插值效果好。

相關評論

同義詞:暫無同義詞