照明问题是常见的和困难的。如何检测和减少光反射,以保存更多的信息,从一幅图像?我用OpenCV和Python尝试过几种方法,但都没有成功。
(带有反射的图像)

(无反射图像)

我尝试转换到HSV颜色空间,并将直方图均衡化应用于V通道,并使用克拉赫均衡:
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)结果:

同时,我尝试了阈值化来找到明亮的像素,而不是使用图像修复来替换它们的相邻像素。
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)结果:(阈值后)


发布于 2019-08-17 17:29:23
目前尚无有效去除眩光的通用方法。
HSV + CLAHE是一个好的和常见的开端,但是业界的方法“欺骗”了一些关于被测对象的信息(人脸,传送带上的水果,通过检眼镜的视网膜),有时是关于照明的信息(这个问题中的图像有非常锐利的边缘的白色天花板灯)。
https://stackoverflow.com/questions/44569067
复制相似问题