python图像领域平均_模糊图像检测-无参考图像的清晰度评价

本文介绍了多种图像清晰度评价算法的Python实现,包括Tenengrad梯度函数、Laplacian梯度函数、SMD灰度方差函数等。通过计算图像的梯度、方差和熵等特性,评估图像的清晰度,适用于模糊图像检测。同时,讨论了传统方法的局限性和机器学习、深度学习在图像模糊检测中的应用。
摘要由CSDN通过智能技术生成

1f54c65c4cb55fbb1f00a6809239bbf9.png

需求:在一堆图像中找到模糊图像,背景虚化(景深模式)的照片定义为清晰照片。

传统的图像清晰度评价算法:

Tenengrad 梯度函数

Tenengrad 梯度函数采用Sobel算子分别提取水平和垂直方向的梯度值,基与Tenengrad 梯度函数的图像清晰度定义如下:

18168df1ffbffb49e9617ea0bccd1663.png

G(x,y) 的形式如下:

ff84888eba14c9cd43e36bc86760e41f.png

其中:T是给定的边缘检测阈值,Gx和Gy分别是像素点(x,y)处Sobel水平和垂直方向边缘检测算子的卷积,建议使用以下的Sobel算子模板来检测边缘:

c8498a7f03d1bb246de10a189437176b.png

python程序实现:

Laplacian 梯度函数

Laplacian 梯度函数与Tenengrad梯度函数基本一致,用Laplacian算子替代Sobel算子即可,该算子定义如下:

d4664188f6a2478619181b50df896aaf.png

因此基于Laplacian 梯度函数的图像星清晰度的定义如下:

9b84bf3a2660f5535e08e99a744b1892.png

其中G(x,y)是像素点(x,y)处Laplacian算子的卷积。

python程序实现:

#Laplacian梯度函数计算
def Laplacian(img):
    '''
    :param img:narray 二维灰度图像
    :return: float 图像越清晰越大
    '''
    return cv2.Laplacian(img,cv2.CV_64F).var()

SMD(灰度方差)函数

当完全聚焦时,图像最清晰,图像中的高频分量也最多,故可将灰度变化作为聚焦评价的依据,灰度方差法的公式如下:

c5c37145399552b3903488626f71f33a.png

python程序实现:

#SMD梯度函数计算
def SMD(img):
    '''
    :param img:narray 二维灰度图像
    :return: float 图像越清晰越大
    '''
    shape = np.shape(img)
    out = 0
    for x in range(1, shape[0]-1):
        for y in range(0, shape[1]):
            out+=math.fabs(int(img[x,y])-int(img[x,y-1]))
            out+=math.fabs(int(img[x,y]-int(img[x+1,y])))
    return out

SMD2 (灰度方差乘积)函数

灰度差分评价函数具有较好的计算性能,但其缺点也很明显,即在焦点附近灵敏度不高,即该函数在极值点附近过于平坦,从而导致聚焦精度难以提高。在文章《一种快速高灵敏度聚焦评价函数》中提出了一种新的评价函数,称之为灰度方差乘积法,即对每一个像素领域两个灰度差相乘后再逐个像素累加,该函数定义如下:

90d0ea61b8f00a59cbcc412e8cd9952f.png

python程序实现:

#SMD2梯度函数计算
def SM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值