Проблемы с освещением являются общими и сложными. Как обнаружить и уменьшить отражение света, чтобы сохранить больше информации с изображения? Я попытался несколько методов с OpenCV и Python без удачи.
(Изображение с отражением)
(Изображение без отражения)
Я попытался преобразовать в цветовое пространство HSV и применить выравнивание гистограммы к каналу V с выравниванием Clahe :
import cv2
import numpy as np
image = cv2.imread('glare.png')
hsv_image = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
h, s, v = cv2.split(hsv_image)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
v = clahe.apply(v)
hsv_image = cv2.merge([h, s, v])
hsv_image = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2RGB)
cv2.imwrite('clahe_h.png', hsv_image)
результаты:
Я также попытался установить пороговое значение, чтобы найти яркие пиксели, а затем использовать Image Inpainting, чтобы заменить их соседними пикселями.
import cv2
import numpy as np
image = cv2.imread('glare.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3,3), 0)
thresh = cv2.threshold(blurred, 225, 255, cv2.THRESH_BINARY)[1]
dst_TELEA = cv2.inpaint(image,thresh,3,cv2.INPAINT_TELEA)
cv2.imwrite('after_INPAINT.png',dst_TELEA)