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

Python圖像處理之圖像清晰度評價(jià)

 更新時間:2022年12月05日 10:57:40   作者:夏天是冰紅茶  
圖像清晰度評價(jià),顧名思義就是能夠通過一張標(biāo)準(zhǔn)圖,對同一組相機(jī)拍攝的照片進(jìn)行清晰度評價(jià)。本文將利用Python實(shí)現(xiàn)這一效果,需要的可以參考一下

0、實(shí)現(xiàn)效果

能夠通過一張標(biāo)準(zhǔn)圖,對同一組相機(jī)拍攝的照片進(jìn)行清晰度評價(jià)。

1、概述

圖像清晰度是用來指導(dǎo)調(diào)焦機(jī)構(gòu)找到正焦位置的評價(jià)函數(shù)。理想的清晰度評價(jià)曲線類似于泊松分布,請看下圖:

p點(diǎn)對應(yīng)于正焦位置,P1 和P2 為正焦位置焦前和焦后采集到圖像的清晰度評價(jià)結(jié)果。

正焦的圖像比模糊的離焦圖像邊緣要更加的銳利清晰,相應(yīng)的邊緣像素灰度值變化大,因而會有更大的梯度值,從數(shù)學(xué)的角度來看圖像,它是二維的離散矩陣,利用梯度函數(shù)可獲取圖像的灰度信息,來判別圖像的清晰度,在離散信中梯度表現(xiàn)為差分形式。

2、模糊度分類

1、運(yùn)動模糊

運(yùn)動模糊是在捕獲圖像時,快門在打開時間內(nèi)成像系統(tǒng)和拍攝 對象的短暫相對運(yùn)動,造成成像在某個方向上形成的模糊。

2、壓縮模糊

壓縮模糊是圖像在進(jìn)行有損壓縮丟失部分信息。

3、高斯模糊

高斯模糊是人為引入的一種模糊,使用高斯低通濾波器對原始圖像進(jìn)行濾波得到的。

3、清晰度量化指標(biāo)

Brenner

Brenner梯度函數(shù)是最簡單的梯度評價(jià)函數(shù),它只是簡單的計(jì)算相鄰兩個像素灰度差的平方,該函數(shù)定義如下:

f(x,y) 表示圖像f對應(yīng)像素點(diǎn)(x,y)的灰度值,D(f)為圖像清晰度計(jì)算結(jié)果。

python實(shí)現(xiàn):

def brenner(img):
    '''
    :param img:narray 二維灰度圖像
    :return: int 圖像越清晰越大
    '''
    shapes = np.shape(img)
    output = 0
    for x in range(0, shapes[0]-2):
        for y in range(0, shapes[1]):
            output+=(int(img[x+2,y])-int(img[x,y]))**2
    return output

能量梯度函數(shù)(Energy of Gradient)

將 x 方向和 y 方向的相鄰像素的灰度值之差的平方和作為每個像素點(diǎn)的梯度值,對所有像素梯度值累加作為清晰度評價(jià)函數(shù)值,表達(dá)式如下所示:

python實(shí)現(xiàn):

def EOG(img):
    '''
    :param img:narray 二維灰度圖像
    :return: int 圖像越清晰越大
    '''
    shapes = np.shape(img)
    output = 0
    for x in range(0, shapes[0]-1):
        for y in range(0, shapes[1]-1):
            output+=((int(img[x+1,y])-int(img[x,y]))**2+(int(img[x,y+1])-int(img[x,y]))**2)
    return output

Roberts

Roberts函數(shù)與能量梯度函數(shù)相似,它是利用對角方向像素點(diǎn)灰度值之差。將4個相鄰像素點(diǎn)的灰度值交叉相減的平方和作為每個像素點(diǎn)的梯度值,對所有像素梯度值累加作為清晰度評價(jià)函數(shù)值,表達(dá)式如下式所示:

python實(shí)現(xiàn):

def Roberts(img):
    '''
    :param img:narray 二維灰度圖像
    :return: int 圖像越清晰越大
    '''
    shapes = np.shape(img)
    output = 0
    for x in range(0, shapes[0]-1):
        for y in range(0, shapes[1]-1):
            output+=((int(img[x+1,y+1])-int(img[x,y]))**2+(int(img[x+1,y])-int(img[x,y+1]))**2)
    return output

Laplace

采用Laplace算子與圖像各個像素點(diǎn)的灰度值進(jìn)行卷積得到一個梯度矩陣記為,取各像素點(diǎn)梯度的平方和作為評價(jià)函數(shù),如下式所示:

python實(shí)現(xiàn):

def Laplacian(img):
    '''
    :param img:narray 二維灰度圖像
    :return: int 圖像越清晰越大
    '''
    return cv2.Laplacian(img,cv2.CV_64F).var()

由于之前推導(dǎo)過,你可以查看此文,這是我以前所寫的一篇博客:圖像處理:邊緣檢測原理

SMD(灰度方差)函數(shù)

當(dāng)完全聚焦時,圖像最清晰,圖像中的高頻分量也最多,故可將灰度變化作為聚焦評價(jià)的依據(jù),灰度方差法的公式如下:

python實(shí)現(xiàn):

def SMD(img):
    '''
    :param img:narray 二維灰度圖像
    :return: int 圖像越清晰越大
    '''
    shape = np.shape(img)
    output = 0
    for x in range(1, shape[0]-1):
        for y in range(0, shape[1]):
            output+=math.fabs(int(img[x,y])-int(img[x,y-1]))
            output+=math.fabs(int(img[x,y]-int(img[x+1,y])))
    return output

SMD2 (灰度方差乘積)函數(shù)

SDM函數(shù)具有較好的計(jì)算性能,但其缺點(diǎn)也很明顯,即在焦點(diǎn)附近靈敏度不高,即該函數(shù)在極值點(diǎn)附近過于平坦,從而導(dǎo)致聚焦精度難以提高。在《一種快速高靈敏度聚焦評價(jià)函數(shù)》中李郁峰等人在論文中提出了一種新的評價(jià)函數(shù),稱之為灰度方差乘積法,即對每一個像素領(lǐng)域兩個灰度差相乘后再逐個像素累加,該函數(shù)定義如下:

python實(shí)現(xiàn):

def SMD2(img):
    '''
    :param img:narray 二維灰度圖像
    :return: int 圖像約清晰越大
    '''
    shape = np.shape(img)
    output = 0
    for x in range(0, shape[0]-1):
        for y in range(0, shape[1]-1):
            output+=math.fabs(int(img[x,y])-int(img[x+1,y]))*math.fabs(int(img[x,y]-int(img[x,y+1])))
    return output

4、圖像清晰度評價(jià)實(shí)現(xiàn)

SWD2:

import cv2
import pyps.pyzjr.definition as din
import pyps.pyzjr.utility as ult
 
 
image=ult.read_resize_image("./compare/8881.jpg",space=True)
img = din.SMD2(image)
print(img)
 
cv2.putText(image, f"definition:{img:.2f}", (10, 30),
            cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 3)
cv2.imshow("definition_Image", image)
 
cv2.waitKey(0)

Brenner:

Laplacian:

5、總結(jié)與評價(jià)

很遺憾,本次的清晰度評價(jià)失敗了,如果想要得到一個邊界值幾乎不可能實(shí)現(xiàn),哪怕通過大量圖像數(shù)據(jù)(模糊圖像與清晰圖像)也不能完成,因?yàn)檫@些清晰度量化指標(biāo)函數(shù)都是通過求圖像像素的梯度,換湯不換藥,在不同場景不同模糊的條件下很難去進(jìn)行比對。

到此這篇關(guān)于Python圖像處理之圖像清晰度評價(jià)的文章就介紹到這了,更多相關(guān)Python圖像清晰度評價(jià)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 以16進(jìn)制打印輸出的方法

    python 以16進(jìn)制打印輸出的方法

    今天小編就為大家分享一篇python 以16進(jìn)制打印輸出的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python2和Python3的共存和切換使用

    Python2和Python3的共存和切換使用

    這篇文章主要介紹了Python2和Python3的共存和切換使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • 通過python繪制華強(qiáng)買瓜的字符畫視頻的步驟詳解

    通過python繪制華強(qiáng)買瓜的字符畫視頻的步驟詳解

    要把華強(qiáng)賣瓜做成字符視頻大概分為三步,通過讀取視頻,把每一幀轉(zhuǎn)為字符畫,接著把字符畫表現(xiàn)出來,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-11-11
  • Python OS模塊實(shí)例詳解

    Python OS模塊實(shí)例詳解

    這篇文章主要介紹了Python OS模塊,結(jié)合實(shí)例形式總結(jié)分析了Python使用OS解析文件路徑、判斷文件、目錄等相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • python中的閉包和裝飾器的使用示例

    python中的閉包和裝飾器的使用示例

    閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù),例如在javascript中,只有函數(shù)內(nèi)部的子函數(shù)才能讀取局部變量,所以閉包可以理解成“定義在一個函數(shù)內(nèi)部的函數(shù),這篇文章主要介紹了python中的閉包和裝飾器的使用,需要的朋友可以參考下
    2022-11-11
  • python3獲取當(dāng)前文件的上一級目錄實(shí)例

    python3獲取當(dāng)前文件的上一級目錄實(shí)例

    下面小編就為大家分享一篇python3獲取當(dāng)前文件的上一級目錄實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python繪制立方體的方法

    python繪制立方體的方法

    這篇文章主要為大家詳細(xì)介紹了python繪制立方體的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python常用內(nèi)建模塊hashlib、hmac詳解

    Python常用內(nèi)建模塊hashlib、hmac詳解

    這篇文章主要介紹了Python常用內(nèi)建模塊hashlib、hmac詳解,摘要算法又稱哈希算法、散列算法,它通過一個函數(shù),把任意長度的數(shù)據(jù)轉(zhuǎn)換為一個長度固定的數(shù)據(jù)串,需要的朋友可以參考下
    2023-08-08
  • python實(shí)現(xiàn)四舍五入方式

    python實(shí)現(xiàn)四舍五入方式

    這篇文章主要介紹了python實(shí)現(xiàn)四舍五入方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • opencv調(diào)整圖像亮度對比度的示例代碼

    opencv調(diào)整圖像亮度對比度的示例代碼

    本文通過實(shí)例代碼給大家介紹了opencv調(diào)整圖像亮度對比度,代碼簡單易懂,非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評論