Удалить сетки из цветных изображений - PullRequest
0 голосов
/ 04 июня 2019

Существуют цветные изображения, на которых присутствуют сетки, и нам нужно удалить сетки с изображения, не затрагивая его особенности. Мы пробовали обнаружение краев Канни, фильтры Собеля, срединный фильтр, медианный фильтр, побитовый фильтр, фильтр удаления шумов и т. Д. И почти все возможные попытки, которые мы пробовали, но мы не можем получить соответствующие ответы, наше изображение размыто и сетки невозможно удалить из изображений, а важные части и полезные функции изображений стираются.

Мы хотим удалить сетки, не затрагивая функции (без размытия) изображения.

enter image description here

Мы предоставили ссылку на изображение ниже.

https://drive.google.com/open?id=14qKZv7pOeN6QbVmxZyk_TUu2usOekoWQ

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

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

    img = cv.imread(path_to_img)
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

    #use any good value that extract the grid, 15 should be good enough
    res, mask = cv.threshold(gray, 15, 255, cv.THRESH_BINARY_INV) 

    #just to better highlight the mask
    kernel = np.ones((3,3), np.uint8)
    dilation_image = cv.dilate(mask, kernel, iterations=2)

    dst = cv.inpaint(img, dilation_image, 15, cv.INPAINT_TELEA)
    #dst = cv.medianBlur(dst, 5) #optional, to check if needed
    cv.imshow("output", dst)

Ссылка для метода inpaint: https://docs.opencv.org/3.4.0/df/d3d/tutorial_py_inpainting.html

0 голосов
/ 04 июня 2019

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

enter image description here

img = cv2.imread('you_scan.png')
mask = cv2.threshold(img, 210, 255, cv2.THRESH_BINARY)[1][:,:,0] # if threshold can not achieve, use other tools for fixd position grid mask.
dst = cv2.inpaint(img, mask, 7, cv2.INPAINT_NS)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...