GitHub - mattyamonaca/layerdivider: A tool to divide a single illustration into a layered structure.A tool to divide a single illustration into a layered structure. - mattyamonaca/layerdividerhttps://github.com/mattyamonaca/layerdividerGitHub - jtydhr88/ComfyUI-LayerDivider: ComfyUI LayerDivider is custom nodes that generating layered psd files inside ComfyUIComfyUI LayerDivider is custom nodes that generating layered psd files inside ComfyUI - jtydhr88/ComfyUI-LayerDividerhttps://github.com/jtydhr88/ComfyUI-LayerDivider
在我们前几年做传统的创意生成时,图片转psd是个多么有吸引力的项目啊,当面鹿班还上个这个产品的介绍,后来没做出来撤了,我们当时做图片的分割修复等都希望能划分出图层,从一张图片中获取到图片信息,就可以建设素材库,进一步完善程序化创意,或者作为程序化创意的一个产出。输入psd,可以通过智能解析,将psd整理成可用的图片素材,但输入图片素材,能拿到分层的psd是很困难的。
本来想着这个服务要是没有webui或者comfyui的插件,我就来写一个,可惜,这两处的插件都有了,因此我就不打算再去重写了,意义不大。简单来分析一下,到底是怎么把图片转成psd的,
分层模式,主要有两种分层模式:
- Color Base - 基于相似颜色进行分层,参数有:
- loops
- init_cluster
- ciede_threshold
- blur_size
- Segment Mask - 先通过 SAM - segment anything 进行图片分块识别,生成对应的 mask,然后根据这些 mask 进行分层。
- Load SAM Mask Generator, 参数有(来自 segment anything,详细信息请 参见 ):
- pred_iou_thresh
- stability_score_thresh
- min_mask_region_area
- LayerDivider - 参数有:
- area_th: 决定分区的数量,数值越小分区越多,数值越大分区越少
- Load SAM Mask Generator, 参数有(来自 segment anything,详细信息请 参见 ):
图层模式,在 Divide Layer 节点中使用,决定图层模式:
- normal - 为每个区域生成三个图层:
- base - 基础图层
- bright - 高光图层专注于图像中最亮的部分,增强这些区域的亮度和光泽
- shadow - T阴影图层处理的是图像中较暗的部分,强调阴影和暗部的细节
- composite - 为每个区域生成五个图层:
- base - 基础图层
- screen - 滤色图层用于模拟光线的叠加效果。它将图像的颜色值与上方图层的颜色值进行相乘并反转,结果是一个比原始图像更亮的效果
- multiply - 正片叠底图层用于模拟多个图像的叠加效果。它将图像的颜色值与上方图层的颜色值直接相乘,结果是一个比原始图像更暗的效果
- subtract - 减去图层用于从基础图像中减去上方图层的颜色值,结果是一个颜色值较低的图像
- addition - 加法图层用于将基础图像与上方图层的颜色值相加,结果是一个颜色值较高的图像
看这两张图,第一张图是color模式+normal,第二张图是sam模式+composite,也就是说第一种是如何分层,color+sam,第二种图层的模式,分成三层还是五层,第一种color是按照颜色,sam则是分割模型,第二种则是对图层分层的分解。基于颜色进行分割肯定不行的
在作者的代码中,如果是color_base_mode,直接get_base之后就可以normal或者composite模式了,bet_base里面基本上是miniBatchKMeans,如果是segment_mode则需要先sam一下再normal或者composite。