雙線性插值原理詳解


    在做圖像處理的時候,我們經常需要對圖像大小進行變換。在深度學習中,也經常會用到Upsample上采樣。而最常用的插值方法就是BiLinear雙線性插值。

  image_new = cv2.resize(image,(750,600),interpolation=cv2.INTER_LINEAR)

  m10 = nn.Upsample(scale_factor=2, mode='bilinear')

  m11 = nn.UpsamplingBilinear2d(scale_factor=2)

 那么雙線性插值到底是怎么一回事呢?

  以下圖為例,我們需要將左圖(線條交點為像素點,size:5x5)放大到右圖(size:12x8)。

                                   

  那么我們可以做下圖所示的一個投影變換示意圖。以顏色區分:紅色為原圖,藍色為新圖。

那么可以得到下圖所示的示意圖,紅色為縮放后的原圖,藍色為要求得的新圖。放到某一個局部就是一個雙線性插值問題。

雙線性插值動畫示意圖:

  現在搬出下面這張雙線性插值原理圖,x-y坐標系、已知Q12,Q22,Q11,Q21四個點的值,求P點值。

                                     

         首先在Q11Q21、Q12Q22方向上進行兩次線性插值,得到R1、R2;然后在R1R2方向再做一次線性插值,得到P點。這就是雙線性插值。

  雙線性插值關鍵的是P點在x,y兩個方向上相對已知Q點的位置。

  令:α = (x-x1) / (x2-x1)     β =  (y-y1) / (y2-y1)  ,則 R= Q11 + (Q21 - Q11) * α  = (1 - α)*Q11 + α*Q21,R= Q12 + (Q22 - Q12) * α  = (1 - α)*Q12 + α*Q22;

  P = (1 - β)*R1 + β*R2 =  (1 - β)(1 - α)*Q11 +  (1 - β)α*Q21 +  β*(1 - α)*Q12 + α*β*Q22 =  (1 - α)*( (1 - β)*Q11 + β*Q12 ) + α*( (1 - β)*Q21 + β*Q22)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM