图像中高频信息、低频信息与ComfyUI中图像细节保留的简单研究

🧵背景

在做AI绘图的时候,经常有一些图像的细节需要保留原始图像内容,比如说衣服的细节,商品的文字标签等等,如果这些地方发生了变化,就会导致生成的结果无法直接商用,而让生成的图像完全保留原图中的某些细节,基于diffusion的算法,不太可能直接实现,而基于图像蒙版,又容易让图像本身的接缝或者光影产生很多问题。

最近了解到一种基于图像高频信息保留的方式,可以比较好的保留图像中的细节。

呈现出来大概是这样:

这种方式可以很好的保留图像中的细节,那么这几个节点是怎么实现保留图像细节的呢?

🎄算法来源

如果大家做过设计或者摄影修图,应该都了解过利用高反差保留来实现人像摄影中,皮肤磨皮的前提下实现毛孔等细节的保留,后来也有一些磨皮方法是将图像中高频信息和低频信息分离后,对低频信息的图层进行修正而保留图像的细节。

网络上内容很多,可以搜索“photoshop 高频信息 修图”,这里贴一篇案例,有兴趣的可以在ps中尝试手动实现:

https://www.cnblogs.com/caihongmin/p/17629109.html

那么,这个过程到底做了什么呢,简单来说就是高频信息和低频信息的分离。

高频信息是什么?

在图像处理中,高频信息通常指的是图像中变化剧烈的区域,比如边缘、纹理和细节。这些高频信息对于图像的清晰度和细节表现至关重要。以下是一些关于高频信息的要点:

  1. 定义:高频信息是图像中局部变化快速的部分,与低频信息(图像中的平滑区域)相对。

  2. 重要性:高频信息对于图像的清晰度、边缘的锐度和纹理的细节至关重要。

  3. 应用

    • 图像锐化:通过增强图像的高频部分来提高图像的清晰度。
    • 边缘检测:高频信息有助于识别图像中的边缘。
    • 纹理分析:高频信息有助于识别和分析图像中的纹理特征。
  4. 影响因素

    • 噪声:噪声通常表现为图像中的高频随机变化,可能会影响图像质量。
    • 模糊:图像模糊通常与高频信息的丢失有关。
  5. 处理技术

    • 高通滤波器:用于提取图像中的高频信息,如拉普拉斯滤波器、高通Sobel滤波器等。
    • 频域分析:在频域中,高频信息可以通过对图像进行傅里叶变换来分析。
  6. 图像质量:高频信息的保留对于保持图像的视觉质量非常重要,但过多的高频噪声可能会导致图像看起来粗糙或模糊。

  7. 压缩:在图像压缩中,高频信息通常被压缩得更多,因为人眼对高频细节的敏感度较低。

  8. 计算机视觉:在计算机视觉中,高频信息对于物体识别、场景理解等任务至关重要。

那低频信息又是什么?

图像中的低频信息指的是图像中变化较慢或较为平滑的区域,通常包括大面积的均匀颜色或渐变色。低频信息在图像处理和分析中扮演着重要角色,以下是一些关于低频信息的关键点:

  1. 定义:低频信息是指图像中变化不大或相对平滑的区域,与高频信息(快速变化的区域)相对。

  2. 重要性:低频信息有助于理解图像的整体结构和布局,对于图像的平滑度和背景有重要影响。

  3. 应用

    • 图像平滑:通过减少或去除高频信息来平滑图像,常用于去除噪声。
    • 图像缩放:在图像缩放过程中,低频信息有助于保持图像的整体结构。
  4. 影响因素

    • 模糊:图像模糊可能由低频信息的增强和高频信息的减少造成。
    • 光照变化:光照的不均匀性可能在图像中表现为低频信息的变化。
  5. 处理技术

    • 低通滤波器:用于提取图像中的低频信息,如高斯滤波器、平均滤波器等。
    • 频域分析:在频域中,低频信息可以通过对图像进行傅里叶变换来分析。
  6. 图像质量:低频信息有助于保持图像的整体视觉效果,但过度强调低频信息可能会导致图像细节的丢失。

  7. 压缩:在图像压缩中,低频信息通常被保留得更多,因为人眼对低频信息的敏感度较高。

  8. 计算机视觉:在计算机视觉中,低频信息有助于场景的总体理解,但可能不足以进行精确的物体识别。

  9. 图像分割:在图像分割任务中,低频信息有助于识别图像中的大块区域。

  10. 艺术效果:在艺术和设计中,低频信息的调整可以创造出不同的视觉效果,如梦幻效果或抽象画。

不严谨的来理解的话,高频信息就是图像中的各种文字、边缘等变化强烈的部分,而低频信息就是光影等变化不强烈的部分。

拿这个啤酒瓶为例:

高频信息提取后就是这样:

低频信息提取后(高斯模糊10个像素)

 那么高频信息和低频信息分别是如何提取的呢?

先说低频信息,这个很简单,直接通过ps中的高斯模糊,模糊一定的数值就行,如果是人像磨皮,可能5个像素的高斯模糊就差不多了,而如果是保留商品中的文字之类的,可以考虑高一些,比如说20~50像素(当然,这个跟你图像本身尺寸也有关系);

然后是高频信息,这个需要用到ps中的图像-应用图像,来进行计算;

用原始图像,减去 低频图像,同时设定缩放为2,补偿为128,那么就可以得到这张模糊的低频图像对应的高频图像,也就是图像的细节部分。

那么这里的2和128到底是什么意思呢?

其实查一下资料就可以知道:

就是图像的rgb值经过这个计算进行得到的。

带入刚才的2和128,也就是:(B-A)/2-128=result

这个操作,等价于:

(原图像 先反色 * 50% 透明度 + 原图像 高斯模糊 *50%透明度)再反色

注意,这里的叠加模式add,跟ps中的add并不是同一个概念,这里的add仅仅是图像透明度叠上去,ps中的add是相加模式,算法非常不同;

好,到这里仅仅是把高频噪声提取了出来,如何还原图像呢?

对,线性光叠加就好了。

ps里边实现还是很简单的,毕竟东西都很齐全。

但是问题是,comfyui中没有线性光。

那么线性光的计算公式是个啥?

根据百度百科:公式:基色+2混合色-255=结果色。

不过根据实测,这个公式并不是很完整,从ps中试验下来应该是这样的公式:

result= 原色+ 2*混合色 - 256,同时如果结果超过255,那么结果就是255,如果结果小于0,结果就是0

大家可以在ps中自行尝试。

用A代表原色,B代表混合色,那就是 result=A+2B-256,同时如果结果超过255,那么结果就是255,如果结果小于0,结果就是0。

那么,如果comfyui中没有现成的线性光,有没有别的方法可以实现这个类似的公式呢?

有人想到了。

高频图像,也就是B,用66.6%(2/3)的透明度,叠加在高斯模糊后的图像A上,然后通过色阶调整,将结果图像再映射到0~255的图像空间上。

这里涉及到一点色阶的计算公式:

引用:PS 色阶调整之算法公式原理详解及 Python 实现(色阶原理)_photoshop色阶开发-CSDN博客

那么前边的描述:高频图像,也就是B,用66.6%(2/3)的透明度,叠加在高斯模糊后的图像A上,然后通过色阶调整,将结果图像再映射到0~255的图像空间上。

也就是:[(2/3*B+1/3*A-1/3*255)/(1/3*255)]*255=result

同时:

稍微计算下,完全等价于线性光的公式:

用A代表原色,B代表混合色,那就是 result=A+2B-256,同时如果结果超过255,那么结果就是255,如果结果小于0,结果就是0。

emm,发现这个公式的人的确很强😄

如果这些内容懒得看,只需要知道:

左边的箭头其实就是2/3,所以用66%或者67%都可以,右边的色阶是255*1/3,1,255*2/3,就可以了。

没有什么玄学。

在ps中试验下,也可以看到经过前边的操作,色阶被压缩在中间1/3处,反向映射回去就跟原图看起来没有太大差别了。

 如果大家觉得有帮助,还请点赞收藏哦。

这里是聚梦小课堂~

✨写在最后

如果对comfyui还不熟悉的话,最近面向ComfyUI的新手,开了一门图文课程,现在已经更新完成了,如果大家在学习过程中遇到什么问题,也可以直接文章下留言,会持续更新相关答疑内容哈。欢迎订阅哦~

https://blog.csdn.net/jumengxiaoketang/category_12683612.html

​​

感谢大家的支持~

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聚梦小课堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值