2014年3月13日 星期四

[03/13/14][HW2] Image Rotation


(1) nx , ny 先平移 (-ox,-oy),得到 nx2, ny2 
    nx2 = nx - ox , ny2 = ny - oy

(2) nx2, ny2 經由旋轉矩陣,旋轉 theta 度,得到對應的 x, y
     x = nx2 * cos(theta) + ny2 * sin(theta) + ox

(3) 再將 x, y 平移 (ox, oy)
    y = -nx2 * sin(theta) + ny2 * cos(theta) + oy

Code Implement




參考資料來源:

[03/13/14][HW2] Bilinear Interpolation


a, b, c, d 四個點的灰度值分別為 f(a), f(b), f(c), f(d),現在要來求 f(p)
假設 p 至 a 的水平距離為 alpha
假設 p 至 a 的垂直距離為 beta
由於abcd四點都是相鄰間距為1單位的格子點上
所以 p 至b 的水平距離為 (1-alpha)
所以 p 至c 的垂直距離為 (1-beta)
其它依此類推...

Bilinear 的精神就是影響力與距離成反比,所以
f(p) = (1-alpha)*(1-beta)*f(a)
         + alpha*(1-beta)*f(b)
         + (1-alpha)*beta*f(c)
         + alpha*beta*f(d)

Code Implement

附圖為 實際操作圖



[03/13/14][HW2] Nearest Neighbor Interpolation

找離 (x , y) 最近的整數點 (xout , yout),以 f(xout , yout) 代替未知的 f(x , y)
而 f(x , y) 就是縮放後的 g(u , v)的值。

假設
XRatio = NewWidth / OldWidth;
YRatio = NewHeight / OldHeight;

故將 u* XRatio + 0.5 取整數即為最靠近點之座標

Code Implement

附圖為 實際操作圖


參考資料來源:
朱式幸福