( 1 ) 使用下列內插演算法實作影像大小縮放調整程式
( a ) Neareast Neighbor Interpolation
( b ) Bilinear Interpolation
( c ) Bicubic Interpolation ( 加分)
( 2 ) 撰寫圖像轉程式
Neareast Neighbor Interpolation
主要演算法如下 :
Bilinear Interpolation
主要演算法如下 :
相較於NNL,Bilinear 所 scaling 出來的影像的失真度會大幅縮小,原因從演算法就能看出端倪,我們必須算出鄰近 p 的最近4個點的灰度值,並利用以下公式 :
f ( p ) = ( 1 - alpha ) * ( 1 - beta ) * f( a ) + ( alpha ) * ( 1 - beta ) * f( b ) + ( 1 - alpha ) * ( beta ) * f( c ) + ( alpha ) * ( beta ) * f( d )
圖(左)是 NNL 所設計出來的眼睛影像,圖(右)則是 Bilinear 設計出來的眼睛影像,我們很明顯地從眼球的鋸齒狀看出 Bilinear 的優化效果。
圖(左)是 NNL 所設計出來的肩膀影像,圖(右)則是 Bilinear 設計出來的肩膀影像,我們很明顯的看出肩膀弧度的位置,鋸齒狀的差異。
Image Rotated
主要公式如下 :
套用以上的公式,我們可以很簡單的做出旋轉圖片的效果。
30-degree :
180-degree
結論
綜觀以上兩種影像處理的演算法,我們知道若是從原圖找出越多的點的灰度值來做運算,所得出來的影像也會越趨近於實際的圖片,失真率也會大大的降低!








沒有留言:
張貼留言