Уменьшите нежелательный шум изображения с телефона с помощью open-cv - PullRequest
0 голосов
/ 02 июня 2019

У меня проблема с фотографией, снятой по телефону.Я не могу уменьшить нежелательный шум моей фотографии

Я пытался увеличить контраст и яркость, но это неэффективно

 img = cv2.imread(image_path, 0)

    blur = cv2.GaussianBlur(img, (5, 5), 0)
    thresh = cv2.adaptiveThreshold(blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11,
                                   2)  # Convert Image To Binary

    plt.imshow(img)

Это моя оригинальная фотография

original

Это мое фото после обработки

result

Это мое ожидаемое фото

expected

Ответы [ 2 ]

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

Я не понял, нужно ли вам также отфильтровывать следы от ручки, потому что в этом случае вам нужно что-то более сложное.В любом случае, в вашем коде ошибка только в

plt.imshow(img)

, вы просто строите свое оригинальное изображение, а не отфильтрованное ... попробуйте это

plt.imshow(blur)

или это

plt.imshow(thresh)

и проверить результаты

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

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

import cv2 as cv
import matplotlib.pyplot as plt

img = cv.imread('aa.jpg', 0)
blur = cv.medianBlur(img,11)
# blur = cv.GaussianBlur(img,(11,11),0)
thresh = cv.adaptiveThreshold(blur,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,\
            cv.THRESH_BINARY, 31, 4)

plt.subplot(121),plt.imshow(img)
plt.subplot(122),plt.imshow(thresh)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...