最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python圖像處理之圖像清晰度評價

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

0、實現(xiàn)效果

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

1、概述

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

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

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

2、模糊度分類

1、運動模糊

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

2、壓縮模糊

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

3、高斯模糊

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

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

Brenner

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

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

python實現(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 方向的相鄰像素的灰度值之差的平方和作為每個像素點的梯度值,對所有像素梯度值累加作為清晰度評價函數(shù)值,表達(dá)式如下所示:

python實現(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ù)相似,它是利用對角方向像素點灰度值之差。將4個相鄰像素點的灰度值交叉相減的平方和作為每個像素點的梯度值,對所有像素梯度值累加作為清晰度評價函數(shù)值,表達(dá)式如下式所示:

python實現(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算子與圖像各個像素點的灰度值進(jìn)行卷積得到一個梯度矩陣記為,取各像素點梯度的平方和作為評價函數(shù),如下式所示:

python實現(xiàn):

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

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

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

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

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

python實現(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、圖像清晰度評價實現(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é)與評價

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

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

相關(guān)文章

  • Python數(shù)據(jù)結(jié)構(gòu)集合set教程示例詳解

    Python數(shù)據(jù)結(jié)構(gòu)集合set教程示例詳解

    這篇文章主要為大家介紹了Python數(shù)據(jù)結(jié)構(gòu)集合set教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Python中字典的緩存池

    Python中字典的緩存池

    這篇文章主要介紹了Python中字典的緩存池,字典的緩存池采用數(shù)組實現(xiàn)的,并且容量也是80個,下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-05-05
  • Python中__name__的具體使用

    Python中__name__的具體使用

    在Python中,__name__是一個內(nèi)置變量,用于表示當(dāng)前模塊的名稱,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • 高考要來啦!用Python爬取歷年高考數(shù)據(jù)并分析

    高考要來啦!用Python爬取歷年高考數(shù)據(jù)并分析

    轉(zhuǎn)眼間,高考的日子又要來臨了,不知道高考學(xué)子們準(zhǔn)備的怎么樣了,今天這篇文章簡單且隨意地分析一下高考的一些數(shù)據(jù),需要的朋友可以參考下
    2021-06-06
  • python網(wǎng)絡(luò)爬蟲精解之Beautiful Soup的使用說明

    python網(wǎng)絡(luò)爬蟲精解之Beautiful Soup的使用說明

    簡單來說,Beautiful Soup 是 python 的一個庫,最主要的功能是從網(wǎng)頁抓取數(shù)據(jù),Beautiful Soup 提供一些簡單的、python 式的函數(shù)用來處理導(dǎo)航、搜索、修改分析樹等功能,需要的朋友可以參考下
    2021-09-09
  • python實現(xiàn)模擬鍵盤鼠標(biāo)重復(fù)性操作Pyautogui

    python實現(xiàn)模擬鍵盤鼠標(biāo)重復(fù)性操作Pyautogui

    這篇文章主要為大家詳細(xì)介紹了python如何利用Pyautogui模擬鍵盤鼠標(biāo)重復(fù)性操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • pycharm社區(qū)版安裝node.js插件運行js代碼方法

    pycharm社區(qū)版安裝node.js插件運行js代碼方法

    PyCharm可以說是當(dāng)今最流行的一款Python IDE了,下面這篇文章主要給大家介紹了關(guān)于pycharm社區(qū)版安裝node.js插件運行js代碼的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Python 字典中的所有方法及用法

    Python 字典中的所有方法及用法

    這篇文章主要介紹了Python 字典中的所有方法及用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Python中itertools的用法詳解

    Python中itertools的用法詳解

    循環(huán)器(iterator)是對象的容器,包含有多個對象。這篇文章主要介紹了python itertools用法,需要的朋友可以參考下
    2020-02-02
  • Python sys.argv用法實例

    Python sys.argv用法實例

    這篇文章主要介紹了Python sys.argv用法實例,sys.argv[]是用來獲取命令行參數(shù)的,sys.argv[0]表示代碼本身文件路徑,其它則用來表示獲取輸入?yún)?shù),需要的朋友可以參考下
    2015-05-05

最新評論

仪陇县| 长沙市| 沂南县| 土默特右旗| 德庆县| 文水县| 肇州县| 封开县| 东明县| 靖江市| 阳东县| 阳新县| 家居| 繁峙县| 什邡市| 任丘市| 揭东县| 岑溪市| 左权县| 庆阳市| 西城区| 读书| 墨江| 斗六市| 上虞市| 会理县| 社旗县| 崇信县| 渭南市| 剑河县| 淄博市| 信宜市| 庆阳市| 张家港市| 阳朔县| 威信县| 文成县| 阳江市| 招远市| 静宁县| 黔西|