opencv学习笔记--直方图的均值化

opencv中图像的均值化都是基于灰度图的。

直方图的均值化能提高图片的对比度。

opencv学习笔记--直方图的均值化_第1张图片

    下面介绍两种方法

  • 自带函数均值化
  1. cv.equalizeHist()
  2. 参数: 输入一个8比特的单通道图像
  • 自定义均值化
  • 上述的直方图均衡化可以可能到是一种全局意义上的均衡化,但是有的时候这种操作并不是很好,会把某些不该调整的部分给调整了。Opencv中还有一种直方图均衡化,它是一种局部局部来的均衡化,也就是是说把整个图像分成许多小块(比如按10*10作为一个小块),那么对每个小块进行均衡化。这种方法主要对于图像直方图不是那么单一的(比如存在多峰情况)图像比较实用。Opencv中将这种方法称之为CLAHE,使用到的函数就是cv2.createCLAHE(),一个实例如下:
  1.           createCLAHE([, clipLimit[, tileGridSize]]) -> retval
  2. clipLimit参数表示对比度的大小。

    tileGridSize参数表示每次处理块的大小 。

import cv2 as cv
from matplotlib import  pyplot as plt


def equalHist_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    dst = cv.equalizeHist(gray)
    cv.imshow("equal", dst)


def myequal(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    clahe = cv.createCLAHE(clipLimit=5.0, tileGridSize=(8, 8))
    dst = clahe.apply(gray)
    cv.imshow("myequal", dst)


src = cv.imread("D://work//long.jpg")
cv.imshow("yuantu",src)
equalHist_demo(src)
myequal(src)
cv.waitKey(0)
cv.destroyAllWindows()

 

你可能感兴趣的:(opencv学习笔记--直方图的均值化)