采集图像时,一天中不同时间光照变化会影响目标检测的效果,尝试通过图像锐化来解决这个问题,效果不是太好,然后又想到HSV格式图像,将亮度V分量均衡化的方法。
OpenCV中有专门的函数可以将彩色图像的通道进行分离或合并,笔者将BGR格式图像转换为HSV格式,提取亮度V分量做均衡化处理,再重新将通道合并。
void equalize_HSV_V(Mat& srcImg)
{
Mat HSV;
vector<Mat> hsvSplit;
/*转换为HSV格式,对V分量进行均衡化*/
cvtColor(srcImg, HSV, COLOR_BGR2HSV); //图像格式转换为HSV
split(HSV, hsvSplit); //分出图像各通道
equalizeHist(hsvSplit[2], hsvSplit[2]);//均衡图像V分量
merge(hsvSplit, HSV); //合并图像各通道
cvtColor(HSV, srcImg, COLOR_HSV2BGR); //图像格式转换回BGR
}
笔者在不同灯光下拍摄书籍的图像,进行对比测试如下
在笔者的示例中,因为拍摄的图像色彩、亮度均比较单一,HSV图像中V分量相对集中,在均衡化后V分量的分布范围扩大到0~255,也提高了图像的对比度。
对RGB、HSV图像均可按该方式对某一单独通道进行图像处理。