HEVC(一)psnr原理以及計算方式


峰值信噪比經常用作圖像壓縮等領域中信號重建質量的測量方法,它常簡單地通過均方差(MSE)進行定義。兩個m×n單色圖像I和K,如果一個為另外一個的噪聲近似,那么它們的的均方差定義為:
image
其中,MAXI是表示圖像點顏色的最大數值,如果每個采樣點用 8 位表示,那么就是 255。

Int   iSize   = iWidth*iHeight;//m*nd

    UInt64 uiSSDtemp=0;
    for(Int y = 0; y < iHeight; y++ )
    {
      for(Int x = 0; x < iWidth; x++ )
      {
        Intermediate_Int iDiff = (Intermediate_Int)( pOrg[x] - pRec[x] );//遍歷獲取diff
        uiSSDtemp   += iDiff * iDiff;//diff的平方
      }
      pOrg += iOrgStride;//算上圖像的stride邊界 邊界沒有內容,但是會在圖像中
      pRec += iRecStride;
    }
    const Int maxval = 255 << (pcPic->getPicSym()->getSPS().getBitDepth(toChannelType(ch)) - 8);//MAXI是表示圖像點顏色的最大數值,如果每個采樣點用 8 位表示,那么就是 255。現在獲取當前ch的采樣點比特位數,並進行位移
    const Double fRefValue = (Double) maxval * maxval * iSize;//MAXi的平方除以MSE,MSE=diff*diff/size,因此psnr等價於 (MAXi的平方*size)/(diff*diff)
    dPSNR[ch]         = ( uiSSDtemp ? 10.0 * log10( fRefValue / (Double)uiSSDtemp ) : 999.99 );//這塊沒看懂為什么有個999.99,大概是設個INF,防止讀取時為空吧
    MSEyuvframe[ch]   = (Double)uiSSDtemp/(iSize);//每個像素塊的均值

參考博客:
https://blog.csdn.net/xrinosvip/article/details/88569111


免責聲明!

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



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