日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 实现图片质量比较之PSNR和SSIM

發(fā)布時間:2025/4/5 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 实现图片质量比较之PSNR和SSIM 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

圖片質(zhì)量評價

  • Python 實現(xiàn)圖片質(zhì)量比較之PSNR和SSIM
    • PSNR
      • skimge 實現(xiàn)
        • 完示例代碼
      • TensorFlow 實現(xiàn)
    • SSIM
      • 代碼實現(xiàn)

Python 實現(xiàn)圖片質(zhì)量比較之PSNR和SSIM

PSNR

PSNR,Peak Signal-to-Noise Ratio,峰值信噪比,是一個表示信號最大可能功率和影響它的表示精度的破壞性噪聲功率的比值的工程術(shù)語。由于許多信號都有非常寬的動態(tài)范圍,峰值信噪比常用對數(shù)分貝單位來表示。

PSNR 是用于衡量圖像質(zhì)量的指標,比如在圖像壓縮、超分辨率重建圖像等領(lǐng)域,其是一種重要的指標.

PSNR 常簡單的通過均方誤差(MSE)來定義. 比如,對于兩張單色圖像 I 和 K,如果一個為另外一個的噪聲近似,則二者之間的均方誤差定義為:

而峰值信噪比PSNR 的定義為:

其中,MAXIMAX_IMAXI? 表示圖像點顏色的最大數(shù)值,如果每個采樣點用 8 位表示,則最大數(shù)值為 255.

更通用的表示是,如果每個采樣點用 B 位線性脈沖編碼調(diào)制表示,則 MAXI=2B?1MAX_I = 2^B - 1MAXI?=2B?1,即:

類似地,對于每點有 RGB 三個值的彩色圖像來說,PSNR 的定義也是類似的,只是均方誤差是所有方差之和除以圖像尺寸再除以3。

MSE 越小,則 PSNR 越大;PSNR越大,代表著圖像質(zhì)量越好。

  • PSNR高于40dB說明圖像質(zhì)量極好(即非常接近原始圖像)
  • 在30-40dB通常表示圖像質(zhì)量是好的(即失真可以察覺但可以接受)
  • 在20-30dB說明圖像質(zhì)量差
  • 低于20dB圖像不可接受
  • skimge 實現(xiàn)

    安裝 skimage 庫

    pip install scikit-image

    skimage 庫也提供了相關(guān)的計算實現(xiàn).
    skimage.measure.compare_psnr

    from skimage.metrics import structural_similarity PSNR = peak_signal_noise_ratio(img1, img2)

    完示例代碼

    import cv2 from skimage.metrics import mean_squared_error from skimage.metrics import peak_signal_noise_ratioimg1 = cv2.imread('imgPred0.png') img2 = cv2.imread('imgPred01.png')MSE = mean_squared_error(img1, img2) PSNR = peak_signal_noise_ratio(img1, img2)print('MSE: ', MSE) print('PSNR: ', PSNR)

    TensorFlow 實現(xiàn)

    TensorFlow 中已經(jīng)包含 PSNR 計算的函數(shù),可直接采用.
    tf.image.psnr

    import tensorflow as tfdef read_img(path):return tf.image.decode_image(tf.read_file(path))def psnr(tf_img1, tf_img2):return tf.image.psnr(tf_img1, tf_img2, max_val=255)def main():t1 = read_img('t1.jpg')t2 = read_img('t2.jpg')#兩張圖像t1和t2的尺寸要完全一致with tf.Session() as sess:sess.run(tf.global_variables_initializer())y = sess.run(psnr(t1, t2))print(y)if __name__ == '__main__':main()

    SSIM

    SSIM,Structural Similarity,結(jié)構(gòu)相似性. 也是衡量兩幅圖片相似性的指標.

    結(jié)構(gòu)相似性的基本原理是,認為自然圖像時高度結(jié)構(gòu)化的,即相鄰像素間具有很強的關(guān)聯(lián)性,而這種關(guān)聯(lián)性表達了場景中物體的結(jié)構(gòu)信息. 人類視覺系統(tǒng)對于圖像已經(jīng)具有很強的理解與信息抽取能力,所以在衡量圖像質(zhì)量時,結(jié)構(gòu)性失真是很重要的考量.

    代碼實現(xiàn)

    同樣還是使用 skimage 庫進行代碼的實現(xiàn)

    import cv2 from skimage.measure import compare_ssimimg1 = cv2.imread('imgPred0.png') img2 = cv2.imread('imgPred01.png')SSIM = structural_similarity(img1, img2, multichannel=True)print('SSIM: ', SSIM)

    Ref

  • 圖片質(zhì)量比較之PSNR和SSIM
  • PSNR-峰值信噪比(原理及python代碼實現(xiàn))
  • 總結(jié)

    以上是生活随笔為你收集整理的Python 实现图片质量比较之PSNR和SSIM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。