2019年7月27日 星期六

Image Processing 影像的縮放

影像的放大和縮小,必伴隨影像中Pixel的增加或減少,而我們要討論的就是要增加或減少那些Pixel
現在主流的影像縮小放大演算法有以下三種

  • 最近鄰居法(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

沒有留言:

張貼留言