Текст на цветных изображениях недостаточно четок для OCR позволяет четко распознавать текст на изображениях, поэтому мне нужно сделать текст более четким или четким.
После применения различных методов выделения текста из остальных изображений я получили изображение с достаточным контрастом/четкостью, чтобы перейти к следующему шагу: удалению шума и усилению пикселей изображения, формирующих текст. Результаты первой части показаны ниже:






Я применял разные методы, но ни один из них дать правильный результат. Основной метод, который я применил, заключается в следующем:
Код: Выделить всё
def posterize(img = None, image_path = None, level = 3):
if image_path:
image = cv2.imread(image_path)
else:
image = img
result = image.copy()
indices = np.arange(0,256)
divider = np.linspace(0, 255, level + 1)[1]
quantiz = np.intp(np.linspace(0, 255, level))
color_levels = np.clip(np.intp(indices/divider), 0, level - 1)
palette = quantiz[color_levels]
im2 = palette[image]
result = cv2.convertScaleAbs(im2)
return result
img = cv2.imread(image_path,cv2.IMREAD_GRAYSCALE)
blur = cv2.medianBlur(img,3)
post = posterize(blur, image_path = None, level = 5)
image = cv2.adaptiveThreshold(post,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
kernel = np.ones((2, 2), np.uint8)
final = cv2.dilate(image, kernel, iterations=1)
Поиск и рисование контуров:
Код: Выделить всё
edged = cv2.Canny(blur, 50, 100)
contours, hierarchy = cv2.findContours(edged, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 1)
Код: Выделить всё
ret,th = cv2.threshold(blur,90,255,cv2.THRESH_BINARY).
kernel = np.ones((2, 2), np.uint8)
image = cv2.erode(image, kernel, iterations=1)
kernel = np.ones((1, 1), np.uint8)
image = cv2.dilate(image, kernel, iterations=1)
Код: Выделить всё
image = cv2.fastNlMeansDenoising(img,None,20,7,21)
Мне нужно найти технику или метод, который достаточно очищает изображение, сохраняя при этом текст достаточно четким, чтобы оптическое распознавание текста могло его распознать.
Буду признателен любая помощь в этом отношении.
Заранее большое спасибо.
Подробнее здесь: https://stackoverflow.com/questions/791 ... t-with-ocr