Как сделать локализованное повышение контрастности отсканированного изображения с помощью OpenCV Python - PullRequest
0 голосов
/ 04 августа 2020

Я работал над проектом, и я хотел выполнить локальное усиление контраста / адаптивное усиление контраста на нескольких изображениях. Я пробовал установить порог, но это влияет на текст изображения. Прилагаю изображения ниже

Источник: ImageHere

Результат: ImageHere

Не работают глобальный контраст и другие функции . Пожалуйста, не предлагайте CLAHE Это дает очень странные результаты. Помогите, пожалуйста, спасибо.

1 Ответ

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

Вот один из способов сделать это в Python / OpenCV, используя нормализацию деления и некоторое повышение резкости.

  • Прочитать ввод
  • Преобразовать в оттенки серого
  • Размыть image
  • Разделить изображение в оттенках серого на размытое изображение
  • Применить резкость (по желанию)
  • Сохранить результаты

Ввод:

enter image description here

import cv2
import numpy as np
import skimage.filters as filters

# read the image
img = cv2.imread('math_questions.jpg')

# convert to gray
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# blur
smooth = cv2.GaussianBlur(gray, (95,95), 0)

# divide gray by morphology image
division = cv2.divide(gray, smooth, scale=255)

# sharpen using unsharp masking
result = filters.unsharp_mask(division, radius=1.5, amount=1.5, multichannel=False, preserve_range=False)
result = (255*result).clip(0,255).astype(np.uint8)

# save results
cv2.imwrite('math_question_division.jpg',division)
cv2.imwrite('math_question_division_sharpen.jpg',result)

# show results
cv2.imshow('smooth', smooth)  
cv2.imshow('division', division)  
cv2.imshow('result', result)  
cv2.waitKey(0)
cv2.destroyAllWindows()

Division image:

enter image description here

Sharpened result:

введите описание изображения здесь

...