Str*_*eem 16 opencv computer-vision
闪电问题在计算机视觉中很常见而且不是一件容易的事,但我只是想知道现在是否有适当的方法来检测和减少光反射以保存图像中的更多信息?我用OpenCV和Python尝试了几种没有运气的方法.
(带反射的图像)
(没有反射的图像)
我试图将图像分割为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)
Run Code Online (Sandbox Code Playgroud)
结果:
我也试图阈值图像找到明亮的空间,而不是使用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)
Run Code Online (Sandbox Code Playgroud)
没有有效消除眩光的通用方法。
HSV + CLAHE 是一个良好且常见的开始,但行业方法通过假设有关主题的一些信息(人脸、传送带上的水果、检眼镜中的视网膜)以及有时有关照明的信息(白色天花板灯与对于这个问题中的图像,边缘非常锋利)。