1、最臨近點插值算法:
當一張(N*M)大小的圖像放大到((j*N)*(k*M))時,那么兩張圖像之間的像素點存在對應關系:
X1max / N = X2max / ( j * N ) ;
Y1max / M = Y2max / ( k * M ) ;
其中:X1max,Y1max為源圖像中兩個方向的像素個數;X2max,Y2max為放大之后的圖像兩個方向上的像素個數;
即可得到 j k;
x1 = x2 / j
y1 = y2 / k
放大之后(x2,y2)的像素信息按照上述公式,即可得到其對應的在源圖像中的像素點,然后將原圖像上的像素信息復制到(x2,y2);
如果得到的x1,y1不為整數,將其四舍五入為一個整數,
假設有一張3×3大小的圖像:
234 | 38 | 22 |
67 | 44 | 12 |
89 | 65 | 63 |
將其放大到4×4:
234 | 38 | 22 | 22 |
67 | 44 | 12 | 12 |
89 | 65 | 63 | 63 |
89 | 65 | 63 | 63 |
優點:占用內存小;缺點:放大之后的圖像有明顯的鋸齒,縮小失真;就是簡單的將原圖像中的像素信息簡單的copy到新的圖像中
2、雙線性內插值算法
與臨近點插值算法的直接把原圖像像素信息copy相比,雙線性內插值算法是將得到的原采樣點(浮點數)的附近點的四個像素點像素信息乘以權重得到新圖像的像素信息;
將臨近點插值算法中得到的x1(x1=j+t),y1(x1=k+u),其中,j k是整數部分;t u 是小數部分;
根據水平方向 t 計算出四個像素的權重。
Q11 = S(j,k) * (1-t) + S(j, k+1) * t;
Q22 = S(j+1, k) * (1-t) + S(j+1,K+1) *t
利用Q11, Q22的值,進行垂直方向權重計算得出計算采樣點值
D(x, y) = Q11*(1-u) + Q22 * u; 把Q11, Q22帶入,最終有等式:
D(x, y) = S(j, k) *(1-t)*(1-u) + S(j, k+1)*t*(1-u) + S(j+1,k)*(1-t)*u + S(j+1,k+1)*t*u
從而得出四個對應的權重系數分別為:
a = (1-t)*(1-u)
b = (1-t)*u
c = t*u
d = t*(1-u)
帶入公式一,即可得出目標像素的值。
優點:可以有效的抗鋸齒;缺點:算法沒有考慮邊緣和圖像的梯度變化
3、雙立方插值算法