当前位置: 首页 > news >正文

图像对比度调整(局域拉普拉斯滤波)

一、背景介绍

        之前刷对比度相关调整算法,找到效果不错,使用局域拉普拉斯做图像对比度调整,尝试复现和整理了下相关代码。

二、实现流程

1、基本原理

        对输入图像进行高斯金字塔拆分,对每层的每个像素都针对性处理,生产一组拉普拉斯金字塔图像,再图像重建,得到结果图像。

        具体处理上:

        a、针对每个像素点,以它原图位置为中心,在原图上取窗口区域ROI1。

        b、以当前高斯层的当前像素和它对应ROI1为输入,根据预定公式得到细节和对比度调整后的原图窗口图像ROI2。

        c、对ROI2进行和高斯金字塔一样层数的拉普拉斯金字塔拆分。

        d、 取当前拉普拉斯金字塔里面和当前处理像素所在高斯金字塔一样层数,一样位置的像素,作为最终生成的拉普拉斯图像对应层和对应位置的信息填充。

        具体算法细节上,已经有很多大佬讲过了,我这里就不特别展开了,感兴趣的小伙伴们可以参考:我为什么不是博士:局部拉普拉斯滤波(local laplican filter)

        另外由于该算法复杂度奇高,实际工作中基本上没法用起来,对这个算法其实有不少性能优化方案,比如可以参考:深度优化局部拉普拉斯金字塔滤波器。 不过我这里主要是学习为主了,后面有兴趣再复现它性能版本。

2、代码流程

        a、输入图像处理,生产对应高斯金字塔。

        b、对高斯金字塔每层和每个像素都逐个遍历处理(没有顺序依赖关系,可以随意并行处理)。

        根据如下流程,生成得到结果图像:

                1)获取高斯金字塔1中某个像素。

                2)该像素在原图位置为中心,从原图2中截取图像区域块,得到图像3。

                3)对图像3根据论文公式做纹理/对比度调整,得到图像4。

                4)对图像4进行拉普拉斯金字塔拆分得到局域块拉普拉斯5。

                5)根据高斯金字塔1上当前原始像素所在层数和像素位置,在拉普拉斯金字塔6上,同样对应层对应位置上,使用拉普拉斯5上对应层中心位置像素值填充。

                6)重复步骤2-5,遍历高斯金字塔1上所有像素,更新完所有拉普拉斯6像素值。

                7)对拉普拉斯6进行金字塔图像重建,得到最终结果图像7。

 

三、效果展示

        左边为输入图,右边是对比度调整后图像:

 

四、复现代码

        原始的复现代码路径如下:

        GitHub - psalvaggio/local_laplacian_filters: Local Laplacian Filters​        github.com/psalvaggio/local_laplacian_filters/tree/master

        我这边从里面抽取了下必要核心模块,整理地址如下:

        https://github.com/yulinghan/ImageQualityEnhancement/tree/master/ltm/Local_Laplacian_Filter​github.com/yulinghan/ImageQualityEnhancement/tree/master/ltm/Local_Laplacian_Filter

http://www.xdnf.cn/news/479305.html

相关文章:

  • 电子学会Python一级真题总结2
  • PHP 与 面向对象编程(OOP)
  • [250516] OpenAI 升级 ChatGPT:GPT-4.1 及 Mini 版上线!
  • 使用pytest实现参数化后,控制台输出的日志是乱码
  • 数学复习笔记 12
  • RabbitMQ ④-持久化 || 死信队列 || 延迟队列 || 事务
  • AWS Elastic Beanstalk控制台部署Spring极简工程(LB版)
  • Mysql存储过程(附案例)
  • LabVIEW光谱检测系统
  • 29、魔法微前端——React 19 模块化架构
  • 数值分析证明题
  • React底层架构深度解析:从虚拟DOM到Fiber的演进之路
  • 11.vue网页开启自动提交springboot后台查询-首页显示数据库表
  • Docker 无法拉取镜像解决办法
  • [MySQL排查] “Too many connections“ 错误?数据库最大连接数满了怎么办及优化
  • ProfibusDP主站转modbusTCP网关接DP从站网关通讯案例
  • 高可用消息队列实战:AWS SQS 在分布式系统中的核心解决方案
  • 数据科学和机器学习的“看家兵器”——pandas模块 之六
  • 微信小程序点击按钮跳转链接并显示
  • 低代码开发平台活字格v11.0——AI驱动效率革命
  • w~深度学习~合集3
  • Word图片格式调整与转换工具
  • 【科普】具身智能
  • 高效批量合并Word文档的工具介绍
  • 针对面试-微服务篇
  • React学习(一)
  • Vue百日学习计划Day9-15天详细计划-Gemini版
  • 执行apt-get update 报错ModuleNotFoundError: No module named ‘apt_pkg‘的解决方案汇总
  • 数据库行业竞争加剧,MySQL 9.3.0 企业版开始支持个人下载
  • 【Elasticsearch】flattened`类型在查询嵌套数组时可能返回不准确结果的情况