欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在python中計算ssim的方法(與Matlab結(jié)果一致)

 更新時間:2019年12月19日 10:01:54   作者:larryli007  
這篇文章主要介紹了在python中計算ssim的方法(與Matlab結(jié)果一致),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下

如下代碼可以計算輸入的兩張圖像的結(jié)構(gòu)相似度(SSIM),結(jié)果與matlab計算結(jié)果一致

// An highlighted block
import cv2
import numpy as np
def ssim(img1, img2):
  C1 = (0.01 * 255)**2
  C2 = (0.03 * 255)**2
  img1 = img1.astype(np.float64)
  img2 = img2.astype(np.float64)
  kernel = cv2.getGaussianKernel(11, 1.5)
  window = np.outer(kernel, kernel.transpose())
  mu1 = cv2.filter2D(img1, -1, window)[5:-5, 5:-5] # valid
  mu2 = cv2.filter2D(img2, -1, window)[5:-5, 5:-5]
  mu1_sq = mu1**2
  mu2_sq = mu2**2
  mu1_mu2 = mu1 * mu2
  sigma1_sq = cv2.filter2D(img1**2, -1, window)[5:-5, 5:-5] - mu1_sq
  sigma2_sq = cv2.filter2D(img2**2, -1, window)[5:-5, 5:-5] - mu2_sq
  sigma12 = cv2.filter2D(img1 * img2, -1, window)[5:-5, 5:-5] - mu1_mu2
  ssim_map = ((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) / ((mu1_sq + mu2_sq + C1) *
                              (sigma1_sq + sigma2_sq + C2))
  return ssim_map.mean()
def calculate_ssim(img1, img2):
  '''calculate SSIM
  the same outputs as MATLAB's
  img1, img2: [0, 255]
  '''
  if not img1.shape == img2.shape:
    raise ValueError('Input images must have the same dimensions.')
  if img1.ndim == 2:
    return ssim(img1, img2)
  elif img1.ndim == 3:
    if img1.shape[2] == 3:
      ssims = []
      for i in range(3):
        ssims.append(ssim(img1, img2))
      return np.array(ssims).mean()
    elif img1.shape[2] == 1:
      return ssim(np.squeeze(img1), np.squeeze(img2))
  else:
    raise ValueError('Wrong input image dimensions.')

img1 = cv2.imread("Test2_HR.bmp", 0)
img2 = cv2.imread("Test2_LR2.bmp", 0)
ss = calculate_ssim(img1, img2)
print(ss)

總結(jié)

以上所述是小編給大家介紹的在python中計算ssim的方法(與Matlab結(jié)果一致),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

您可能感興趣的文章:

相關(guān)文章

  • 一文掌握python中的時間包

    一文掌握python中的時間包

    這篇文章主要介紹了python中的時間包,主要包括datetime時間包,獲取當(dāng)前時間,獲取時間間隔及時間對象轉(zhuǎn)時間字符串的相關(guān)知識,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 對python中執(zhí)行DOS命令的3種方法總結(jié)

    對python中執(zhí)行DOS命令的3種方法總結(jié)

    今天小編就為大家分享一篇對python中執(zhí)行DOS命令的3種方法總結(jié),具有很好的參考價值,希望對大家有所幫助一起。一起跟隨小編過來看看吧
    2018-05-05
  • Selenium基于PIL實現(xiàn)拼接滾動截圖

    Selenium基于PIL實現(xiàn)拼接滾動截圖

    這篇文章主要介紹了Selenium基于PIL實現(xiàn)拼接滾動截圖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Python生成截圖選餐GIF動畫

    Python生成截圖選餐GIF動畫

    本篇文章主要介紹了Python生成截圖選餐GIF動畫,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 用Python將IP地址在整型和字符串之間輕松轉(zhuǎn)換

    用Python將IP地址在整型和字符串之間輕松轉(zhuǎn)換

    這篇文章主要給大家介紹了利用Python將IP在整型和字符串之間輕松轉(zhuǎn)換的相關(guān)資料,文中還跟大家分享了Python下利用正則表達(dá)式來匹配校驗一個字符串是否為ip地址的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • PyTorch 檢查GPU版本是否安裝成功的操作

    PyTorch 檢查GPU版本是否安裝成功的操作

    這篇文章主要介紹了PyTorch 檢查GPU版本是否安裝成功的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python異常繼承關(guān)系和自定義異常實現(xiàn)代碼實例

    Python異常繼承關(guān)系和自定義異常實現(xiàn)代碼實例

    這篇文章主要介紹了Python異常繼承關(guān)系和自定義異常實現(xiàn)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • python Celery定時任務(wù)的示例

    python Celery定時任務(wù)的示例

    這篇文章主要介紹了python Celery定時任務(wù)的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • pygame中blit()參數(shù)的使用及臟矩形動畫形成的說明

    pygame中blit()參數(shù)的使用及臟矩形動畫形成的說明

    這篇文章主要介紹了pygame中blit()參數(shù)的使用及臟矩形動畫形成的說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • python中的json數(shù)據(jù)和pyecharts模塊入門示例教程

    python中的json數(shù)據(jù)和pyecharts模塊入門示例教程

    JSON是一種輕量級的數(shù)據(jù)交互格式??梢园凑?JSON指定的格式去組織和封裝數(shù)據(jù),這篇文章主要介紹了python中的json數(shù)據(jù)和pyecharts模塊入門,需要的朋友可以參考下
    2022-12-12

最新評論