線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5023
推到 Plurk!
推到 Facebook!

影像處理-內插法取樣

 
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-28 12:40:39 IP:61.230.xxx.xxx 未訂閱
在影像處理中,例如:縮放(zoom)、改變大小(Resize)、補償(compensation) 常常會參考原圖,做取樣(sampling)的動作,就以縮小為例。為了將原圖縮小, 一般做法會以n點(pixel)取一點的方式取樣,長寬是原來的1/n所得到的圖面 積剛好是原來的 (1/n x 1/n)=1/(n^2)。為整數平方分之一倍。     如果縮小倍率不是整數平方,而是2倍、3倍,則取樣的位置將不一定都是 整數位置,座標涵有小數值。一般都不會考慮這小數值,直接取其整數值座標 取樣,也就是(2.3, 3.6)四捨五入取整數值,取樣值就是座標(2,4)的像素。 在一張像素都很相近(smooth)的圖,這樣取樣的方式,所造成的失真並不會 很嚴重。如果在一張顏色變化大的圖中取樣,所造成的失真值將為數可觀。 因為(2.3,3.6)座標的像素實際顏色,並不一定就(2,4)顏色,(2,3),(3,3)或(3,4) 的顏色,如果選錯了,黑的變成白的,就會照成很大的失真。 在為了怕選錯的兩難之際,我們可以用bilinear方法,求得介於相鄰四點形 成的bilinear曲面公式,代入非整數座標的可得像素值。bilinear公式有很多 種。我就不列舉,因為用不到,原因是參數很難解,計算複雜度很高。所以我們 簡化為內插法,以近似bilinear公式。 內插法是利用相鄰四點的像素值,依照已知的非整數座標相鄰距離的遠近,根 據比例求得取樣值。也就是接近哪個點就像那個點。距離近的取樣比例大,距 離遠的取樣比例小。 內插公式如下:
 
    clr(x,y) = (1-fx)*(1-fy)*clr1 +
                  fx *(1-fy)*clr2 +
               (1-fx)*   fy *clr3 +
                  fx *   fy *clr4 
非整數座標(x,y),顏色為clr(x,y),小數值為(fx,fy),整數值(Ix,Iy) 相鄰四點座標(Ix,Iy), (Ix+1,Iy), (Ix,Iy+1), (Ix+1,Iy+1) 顏色分別為 clr1 , clr2 , clr3 , clr4 可參考下圖 理論上,使用內插法求得縮放大小的圖片,相鄰像素之間會比直接取整數點更有連 續性,也就是更smooth。所以使用內插法取樣時,個人覺得除了取樣之外,同時也 做了低通濾波,處理後的圖片可再做一次銳化,使圖片更清晰。 附帶一提,當fx,fy固定在0.5時, 在mpeg壓縮中稱之為half-pixel, 使用half-pixel 運動估測所得到的PSNR可以提升大約[code]0.5 dB[\code], 相當可觀。只是相對的,處理速度變慢了一點。 下面連結是圖片縮放程式使用內插法,我是直接用RGB去做內插法,其實應該先轉 YUV處理之後,再轉回RGB比較適當。給大家參考指教。 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34732 發表人 - jerrykuo 於 2003/07/28 14:36:50
系統時間:2024-11-22 1:15:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!