Как шумить изображение - PullRequest
       19

Как шумить изображение

0 голосов
/ 07 октября 2019

Я создаю приложение для распознавания некоторых картинок. Ниже приведен пример: enter image description here

Ниже приведен код, который я использовал для преобразования изображения:

img = cv2.imread('9jxs.png', 0)
ret1, th1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
ret2, th2 = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
plt.figure()
plt.subplot(221), plt.imshow(img, 'gray')
plt.show()

Очевидно, что результат изображения "9JXS", мой вопрос, как я могу удалить пиксель шума, очистить картинку, затем я могу использовать компоненты OCR для распознавания

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Для этого конкретного типа изображения линии выглядят намного темнее по сравнению с остальной частью изображения. Я нашел бы min() изображения и заменил бы все пиксели, попадающие в 10% минимального значения, на среднее или, что еще лучше, медианное значение соседей.

0 голосов
/ 07 октября 2019

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

import cv2 as cv
import numpy as np

def on_lb_trackbar(val):
    global lb
    lb = val
    cv.imshow(title, cv.erode(cv.inRange(img,lb,ub),erosion_kernel))

def on_ub_trackbar(val):
    global ub
    ub = val
    cv.imshow(title, cv.erode(cv.inRange(img,lb,ub),erosion_kernel))

img = cv.imread(r'udilN.png',cv.IMREAD_GRAYSCALE)

lb = 0
ub = 255
title = 'Range selection'
erosion_kernel = np.ones((5,3), np.uint8)

cv.namedWindow(title)
cv.createTrackbar('from', title , lb, 255, on_lb_trackbar)
cv.createTrackbar('to', title , ub, 255, on_ub_trackbar)

on_lb_trackbar(0)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...