首页 > 软件开发 > PYTHON >

使用python判断图片模糊程度

来源:互联网 2023-03-16 19:15:49 版权归原作者所有,如有侵权,请联系我们

在图像处理中有时需要界定图片和原图相比的模糊程度,通过计算方差是一种比较简单的判断方法。a08办公区 - 实用经验教程分享!

工具/原料

  • pycharm windows7
  • opencv3 python3

方法/步骤

  • 1

    1)我们知道通过各种滤波可以使图片变得平滑,从数学上看其实是让像素和周边像素之间的梯度降低,或者说斜率变小。直观上看就是使得图片变得更加平滑。a08办公区 - 实用经验教程分享!

    2)基本方法:a08办公区 - 实用经验教程分享!

    基于上述判断,可以用的方法就比较多了,这里采用比较简单的方差判断法。a08办公区 - 实用经验教程分享!

    方差:表达元素之间差异大小,方差越大表示图像模糊程度越小。方差越小表示越模糊。a08办公区 - 实用经验教程分享!

    缺点:在背景比较模糊前景清晰图片判断可能会有误差,需要其他方法校正。a08办公区 - 实用经验教程分享!

  • 2

    import numpy as npa08办公区 - 实用经验教程分享!

    import cv2 as cva08办公区 - 实用经验教程分享!

    import matha08办公区 - 实用经验教程分享!

    from matplotlib import pyplot as plta08办公区 - 实用经验教程分享!

    采用时下流行的黑洞图a08办公区 - 实用经验教程分享!

    image = cv.imread("c:heidong.jpg")a08办公区 - 实用经验教程分享!

    cv.imshow("image", image)a08办公区 - 实用经验教程分享!

    使用python判断图片模糊程度a08办公区 - 实用经验教程分享!

  • 3

    转灰度,并计算拉普拉斯方差a08办公区 - 实用经验教程分享!

    cv.imshow("gray", gray)a08办公区 - 实用经验教程分享!

    grayVar = cv.Laplacian(gray, cv.CV_64F).var()a08办公区 - 实用经验教程分享!

    print(grayVar)a08办公区 - 实用经验教程分享!

    使用python判断图片模糊程度a08办公区 - 实用经验教程分享!

  • 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)a08办公区 - 实用经验教程分享!

    使用python判断图片模糊程度a08办公区 - 实用经验教程分享!

  • 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)a08办公区 - 实用经验教程分享!

    使用python判断图片模糊程度a08办公区 - 实用经验教程分享!

  • 6

    # 高斯双边滤波gray_bilateralFilter = cv.bilateralFilter(gray, 10, 35, 35)gray_bilateralFilterVar = cv.Laplacian(gray_bilateralFilter, cv.CV_64F).var()cv.imshow("gray_bilateralFilter", gray_bilateralFilter)print("gray_bilateralFilterVar: ", gray_bilateralFilterVar)a08办公区 - 实用经验教程分享!

    a08办公区 - 实用经验教程分享!

    cv.waitKey(0)cv.destroyAllWindows()a08办公区 - 实用经验教程分享!

    使用python判断图片模糊程度a08办公区 - 实用经验教程分享!

  • 6该信息未经授权抓取自百度经验
  • 7

    结果判断:a08办公区 - 实用经验教程分享!

    原图灰度方差:1.409008475372512a08办公区 - 实用经验教程分享!

    中值灰度方差:grayVar: 0.5668145081805638a08办公区 - 实用经验教程分享!

    高斯灰度方差:gray_GaussianBlurVar: 0.5615168533254424a08办公区 - 实用经验教程分享!

    双边灰度方差:gray_bilateralFilterVar: 0.5145180366646954a08办公区 - 实用经验教程分享!

    经过滤波平滑后,方差变低,图片模糊了。a08办公区 - 实用经验教程分享!

    符合预期效果a08办公区 - 实用经验教程分享!

    使用python判断图片模糊程度a08办公区 - 实用经验教程分享!

  • 注意事项

    • cv.Laplacian(gray, cv.CV_64F).var() 公式直接计算简单方便
    • 要和原图比较,单纯数值意义不大

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!a08办公区 - 实用经验教程分享!


    标签: python

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号