opencv中的resize 函數 的理解以及引申


一、什么是resize 函數:

  resize函數opencv中專門用來調整圖像大小的函數;

  opencv 提供五種方法供選擇分別是:

                   a.最近鄰插值——INTER_NEAREST;

                   b.線性插值   ——INTER_LINEAR;(默認值)

                   c.區域插值   ——INTER_AREA;(利用像素區域關系的重采樣插值)

                   d.三次樣條插值——INTER_CUBIC(超過4*4像素鄰域內的雙三次插值)

                   e.Lanczos插值——INTER_LANCZOS4(超過8*8像素鄰域的Lanczos插值)

  一般來說要縮小圖像用區域插值(INTER_AREA);要放大圖像一般用三次樣條插值(INTER_CUBIC)或者線性插值(INTER_LINEAR);

二、resize 5類算法的公式:

  以下圖來說明假設下圖的大小為m*n ,想通過resize 函數把尺度變化為m1*n1;

  a.最近鄰插值:

                                             

 

  b.線性插值(雙線性插值):

            

                                                                其中:u v 是相當於放縮后的圖像Dst相對於原圖像Src中對應位置的小數部分;用的是最近鄰插的公式;

 

  c.區域插值:  當放大圖像時類似最近鄰插值,當縮小圖像時候有不同的結果;能有效避免波紋出現;

 

      d.三次樣條插值(雙三次插值):使用的是4*4鄰域的像素雙3次插值  從(i-1,j-1)到(i+2,j+2)所有點的插值運算結果公式如下圖:

 

          

                                                             其中S(x)是對 sin(x*pi)/x  的逼近,為插值核;

  e.Lanczos插值:

                              其中:i,j 為縮放前的位置,水平相位值PH0 、PH1、PH2、PH3,垂直相位值PV0、PV1、PV2、PV3。具體如下圖所示

三、函數申明格式:

  C++:void resize (InputArray src, OutputArray dst,Size dsize,double fx=0;double fy=0,int interpolation=INTER_LINEAR);

  第一個參數:為輸入圖像;

  第二個參數:為輸出圖像;

  第三個參數:輸出圖像的大小;

  第四個參數:沿着水平軸的縮放系數;

  第五個參數:沿着垂直軸的縮放系數;

  第六個參數:插值方式默認為 INTER_LINEAR  線性插值;

四、具體的實驗數據結果:

  選取圖像的數據為3*3矩陣[5,3,1,1,1,1,0,1,0];擴大到6*6的矩陣結果圖

       

  

選取圖像的數據為6*6矩陣縮小到3*3矩陣的結果圖

        

 

 

 

 

 

 

   結論:對於放大圖像來說方法越復雜,求出來的數據效果越好,同樣的計算時間也會提高(后面會驗算時間),區域插值結果與最近鄰插結果一樣;

      對於縮小圖像來說方法越復雜,求出來的數據效果越好,同樣的計算時間也會提高(后面會驗算時間),區域插值結果與線性插值結果一樣;

 

五、具體圖像運算結果

 

 

 

 

    縮小圖像用區域插值;放大圖像用三次樣條插值(速度慢);線性插值(速度快);

六、算法的具體時間測試,用一張400*400的圖像進行測試:  單位是 MS  用的clock_t  函數測試  循環100次然后 折算成MS

縮小成200*200像素圖像的測試結果

  最近鄰插   雙插線性  區域插值  雙三插值   LANCZOS4

 

 

 

擴大成為 800*800像素圖像的測試結果

 

 最近鄰插 雙插線性 區域插值雙三插值 LANCZOS4

 

 

 

    

 

  

  PS:如果自己計算會發現結果不正確,根源在於圖像中心opencv修正過;修正公式為:

 

  

 

 

 

 

 

 

  

 

 

 

 

 

 

 

  

 


免責聲明!

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



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