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

一、背景介绍

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

二、实现流程

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

相关推荐
落樱弥城2 分钟前
角点特征:从传统算法到深度学习算法演进
人工智能·深度学习·算法
StarRocks_labs13 分钟前
StarRocks MCP Server 开源发布:为 AI 应用提供强大分析中枢
数据库·starrocks·人工智能·开源·olap·mcp
珂朵莉MM1 小时前
2024 睿抗机器人开发者大赛CAIP-编程技能赛-专科组(国赛)解题报告 | 珂学家
开发语言·人工智能·算法·leetcode·职场和发展·深度优先·图论
ㄣ知冷煖★1 小时前
【论文阅读】A Survey on Multimodal Large Language Models
人工智能·语言模型·自然语言处理
视觉语言导航2 小时前
兼顾长、短视频任务的无人机具身理解!AirVista-II:面向动态场景语义理解的无人机具身智能体系统
人工智能·无人机·具身智能
墨绿色的摆渡人2 小时前
pytorch小记(二十二):全面解读 PyTorch 的 `torch.cumprod`——累积乘积详解与实战示例
人工智能·pytorch·python
moonsims2 小时前
低空态势感知:基于AI的DAA技术是低空飞行的重要安全保障-机载端&地面端
人工智能·安全
若叶时代2 小时前
数据分析_Python
人工智能·python·数据分析
虾球xz2 小时前
游戏引擎学习第286天:开始解耦实体行为
c++·人工智能·学习·游戏引擎
武子康2 小时前
大语言模型 11 - 从0开始训练GPT 0.25B参数量 MiniMind2 准备数据与训练模型 DPO直接偏好优化
人工智能·gpt·ai·语言模型·自然语言处理