当前位置:   article > 正文

hsv 直方图均衡化_Opencv从零开始 - 「启蒙篇」- 直方图、直方图均衡和反向投射...

hsv直方图

本文主要介绍一些opencv关于直方图的一些知识运用,直方图是非常常用的图像处理方法,有时候在很多图像预处理中能起到特别好的效果,大家可以一起来学习探讨~


目录

  • 直方图
  • 计算直方图
  • 直方图均衡化
  • CLAHE 自适应均衡化
  • 2D直方图
  • 直方图反射投影

直方图

✏️ 问:什么是直方图?

️ 答:直方图是可以对整幅图的灰度分布进行整体了解的图示,通过直方图我们可以对图像的对比度、亮度和灰度分布等有一个直观了解。

计算直方图

  • 使用opencv的函数cv2.calcHist(images, channels, mask, histSize, ranges):
    • 参数1:要计算的原图,以方括号的传入,如:[img]。
    • 参数2:类似前面提到的dims,灰度图写[0]就行,彩色图B/G/R分别传入[0]/[1]/[2]。
    • 参数3:要计算的区域ROI,计算整幅图的话,写None。
    • 参数4:也叫bins,子区段数目,如果我们统计0-255每个像素值,bins=256;如果划分区间,比如0-15, 16-31…240-255这样16个区间,bins=16。
    • 参数5:range,要计算的像素值范围,一般为[0,256)。
hist = cv2.calcHist([img], [0], None, [256], [0, 256])  # 性能:0.025288 s
  • 使用numpy的函数 np.bincount():
    • 用Numpy的函数计算,其中ravel()函数将二维矩阵展平变成一维数组.
hist = np.bincount(img.ravel(), minlength=256)  # 性能:0.003163 s
  • 绘制直方图使用Matplotlib自带的绘制工具plt.hist()绘制。
plt.hist(img.ravel(), 256, [0, 256])

✔️ 当然,也可以用前面计算出来的结果绘制:

plt.plot(hist)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/46668
推荐阅读
相关标签
  

闽ICP备14008679号