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

用Python+OpenCV對比圖像質量的幾種方法

 更新時間:2019年07月15日 15:53:53   作者:Jeru_d39e  
這篇文章主要介紹了用Python+OpenCV對比圖像質量過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

前言

圖片的本質就是大量像素在二維平面上的組合,每個像素點用數(shù)字化方式記錄顏色??梢灾庇^的想象,一張圖片就是一個巨大的電子柵格,每個格子內有一盞燈泡,這個燈泡可以變換256的三次方種顏色,就像下面這張卡通像素圖一樣,越清晰的圖片像素越密集。

這一次來看看OpenCV提供的兩種圖像質量對比方式(PSNR & SSIM)及其擴展, 這篇文章會涉及到一點數(shù)學公式,順便介紹一個我用過的生成公式的最佳在線編輯工具,秒殺所有收費工具。

鏈接在這里, 請收好: https://www.mathcha.io/editor

1. MSE對比

均方差 MSE(Mean Squared Error)對比, 思路是對兩張尺寸完全相同的圖片一個個像素進行對比,對比的數(shù)值就是顏色。注意下面公式有兩個維度,因為我們對比的圖像是像素矩陣,m and n 代表行數(shù)和列數(shù)。

MSE formula

MSE公式自己用numpy寫幾行代碼實現(xiàn),這里唯一要注意的是我找的圖片是彩色的,因為有BGR3個顏色通道所以MSE要除以3得到平均值。

有了核心邏輯后準備一下素材 - 著名的經典圖片Lena,再手工壓縮75%, 90%, 95%放置入lena folder. Lena是1972年12月花花公子的封面女郎,這張照片只是裸體插頁的1/3,下面少兒不宜部分被截斷了,未刪節(jié)原圖在卡耐基梅隆大學的網頁上還能找到(Warning: contains nudity)。

至于為什么選取她的照片,據(jù)說這張圖片包含了各種細節(jié),平滑區(qū)域,陰影和紋理,是完美的測試圖像。其實都是扯淡,主要因為她當年是個迷人的美女,深受老一代美國碼農歡迎。

2. PSNR對比

PSNR (Peak Signal to Noise Ratio)是最廣泛使用的一種圖像客觀評價指標,通常用來評價一副圖像壓縮后與原圖對比質量的好壞,這個值大概在30dB到50dB之間,PSNR值越高則壓縮后失真越小,如果差異非常明顯可能會得到15甚至更低的值。

所以MSE或者PSNR也好主要是對比完全一樣但是壓縮重構的圖片,OpenCV官方文檔說這也是逐幀比較視頻差異的最常用方式,畢竟它簡單,運行速度快。

但其呈現(xiàn)的差異有時候與人的主觀感受不一致,所以OpenCV還提供了結構相似性算法SSIM做出改進。下面是PSNR公式,也是在MSE基礎上的進一步擴展,這里MAX表示圖像顏色最大值,8bit圖像取值為255

3. SSIM對比

自然圖像具備高度結構性,臨近的像素間存在強相關性。

SSIM考慮了人眼的生物特征,是基于感知的計算模型,人類視覺系統(tǒng)就是從可視區(qū)域內獲取結構信息,所以我們也可以檢測結構信息的差異來對比圖片,這和MSE或者PSNR通過線性變換來分解信號有本質上的不同。

SSIM的測量體系由三個模塊組成: 亮度,對比度和結構。

三個模塊的對比函數(shù)組合之后得到SSIM的公式如下:

下面是完整代碼實現(xiàn)把三種score都打印出來看看,三種評測函數(shù)都直接改用了scikit-image庫提供的現(xiàn)成方法,實驗過結果和前面的實現(xiàn)是一樣的。SSIM的score范圍從-1到1,1表示和原圖完全一致。

下面繼續(xù)用SSIM來玩玩找不同游戲看看,我在網上找了兩張圖片,第一張是原圖,第二張是PS后有N處差異,看看如何用SSIM快速找出答案。

原圖

修改圖

新開一個文件來實現(xiàn)邏輯:首先載入文件并轉成grayscale, 并計算出SSIM; 核心邏輯在于line 22通過OSTU找出自適應閾值,line 23行根據(jù)這個閾值來提取輪廓,最后畫方框出來。

對比結果,一秒找出八處不同

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python中如何讓輸出不換行

    python中如何讓輸出不換行

    這篇文章主要介紹了python中如何讓輸出不換行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python如何使用Redis構建分布式鎖

    python如何使用Redis構建分布式鎖

    這篇文章主要介紹了python如何使用Redis構建分布式鎖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • 謹慎使用Python進行矩陣計算解析

    謹慎使用Python進行矩陣計算解析

    這篇文章主要介紹了使用Python進行矩陣計算原理解析,真正的單位矩陣,只有對角線元素為1,其他元素為0,用 np.identity(N) 生成單位矩陣,需要的朋友可以參考下
    2023-08-08
  • 圖鄰接矩陣可視化解析

    圖鄰接矩陣可視化解析

    這篇文章主要介紹了基于圖鄰接矩陣可視化解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python遺傳算法之單/多目標規(guī)劃問題

    python遺傳算法之單/多目標規(guī)劃問題

    本文主要介紹了python遺傳算法之單/多目標規(guī)劃問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • python使用正則表達式(Regular Expression)方法超詳細

    python使用正則表達式(Regular Expression)方法超詳細

    這篇文章主要介紹了python使用正則表達式(Regular Expression)方法超詳細,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • django 單表操作實例詳解

    django 單表操作實例詳解

    這篇文章主要介紹了django 單表操作實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python 帶你快速上手 Apache APISIX 插件開發(fā)

    Python 帶你快速上手 Apache APISIX 插件開發(fā)

    Apache APISIX Python Runner 來了,社區(qū)中的小伙伴們在開發(fā) Apache APISIX 插件時又多了一種新選擇,本文將用實列向大家介紹,需要的朋友可以參考下面文章內容
    2021-09-09
  • Python3實現(xiàn)旋轉數(shù)組的3種算法小結

    Python3實現(xiàn)旋轉數(shù)組的3種算法小結

    旋轉數(shù)組是一種常見的數(shù)據(jù)結構問題,通常是指一個有序數(shù)組經過旋轉后,使得所有元素逆序排列,本文主要介紹了Python3實現(xiàn)旋轉數(shù)組的3種算法小結,感興趣的可以了解一下
    2023-12-12
  • PyQt5每天必學之創(chuàng)建窗口居中效果

    PyQt5每天必學之創(chuàng)建窗口居中效果

    這篇文章主要介紹了PyQt5每天必學之創(chuàng)建窗口居中效果,使應用程序窗口顯示在屏幕的中心,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04

最新評論