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
    
  • 相关阅读:
    React 中使用 pdf.js 将 pdf 转换成图片
    html2pdf 无法导出 html 中 img 图片的解决方法
    js-xlsx 实现前端 Excel 导出(支持多 sheet)
    React 项目引入 Dva
    项目构建分析和 webpack 优化实践
    《写给大家看的设计书》读书笔记
    2019年六月前端面试经验总结
    UITableView .grouped 类型去除顶部间距
    Ant Design Upload 组件上传文件到云服务器
    家庭动物园下载链接
  • 原文地址:https://www.cnblogs.com/zgqcn/p/14287235.html
Copyright © 2011-2022 走看看