Как убрать легкий теневой цвет с изображения - PullRequest
0 голосов
/ 11 мая 2018

Я использую opencv для обработки некоторых изображений.У меня есть много изображений, как показано ниже.У них очень светлый теневой цвет.

Какой размер, определяющий цвет пикселя, очень светлый?Какое цветовое пространство я должен использовать для идентификации этих светлых цветных пикселей?

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Как уже упоминалось @RickM, для анализа вашего изображения доступны различные цветовые пространства.Поскольку вы сосредоточены на удалении тени / тени, вам необходимо сосредоточиться на каналах, которые содержат информацию о яркости, и оставить в стороне цветовые каналы.

В этом случае цветовое пространство LAB оказалось полезным.Канал яркости выразил много информации о количестве яркости в изображении

img = cv2.imread('4.png')
lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
l, a, b = cv2.split(lab)

cv2.imshow('Luminance', l)

enter image description here

Затем я получил порог и замаскировал результат с помощьюисходное изображение, чтобы получить mask1:

ret2, th = cv2.threshold(l, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
mask1 = cv2.bitwise_and(img, img, mask = th)
cv2.imshow('mask1', mask1)

enter image description here

Но теперь фон не тот, который вы предполагали.Я создал изображение с белыми пикселями того же размера (white) и замаскировал им перевернутое пороговое изображение, чтобы получить mask2:

white = np.zeros_like(img)
white = cv2.bitwise_not(white)

mask2 = cv2.bitwise_and(white, white, mask = cv2.bitwise_not(th))
cv2.imshow('mask2', mask2)

enter image description here

После добавления обоих этих изображений вы получите желаемое изображение:

cv2.imshow('fin_img', mask2 + mask1)

enter image description here

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

0 голосов
/ 11 мая 2018

Вот довольно простой метод:

img = cv2.imread('4.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

img[gray > 200] = 255

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