图像清晰度评价指标(Python)

最近在毕业设计中涉及了有关增强图像清晰度的实验,需要一些指标来进行实验结果的评估。刚好网上有个总结的非常好的博客(见参考文献[1]),但没有实现方法。因此,我将在我的博客中用Python实现。

评估方法实现

所有函数的具体说明都在参考文献[1]里,这里不做过多的赘述,只讨论实现
github:图像清晰度评估算法包(有示例)

1 Brenner 梯度函数
def brenner(img):
    '''
    :param img:narray 二维灰度图像
    :return: float 图像约清晰越大
    '''
    shape = np.shape(img)
    out = 0
    for x in range(0, shape[0]-2):
    	for y in range(0, shape[1]):
            out+=(int(img[x+2,y])-int(img[x,y]))**2
    return out
2 Laplacian梯度函数
def Laplacian(img):
    '''
    :param img:narray 二维灰度图像
    :return: float 图像约清晰越大
    '''
    return cv2.Laplacian(img,cv2.CV_64F).var()
3 SMD(灰度方差)
def SMD(img):
    '''
    :
### Halcon 中的图像清晰度评价指标 Halcon 是一款功能强大的图像处理软件,在工业自动化和质量检测领域广泛应用。为了评估图像的质量,Halcon 提供了一系列针对图像清晰度的计算工具[^2]。 #### 边缘锐度 边缘锐度是衡量图像中物体边界清晰程度的重要参数。通过对图像中的边缘进行分析,可以有效判断图像是否聚焦良好。通常情况下,边缘明显,则说明图像清晰。 #### 对比度 对比度反映了不同区域之间亮度差异的程度。良好的对比度意味着前景与背景之间的区分更加显著,从而使得图像看起来更为鲜明。在自动对焦过程中,较高的局部对比度往往对应着更佳的焦点位置。 除了上述两种基本特性外,Halcon 还支持多种具体的清晰度评价算法: - **Brenner梯度法** 计算相邻两行像素间的最大差值平方和作为评分标准。这种方法能够很好地反映大尺度结构的变化情况。 - **Tenengrad梯度法** 利用Sobel算子求取整个画面内的绝对梯度总和。此方式综合考虑了各个方向上的变化趋势,适用于复杂场景下的快速评估。 - **Laplace梯度法** 应用拉普拉斯滤波器测量二阶导数分布状况。它特别适合捕捉细小纹理特征,并且对于噪声具有一定的抑制作用。 - **方差法** 统计区域内各点强度波动幅度大小。当目标处于最佳焦平面附近时,其内部细节最为丰富,因此对应的统计量也会达到极值。 - **能量梯度法** 将一维信号转换为频域表达形式后再累加模值平方得到最终得分。由于高频成分携带更多空间频率信息,所以能较好地区分不同程度模糊状态。 ```python import halcon as hl # 创建窗口显示原图 window_handle = hl.gen_window() hl.set_display_foreground(window_handle, 'black') hl.read_image('sample', window_handle) # 执行清晰度分析操作 sharpness_metric = hl.get_focus_measure(image='sample', method='tenengrad') print(f'Tenengrad Sharpness Metric: {sharpness_metric}') ```
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值