反射减少图像

时间:2017-06-15 13:39:14

标签: opencv computer-vision

闪电问题在计算机视觉中很常见而且不是一件容易的事,但我只是想知道现在是否有适当的方法来检测和减少光反射以保存图像中的更多信息?我已经尝试了几种使用OpenCV和Python的方法而没有运气。

(带反射的图像)

image with light reflection

(没有反思的图像)

image without light reflection

我尝试将图像分割为H,S,V色彩空间,并使用直方图均衡来均衡(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 after clahe equalization

我还尝试阈值图像以找到明亮的空间,而不是使用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)

结果: (阈值后) after threshold

after inpainting

1 个答案:

答案 0 :(得分:1)

没有有效去除强光的常规方法。

HSV + CLAHE是一个很好且常见的开始,但是行业方法通过假设一些有关主题的信息(人脸,传送带上的水果,通过检眼镜镜的视网膜)“欺骗”,有时还包括有关照明的信息(白色)边缘光线非常锐利的天花板灯,用于本问题中的图像。