zoukankan      html  css  js  c++  java
  • OpenCV:图像增亮与直方图均衡

    锐化

    Snipaste_2021-01-12_23-20-13

    左:去噪后锐化 中:原图 右:直接锐化

    不管是直接锐化,还是去噪后进行锐化,都会使得图像的噪声更加地严重,所以,去噪和锐化就先不做了,直接进行图像增亮和非线性拉伸

    增亮

    Snipaste_2021-01-16_19-32-41

    增亮使用加分进行增亮,防止乘法造成了像素值溢出。

    1. 利用opencv进行加法增亮时,有两种操作:

      • 直接进行加法,该方法若超过255的像素会被取模,导致处理后像素值可能变低

      • 使用cv2.add进行加法,该方法若超过255,则任然等于255。所以我们的处理使用的是这个方法

    2. 亮度值的选择

      分别尝试了30、40、50、60、80、100的增亮,可以发现,当亮度增量值为30时候,可以比原图看到更多的细节,且对比其他图,不会有明显的全局泛亮的效果,更有助于直方图均衡。

    自适应直方图均衡

    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(16, 16))
    img_his = clahe.apply(img_add)
    

    主要有两个超参数,一个是clipLImit决定均衡的阈值,一个是tileGridSize决定均衡的图像patch大小

    clipLimit调节

    Snipaste_2021-01-16_19-46-37

    1. 当阈值设为太小时,如1,导致对比度不够
    2. 当阈值设置太大时,如3和4,导致对比度太大
    3. 所以,选取了clipLimit=2.0作为第一个参数值

    tileGridSize调节

    Snipaste_2021-01-16_19-53-27

    1. 当该值设置太小时,对比度若一些,且取值4和8时候差别不大
    2. 当该值设置适当时,可以明显看到局部的对比度不同,通过比较,我认为取32较为合适

    最终效果图

    Snipaste_2021-01-16_19-56-46

    弹性纤维处理效果 左图:处理好 右图:处理前

    Snipaste_2021-01-16_19-58-27

    胶原纤维处理效果 左图:处理好 右图:处理前

    代码

    def img_enhanced(img, add=30, cliplimit=2.0, tilegridsize=32):
        img_add = cv2.add(img, add)
        clahe = cv2.createCLAHE(clipLimit=cliplimit, tileGridSize=(tilegridsize, tilegridsize))
        img_enhanced = clahe.apply(img_add)
        return img_enhanced
    
  • 相关阅读:
    [置顶] 图书推荐:SQL Server 2012 T-SQL基础 Itzik Ben-Gan
    UVA1366-----Martian Mining------DP
    动态规划——最长公共子序列(LCS)
    需求分析挑战之旅(疯狂的订餐系统)(3)——背景-需要-需求规格
    JavaScript学习笔记(四十四) 装饰器
    C中的volatile用法
    Java注解Annotation学习
    非常好!讲逻辑回归的,讲得很透彻
    RPC的学习 & gprotobuf 和 thrift的比较
    僵尸进程学习 & 进程状态列表 & Linux信号学习
  • 原文地址:https://www.cnblogs.com/zgqcn/p/14287235.html
Copyright © 2011-2022 走看看