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

图像锐化调整

一、背景介绍

        之前找多尺度做对比度增强时候,发现了一些锐化相关算法,正好本来也要整理锐化,这里就直接顺手对之前做过的锐化大概整理了下,方便后续用的时候直接抓了。

        这里整理的锐化主要是两块:一个是参考论文:IEBPT(DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOOSTING), 另一个是在usm基础上,加上边缘方向信息,改善噪声和黑白边问题。

二、实现流程

1、IEBPT

        这个的算法原理很简单,大概意思来说,将输入图像依次进行三次不同强度的高斯平滑后,做图像之间减法,获得不同程度的细节信息,然后通过一定的组合方式把这些细节信息融合到原图中,从而得到锐化之后图像。

 

        感兴趣小伙伴可以参考资料:多尺度的图像细节提升。

        算法效果图如下(左边是原图,右边是算法结果):

 

        可以看到锐化效果很明显,但是也有明显副作用:噪声放大和明显黑白边问题。

2、usm原始版本

        考虑抗噪声干扰,直接常见的usm 锐化,算法原理很简单:对输入图像进行高斯平滑,然后和原图相减得到纹理残差图像,残差图像上强度值信息小于一定阈值的当做噪声过滤掉,非噪声部分叠加回原图,得到细节增强后图像。感兴趣的小伙伴,可以参考资料:Unsharp Mask(USM)锐化算法的的原理及其实现。

        算法效果图如下(左边是原图,右边是算法结果):

 

        可以看到同样的,锐化效果明显,但是也存在不小的副作用:

                a、噪声过滤不干净,无纹理区域比较大的噪声被增强,变得更加突兀。

                b、黑白边也很明显。

3、usm改进版本

        尝试在usm原版版本上,加入边缘纹理检测,简单来说就是只在纹理区域进行图像锐化,并且通过边缘强度抑制,改善黑白边问题。

        因此首先需要进行抗噪声干扰的边缘检测,我这里是使用滤波核,对输入图像进行x,y和两个对角线方向滤波,滤波叠加结果作为边缘信息,相关原理感兴趣小伙伴可以参考资料:

6079:图像处理学习笔记(十四)——图像边缘锐化的基本方法(理论篇)

        检查得到的边缘信息如下:

 

        可以看到,边缘图像上噪声基本能过滤掉,并且根据边缘纹理信息,可以进行锐化强度控制。由于黑白边通常都是出现在强边附近,并且对强边来说,实际并不需要特别重的图像锐化,因此可以通过对强边缘锐化强度降低,改善黑白边问题。

 

        通过抑制边缘强度大于或者小于一定范围的像素锐化强度,来避免噪声放大和黑白边异常。

        算法效果图如下(左边是原图,右边是算法结果):

 

        可以看到,黑白边和无纹理去噪噪声放大情况相对会好不少。

        其实还有进一步改进空间,比如前面的边缘检测结果图,明显存在一些边缘不连续情况,可以考虑在多尺度上进行边缘检测,然后叠加结果作为最终边缘检测结果等。

三、复现代码

        简单的复现代码地址:

https://github.com/yulinghan/ImageQualityEnhancement/tree/master/ltm/sharpen

相关文章:

  • AI最新资讯,GPT4.1加入网页端、Claude 3.7 Sonnet携“极限推理”发布在即
  • 有什么软件系统可以高效管理工地现场物资材料?
  • 【SpringBoot】从零开始全面解析SpringMVC (二)
  • 如何查询Ubuntu系统中最大的几个目录以G单位显示大小,从大到小排列?
  • Go的单测gomock及覆盖率命令
  • 【HTML5学习笔记2】html标签(下)
  • 《数据结构初阶》【二叉树 精选9道OJ练习】
  • 地球系统模式(CESM)实践技术应用
  • 【MySQL】数据库三大范式
  • GpuGeek 实操指南:So-VITS-SVC 语音合成与 Stable Diffusion 文生图双模型搭建,融合即梦 AI 的深度实践
  • Android framework 中间件开发(二)
  • 当 PyIceberg 和 DuckDB 遇见 AWS S3 Tables:打造 Serverless 数据湖“开源梦幻组合”
  • git管理忽略指定路径/临时文件
  • QT6 源(101)篇一:阅读与注释 QPlainTextEdit,其继承于QAbstractScrollArea,属性学习与测试
  • Python零基础入门到高手8.4节: 元组与列表的区别
  • 以项目的方式学QT开发C++(二)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
  • c++,windows,多线程编程详细介绍
  • 【歌曲结构】2:小节与歌曲结构信息整合
  • 模糊综合评价模型建立
  • salesforce如何导出所有字段
  • 博物馆日|为一个展奔赴一座城!上海171家博物馆等你来
  • 美国务卿鲁比奥抵达会场,将参加俄乌会谈
  • 贵州仁怀通报“正新鸡排鸡腿里全是蛆”:已对同类产品封存送检
  • 全国省市县国土空间总体规划已基本批复完成,进入全面实施阶段
  • 以军向也门3个港口的居民发布撤离令
  • 从《让·桑特伊》到《追忆》,假故事的胜利