zoukankan      html  css  js  c++  java
  • OpenCV---直方图的应用(均衡化和图像比较)

    一:全局直方图均衡化(对比度增强)equalizeHist

    def equalHist_demo(image):  #OpenCV直方图均衡化都是基于灰度图像
        gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
        dst = cv.equalizeHist(gray) #直方图均衡化,对比度增强
        cv.imshow("equalHist_demo",dst)
    1.cv2.equalizeHist函数原型:equalizeHist(src[, dst]) -> dst。函数equalizeHist的作用:直方图均衡化,提高图像质量。
    2.直方图均衡化:如果一副图像的像素占有很多的灰度级而且分布均匀,那么这样的图像往往有高对比度和多变的灰度色调。直方图均衡化就是一种能仅靠输入图像直方图信息自动达到这种效果的变换函数。
    它的基本思想是对图像中像素个数多的灰度级进行展宽,而对图像中像素个数少的灰度进行压缩,从而扩展像元取值的动态范围,提高了对比度和灰度色调的变化,使图像更加清晰。
    3.全局直方图均衡化可能得到是一种全局意义上的均衡化,但是有的时候这种操作并不是很好,会把某些不该调整的部分给调整了。
    Opencv中还有一种直方图均衡化,它是一种局部直方图均衡化,也就是是说把整个图像分成许多小块(比如按10*10作为一个小块),那么对每个小块进行均衡化。

    全局的对比度太强

    二:自适应的局部的直方图均衡化createCLAHE

    def clahe_demo(image):  #OpenCV直方图均衡化都是基于灰度图像
        gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
        clahe = cv.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))
        dst = clahe.apply(gray)  #将灰度图像和局部直方图相关联
        cv.imshow("clahe_demo",dst)
    1.createCLAHE函数原型:createCLAHE([, clipLimit[, tileGridSize]]) -> retval
    clipLimit参数表示对比度的大小。
    tileGridSize参数表示每次处理块的大小 。

     三:直方图的比较

    def create_rag_hist(image):
        h,w,c = image.shape
        rgbHist = np.zeros([16*16*16,1],np.float32)
        bsize = 256/16  #间隔是16
        for row in range(h):
            for col in range(w):
                b = image[row,col,0]
                g = image[row,col,1]
                r = image[row,col,2]
                index = np.int(b/bsize)*16*16 + np.int(g/bsize)*16 + np.int(r/bsize)
                rgbHist[np.int(index),0] = rgbHist[np.int(index),0] + 1
        return rgbHist
    
    def hist_compare(image1,image2):
        hist1 = create_rag_hist(image1)
        hist2 = create_rag_hist(image2)
        match1 = cv.compareHist(hist1,hist2,cv.HISTCMP_BHATTACHARYYA)   #巴氏距离比较,越小越相似
        match2 = cv.compareHist(hist1,hist2,cv.HISTCMP_CORREL)   #相关性比较(最大为1):越接近1越相似
        match3 = cv.compareHist(hist1,hist2,cv.HISTCMP_CHISQR)   #卡方比较,越小越相似
        print("巴氏:%s    相关性:%s  卡方:%s"%(match1,match2,match3))
    hist_compare(src,src)  #当我们使用两张一样的图像比较
    巴氏:0.0    相关性:1.0  卡方:0.0
  • 相关阅读:
    MQTT协议的简单介绍和服务器的安装
    Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
    gradle 命令
    git 命令学习
    PHP、JAVA、C#、Object-C 通用的DES加密
    JS中树形对象与数组之间的相互转换
    Javascript中的类型转换
    Javascript中的基本数据类型,如何判断数据类型,作用域链的理解
    前端面试题集锦(二)之CSS部分
    前端面试题集锦(一)之HTML部分
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9270608.html
Copyright © 2011-2022 走看看