JM8.6中關於PSNR(峰值信噪比), img->quad的解釋

來源:互聯網
上載者:User

JM8.6中關於PSNR(峰值信噪比), img->quad的解釋:

在JM代碼中,多次遇到img->quad這個東西,而在官方代碼中只給出了一句說明:


我開始看了好幾遍都沒有看懂,然後看到後面有snr,所以想應該和snr有關吧.

然後再代碼中尋找snr,發現jm代碼中有一個函數,然後就往下看,忽然發現這兒

在老畢的書上有


我們可以對比上面的公式發現,令n=8,我們可以得出代碼中的65025=(2^8-1)=255^2,所以主要是MSE的計算,而MSE是均方誤差,所以可以推斷出diff_y應該是誤差的平方,

我們看看diff_y的計算,


聯絡一下quad的含義,我突然感覺有些明白原代碼注釋中的"Array containing square values"的含義了.接著看看quad的賦值:


看511這個數字,多麼好的一個數字,它的出現和512一樣,256x2=512.

所以,我們可以知道這兒為quad數組分配了511個int空間大小:-255~0~255,正好511個,

看第二個紅框,這一句就將指標quad移到了255的位置,可以看


箭頭所指的位置就是現在指標的位置.我們再看一下for迴圈內部,在之前我看這一段代碼很是看不明白,為什麼數組的下標會使用負數,現在明白什麼意思了.所以for迴圈內部的即是將下標對應位置儲存為其平方,平方其實就是提前將MSE中所需要的誤差平方計算出來了,等真要計算誤差平方和的時候,只需要進行查表就可以了,可以提高速度.

再看這一句紅框內的其實是一個整數,因為這是原映像像素和重建映像像素之差,所以值可以為負,也可以為正,這樣通過這一句就直接得到了對應殘差的平方.所以到此為止,我終於明白了quad數組的用意了,同時也明白了snr在代碼中的實現.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.