pycharm windows7
opencv3 python3
1)我们知道通过各种滤波可以使图片变得平滑,从数学上看其实是让像素和周边像素之间的梯度降低,或者说斜率变小。直观上看就是使得图片变得更加平滑。2)基本方法:基于上述判断,可以用的方法就比较多了,这里采用比较简单的方差判断法。方差:表达元素之间差异大小,方差越大表示图像模糊程度越小。方差越小表示越模糊。缺点:在背景比较模糊前景清晰图片判断可能会有误差,需要其他方法校正。
import numpy as npimport cv2 as cvimport mathfrom matplotlib import pyplot as plt采用时下流行的黑洞图image = cv.imread('c:\\heidong.jpg')cv.imshow('image', image)
转灰度,并计算拉普拉斯方差cv.imshow('gray', gray)grayVar = cv.Laplacian(gray, cv.CV_64F).var()print(grayVar)
# 均值滤波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)
# 高斯滤波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)
结果判断:原图灰度方差:1.412中值灰度方差:grayVar: 0.56688高斯灰度方差:gray_GaussianBlurVar: 0.56424双边灰度方差:gray_bilateralFilterVar: 0.56954经过滤波平滑后,方差变低,图片模糊了。符合预期效果
cv.Laplacian(gray, cv.CV_64F).var() 公式直接计算简单方便
要和原图比较,单纯数值意义不大