opencv 直方图_28、 OpenCV直方图均衡化

  相机和图像传感器不仅必须适应场景中的自然对比度,还要管理图像传感器暴露于可用光照水平。在标准相机中,快门和镜头光圈设置用于确保传感器不会接收太多或太少的光线。然而,对于传感器的可用动态范围而言,特定图像中的对比度范围通常太大。因此,在捕获需要较长曝光时间的暗区和需要较短曝光以避免饱和“泛白”的明亮区域之间进行权衡。在许多情况下,两者都不能在相同的图像中有效地完成。

照片拍摄完成后,我们无法改变传感器记录的内容。但是,我们仍然可以采取措施并尝试扩大图像的动态范围以增加其对比度。最常用的技术是直方图均衡化。

直方图均衡化背后的基础数学涉及将一个分布映射到另一个分布。也就是说希望在新分布中尽可能均匀地分布原始分布的值。事实证明,映射函数应该是累积分布函数。可以使用累积分布函数将原始分布重新映射到均匀分布,只需在原始分布中查找每个值并查看均衡分布中应该去的位置。对于连续分布,结果将是精确的均衡,但对于数字化/离散分布,结果可能远不一致。

voidcv::equalizeHist(

constcv::InputArray src, // Input image

cv::OutputArraydst // Result image

);

在equalizeHist()中,源src必须是单通道,8位图像。目标图像dst将是相同的。对于彩色图像,必须将通道分开并逐个处理。关于直方图均衡化的更详细的介绍在之前《图像增强》中。这里就不再详述,给出一个例子看下怎么实现。

例1 直方图均衡化示例

#include

#include

usingnamespace std;

usingnamespace cv;

int main(intargc, char** argv)

{

    Mat src = imread("E:/均衡化.jpg",0);

    namedWindow("原图",0);

    imshow("原图",src);

    Mat dst;

    equalizeHist(src, dst);

    namedWindow("均衡化图",0);

    imshow("均衡化图",dst);

    waitKey(0);

    return 0;

}

55472f784800b61a024b72303fbfa55d.png

51b566ade2d3aa67d623a8b428ac426b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值