Как определить, размыто ли изображение, содержащее только текст, или нет в opencv - PullRequest
0 голосов
/ 07 августа 2020

Я преобразовал pdf в изображения jpef и пытаюсь вычислить, размыты ли текстовые изображения или нет. Я пробовал использовать лапласовский фильтр, но даже для хороших пиксельных изображений он дает разные значения дисперсии. Может ли кто-нибудь помочь мне определить, является ли мое текстовое изображение высоким или низким. Заранее спасибо !!

Image1

для этого изображения лапласовская дисперсия составляет 322, но если я сравниваю с несколькими изображениями с одинаковым качеством пикселей, значение находится в районе 500-1700 .

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Ваше изображение не размывается. Напротив, он очень резкий и скремблированный, так что любой тест, основанный на низкой силе градиента, завершится неудачно. угловой детектор). Некоторые из них не сильно повреждены, и их невозможно отличить от действительных символов.

0 голосов
/ 07 августа 2020

Один из способов - установить пороговое значение для изображения с разными значениями, а затем сравнить количество белых пикселей. Например,

  • Если бы текст был четким и черным, то результаты ненулевых пикселей были бы очень похожи для img1 и img2.

  • Если бы img был размытым, разница была бы больше.

      import cv2
      image_path = r"d:\temp\xLVXa.jpg"
      imgColor = cv2.imread(image_path)
      img = cv2.cvtColor(imgColor, cv2.COLOR_BGR2GRAY)
    
      ret1, img1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
      ret2, img2 = cv2.threshold(img,192,255,cv2.THRESH_BINARY)
    
      whitepixels1 = cv2.countNonZero(img1)
      whitepixels2 = cv2.countNonZero(img2)
    
      print("img1 white pixels - %d" % whitepixels1)
      print("img2 white pixels - %d" % whitepixels2)
    
...