Qt+OpenCV联合开发(⼆⼗五)--直⽅图均衡化
(equalizeHist)
⼀、简述直⽅图均衡化
直⽅图均衡化是通过拉伸像素强度分布范围来增强图像对⽐度的⼀种⽅法,可以⽤于图像增强、对输⼊图像进⾏直⽅图均衡化处理,提升后续对象检测的准确率在OpenCV⼈脸检测的代码演⽰中已经很常见。此外对医学影像图像与卫星遥感图像也经常通过直⽅图均衡化来提升图像质量。
⼆、函数原型
equalizeHist函数
c++原型
参数:
1. 输⼊图像
2. 输出图像
注:此函数只⽀持单通道图像(灰度图像)的均衡化
三、实现效果
下⾯三张分别对应原图、灰度图像、灰度图像均衡化
局部直方图均衡化
四、代码
void test1::hist_equalize(Mat &image)
{
Mat gray_img;
cvtColor(image,gray_img,COLOR_BGR2GRAY);
namedWindow("gray_img", WINDOW_FREERATIO);
imshow("gray_img", gray_img);//灰度图像
Mat dst;
equalizeHist(gray_img,dst);
namedWindow("hist_equalize", WINDOW_FREERATIO);
imshow("hist_equalize", dst);
}
抛出两个问题:
1、 这⾥直⽅图均衡化只⽀持灰度图像,怎么让它⽀持彩⾊图像?
因为直⽅图均衡化本质上是调整对⽐度(即亮度),亮度的值在HSV空间⾥⾯就是对应V通道,可以先把图像转到HSV空间之后,分离通道再对V通道单独均衡化,再merge回HSV图像⾥⾯去,最后再转换到RGB⾊彩空间⾥⾯,这样就可以完成彩⾊图像的均衡化,当然,也可以转成YCrCb⾊彩空间进⾏处理,效果⼀样,如下图所⽰
2、opencv中还有⼀个局部均衡化的函数,可以怎么⽤?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。