關於部落格
親子旅遊記錄
加一點點的心得感想
  • 78476

    累積人氣

  • 51

    今日人氣

    0

    追蹤人氣

Qt : 影像處理: Image Resizing by NNI

 一般影像幾何轉換都會用
Target - to - Source Mapping
也是就是將縮放後的影像 g(u, v)
計算它在原始影像 f 對映 的灰度值
但座標 (u, v) 對映至原來的座標 (x, y)
x 跟 y 可能不是整數
因此不能直接用 f(x,y) 代替 g(u, v)
所以必須用原始影像 f 在整數點的灰度值來推估非整數點的灰度值




推估非整數座標(x, y)灰度值的方法叫插補(interpolation)
最簡單的插補法就是 NNI (nearest neighbor interpolation)
也就是找離 (x, y) 最近的整數點 (xout, yout)
以 f(xout, yout) 代替未知的 f(x, y)
而 f(x, y) 就是縮放後 g(u, v) 的值

xout = int (x+0.5)
yout = int(y+0.5)


其中int 就是取整數,也就是 floor 運算。


開始寫程式



簡單的畫面佈置

按小的 tool button 就會啟動 FileDialog 讀取影像
Scaling Factor 就是縮放倍率
按《Nearest Neighbor Method》就會縮放影像,
並將結果顯示在大的 tool button 
按《Save Zoomed Image》就會啟動 FileDialog 將結果存放檔案中

主要程式碼如下


需要特別解釋的是變數(i, j) 是實數, 而(x, y) 是整數
另第45及第46行考量對映原影像座標可能會超出範圍
其實就是影像最右邊及最下邊的點取整數後可能會超出整數1
其他部份就容易理解!

另外,若縮放倍數 sf 大於1,就是放大
若縮放倍數 sf 小於1,就是縮小
sf 可以是任何實數!

--- end ---
相簿設定
標籤設定
相簿狀態