現在主流的影像縮小放大演算法有以下三種
- 最近鄰居法(Nearest Neighbor):最簡單,最快速的算法。以影像的放大為例,作法是將放大影像的座標點換算回原始影像上,與原始影像哪個座標點最近,就取其Pixel值做為新Pixel值
- 雙線性插值(Bilinear Interpolation):視覺上會比Nearest Neighbor要好一些,但運算量稍大。以影像的放大為例,作法是將放大影像的座標點換算回原始影像上,通常不會是整數位置,若是小數位置即跟周圍的四個點按距離按比例計算Pixel,做為新Pixel值,以下為例子:欲求的點:P(x,y)
四鄰點:Q11(x1,y1)、Q12(x1,y2)、Q21(x2,y1)、Q22(x2,y2)
設距離:a' = x2 - x1 、b' = y2 - y1、a = x - x1 、b= y - y1
P(x,y) = ( (a'-a)(b'-b)Q11 + a(b'-b)Q21 + b(a'-a)Q12 + abQ22 ) / ( a' * b' ) - Bicubic Interpolation
反向映射計算方法,就是將放大或縮小的影像坐標乘上其倍數的倒數,即可大致得到其在原圖中的位置。
如:2*2 放大 2倍 --> 4*4。
4*4 像素點反向映射:
(0,0)*1/2 = (0,0),(1,0)*1/2 = (0.5,0),(2,0)*1/2 = (1,0),(3,0)*1/2 = (1.5,0)
(1,1)*1/2 = (0.5,0.5),(2,2)*1/2 = (1,1),(3,3)*1/2 = (1.5,1.5) .........
Reference:
https://jason-chen-1992.weebly.com/home/nearest-neighbor-and-bilinear-interpolation
https://blog.csdn.net/weixin_35811044/article/details/84242921
沒有留言:
張貼留言