多语言展示
当前在线:191今日阅读:26今日分享:39

使用python判断图片模糊程度

在图像处理中有时需要界定图片和原图相比的模糊程度,通过计算方差是一种比较简单的判断方法。
工具/原料
1

pycharm windows7

2

opencv3 python3

方法/步骤
1

1)我们知道通过各种滤波可以使图片变得平滑,从数学上看其实是让像素和周边像素之间的梯度降低,或者说斜率变小。直观上看就是使得图片变得更加平滑。2)基本方法:基于上述判断,可以用的方法就比较多了,这里采用比较简单的方差判断法。方差:表达元素之间差异大小,方差越大表示图像模糊程度越小。方差越小表示越模糊。缺点:在背景比较模糊前景清晰图片判断可能会有误差,需要其他方法校正。

2

import numpy as npimport cv2 as cvimport mathfrom matplotlib import pyplot as plt采用时下流行的黑洞图image = cv.imread('c:\\heidong.jpg')cv.imshow('image', image)

3

转灰度,并计算拉普拉斯方差cv.imshow('gray', gray)grayVar = cv.Laplacian(gray, cv.CV_64F).var()print(grayVar)

4

# 均值滤波img_Blur = cv.blur(gray, (5, 5))grayVar = cv.Laplacian(img_Blur, cv.CV_64F).var()cv.imshow('img_Blur', img_Blur)print('grayVar: ', grayVar)

5

# 高斯滤波gray_GaussianBlur = cv.GaussianBlur(gray, (7, 7), 0)gray_GaussianBlurVar = cv.Laplacian(gray_GaussianBlur, cv.CV_64F).var()cv.imshow('gray_GaussianBlur', gray_GaussianBlur)print('gray_GaussianBlurVar: ', gray_GaussianBlurVar)

7

结果判断:原图灰度方差:1.412中值灰度方差:grayVar:  0.56688高斯灰度方差:gray_GaussianBlurVar:  0.56424双边灰度方差:gray_bilateralFilterVar:  0.56954经过滤波平滑后,方差变低,图片模糊了。符合预期效果

注意事项
1

cv.Laplacian(gray, cv.CV_64F).var() 公式直接计算简单方便

2

要和原图比较,单纯数值意义不大

推荐信息