用 OpenCV、Python 和拉普拉斯算子来计算图片中的模糊量
一、前言
在做ocr识别的时候,面对一些模糊照片的识别正确率不是很高,所以有必要对被识别照片做模糊判别,而用拉普拉斯方差值可以以浮点数的形势反应图片的模糊情况。
二、直接上核心代码
import cv2
def detect_pic_blur(img_path):
image = cv2.imread(img_path)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)# 图片的灰度值
fm = cv2.Laplacian(gray,cv2.CV_64F).var()
print(f'图片的拉普拉斯值为:>>{fm}')
# 阈值设置为 120,只有大于该值的图片才是清晰的(随实际情况而定)
threshold = 120
if fm <= threshold:
return False
return True
三、总结
拉普拉斯方差算法,该算法提供给我们一个浮点数来代表具体图像的“模糊度”。该算法快速,简单且易于使用——用拉普拉斯算子与输入图像做卷积然后计算方差即可。如果方差低于预定义阈值,图像就被标记为“模糊”。
必须明白阈值
是一个很重要的待调整参数,针对每一个数据集都需要重新设定,阈值太低会导致正常图片被误断为模糊图片,阈值太高会导致模糊图片被误判为正常图片。
四、类似博文链接
http://www.iot-online.com/IC/tech/2016/050729760.html?from=timeline