zoukankan      html  css  js  c++  java
  • opencv 修改图像对比度、图像亮度

    图像亮度

    以灰度图像为例,图像亮度指的是图像的明暗程度,图像的像素值整体越接近于255,图像越亮,反之越接近于0,图像越暗。

    图像对比度

    假设灰度图像的像素值的范围为[a,b],如果b-a的值越接近于255,图像对比度越大,看上去图像更清晰;反之越接近于0,图像越不清晰。

    修改图像的亮度和对比度

    OpenCV中亮度和对比度应用这个公式来修改:g(x)=αf(x)+β,其中:α(>0)、β常称为增益与偏置值,分别控制图片的对比度和亮度。

    实验:调整灰度图像亮度和对比度

    # 调整灰度图像的亮度和对比度
    import cv2 as cv
    import numpy as np
    
    img = cv.imread('baby_g.jpg',0)
    # 增加图像亮度
    # 注意需要使用cv.add(),不能直接x+y
    res1 = np.uint8(np.clip((cv.add(1*img,30)), 0, 255))
    # 增加图像对比度
    res2 = np.uint8(np.clip((cv.add(1.5*img,0)), 0, 255))
    tmp = np.hstack((img, res1, res2))  # 三张图片横向合并(便于对比显示)
    
    cv.imshow('image', tmp)
    cv.waitKey(0)
    cv.destroyAllWindows()
    

    实验结果

    实验结果:左图为原图,中图为增加亮度后,右图为增加对比度后

    实验:调整彩色图像亮度和对比度

    # 调整彩色图像的亮度和对比度
    import cv2 as cv
    import numpy as np
    
    img = cv.imread('paojie.jpg')
    img_t = cv.cvtColor(img,cv.COLOR_BGR2HSV)
    h,s,v = cv.split(img_t)
    
    # 增加图像亮度
    v1 = np.clip(cv.add(1*v,30),0,255)
    
    # 增加图像对比度
    v2 = np.clip(cv.add(2*v,20),0,255)
    
    img1 = np.uint8(cv.merge((h,s,v1)))
    img1 = cv.cvtColor(img1,cv.COLOR_HSV2BGR)
    img2 = np.uint8(cv.merge((h,s,v2)))
    img2 = cv.cvtColor(img2,cv.COLOR_HSV2BGR)
    
    tmp = np.hstack((img, img1, img2))  # 三张图片横向合并(便于对比显示)
    
    cv.imshow('image', tmp)
    cv.waitKey(0)
    cv.destroyAllWindows()
    

    实验结果

    实验结果:左图为原图,中图为增加亮度后,右图为增加对比度后

    增加图像清晰度:图像直方图均衡化:

    请参考优秀文章 灰度图像和彩色图像直方图全局均衡化和自适应均衡化

    增加图像对比度:图像直方图归一化:

    请参考优秀文章 图像直方图归一化

  • 相关阅读:
    cpp:博文_注意
    Algs4-1.2(非习题)String
    Algs4-1.2(非习题)几何对象中的一个2D用例
    Algs4-1.2.19字符串解析
    Algs4-1.2.18累加器的方差
    Algs4-1.2.17有理数实现的健壮性
    Algs4-1.2.16有理数
    Algs4-1.2.15基于String的split()的方法实现In中的静态方法readInts()
    Algs4-1.2.13实现Transaction类型
    Algs4-1.2.14实现Transaction中的equals()方法
  • 原文地址:https://www.cnblogs.com/wojianxin/p/12596070.html
Copyright © 2011-2022 走看看