使用多个遮罩图像组合两张图像的Python工具
项目描述
maskilayer
maskilayer
是一个Python工具,用于使用一个或多个遮罩图像组合两张图像。
- 使用一个或多个遮罩图像组合两张图像(背景 + 图层)
- 提供正遮罩(遮罩的明亮区域中首选图层)或负遮罩(遮罩的暗区域中首选图层)
- 使用可调节级别的遮罩归一化(0-5)
1. 安装
使用pip安装maskilayer
pip install --upgrade maskilayer
或在特定的Python中安装开发版本
python3.11 -m pip install --upgrade git+https://github.com/twardoch/maskilayer
2. 理由
2.1. 选择性图像锐化
使用分割遮罩将锐化图像与其原始版本组合
- 使用自动锐化方法处理原始图像。
- 使用分割模型生成一个分割遮罩,以隔离特定主题。
- 使用
maskilayer
进行组合- 背景:原始图像
- 图层:锐化版本
- 遮罩:分割遮罩
maskilayer
将保存一个结果,这将是一个组合图像,其中只有主题被锐化,其余保持原始状态。
2.2. 基于深度组合的创意放大
使用深度遮罩混合图像的两个不同放大版本
- 使用保守型上采样器(如 Codeformer)对图像进行上采样,以获取图像背景区域的可预测细节。将保守型上采样作为背景提供给
maskilayer
。 - 使用创意型上采样器(如 Ultimate SD Upscale)对同一图像进行上采样,以获取图像前景(主题)区域的额外细节。将创意型上采样作为叠加(合成图像)提供给
maskilayer
。 - 使用 Depth Anything 或 Midas(远处的区域较暗,近处的区域较亮)生成深度蒙版。将结果作为(正)蒙版提供给
maskilayer
。或者使用类似 Marigold 的模型(近处的主题较暗),并将生成的蒙版作为反转(负)蒙版。 - 使用
maskilayer
进行组合- 背景:保守型上采样
- 叠加:创意型上采样
- 蒙版:深度蒙版(如果近处区域较暗则为反转蒙版)
maskilayer
将保存一个结果,这将是一个具有创意细节的近处主题的合成图像,以及远处区域更为保守的渲染。
3. 使用方法
3.1. 命令行界面
3.1.1. 基本用法
maskilayer -b background.png -c overlay.png -o output.png
3.1.2. 选择性图像锐化示例
maskilayer --back original.png --comp sharpened.png --out sharpened_subject.png --masks segmentation_mask.png --norm 3 --verbose
3.1.3. 基于深度合成的创意上采样示例
maskilayer --back conservative_upscale.png --comp creative_upscale.png --out composite_upscale.png --masks "depth_mask1.png;depth_mask2.png" --imasks "inverted_depth_mask3.png" --norm 2 --verbose
3.1.4. CLI 文档
NAME
maskilayer - Composite two images using mask(s).
SYNOPSIS
maskilayer <flags>
DESCRIPTION
Composite two images using mask(s).
FLAGS
-b, --back=BACK
Type: str
Default: ''
layer 0 (background image path)
-c, --comp=COMP
Type: str
Default: ''
layer 1 (overlay image path that will be composited via masks)
-o, --out=OUT
Type: str
Default: ''
output composite image
-s, --smask=SMASK
Type: str
Default: ''
path to save the final mask (optional)
-m, --masks=MASKS
Type: Optional
Default: None
;-separated mask image paths (optional)
-i, --imasks=IMASKS
Type: Optional
Default: None
;-separated negative mask image paths (optional)
-n, --norm=NORM
Type: int
Default: 0
perform mask normalization with level 0-5
-v, --verbose=VERBOSE
Type: bool
Default: False
print additional output
-f, --fast=FAST
Type: bool
Default: False
save fast but larger files
3.2. Python API
3.2.1. 基本用法
from pathlib import Path
from maskilayer import comp_images
comp_images(
background=Path("background.png"),
overlay=Path("overlay.png"),
output=Path("output.png")
)
3.2.2. 选择性图像锐化示例
from pathlib import Path
from maskilayer import comp_images
comp_images(
background=Path("original.png"),
overlay=Path("sharpened.png"),
output=Path("sharpened_subject.png"),
masks=[Path("segmentation_mask.png")],
normalize_level=3,
verbose=True
)
3.2.3. 基于深度合成的创意上采样示例
from pathlib import Path
from maskilayer import comp_images
comp_images(
background=Path("conservative_upscale.png"),
overlay=Path("creative_upscale.png"),
output=Path("composite_upscale.png"),
masks=[Path("depth_mask1.png"), Path("depth_mask2.png")],
invert_masks=[Path("inverted_depth_mask3.png")],
normalize_level=2,
verbose=True
)
4. 蒙版处理
- 如果您提供多个蒙版,
maskilayer
将对最终组合进行平均。 maskilayer
总是将蒙版图像转换为灰度图。- 如果您提供归一化级别,
maskilayer
将调整蒙版对比度- 级别 0 使用原始蒙版
- 级别 1 将灰度范围拉伸到全黑到全白
- 级别 2-5 逐步增加对比度,以便在亮暗之间有更突然的过渡(级别值高于 5 是允许的,但不受支持)
4.1. 处理多个蒙版路径的提示
4.1.1. 在 CLI 中
- 使用分号(
;
)分隔多个蒙版路径(您也可以使用逗号)maskilayer --masks mask1.png;mask2.png;mask3.png
- 对于反转蒙版,使用
--imasks
标志maskilayer --imasks inverted_mask1.png;inverted_mask2.png
- 您可以在同一命令中使用正蒙版和负蒙版
maskilayer --masks positive_mask.png --imasks negative_mask.png
4.1.2. 在 Python 中
- 使用列表提供多个蒙版路径
masks=[Path("mask1.png"), Path("mask2.png"), Path("mask3.png")]
- 对于反转蒙版,使用
invert_masks
参数invert_masks=[Path("inverted_mask1.png"), Path("inverted_mask2.png")]
- 您可以在同一函数调用中使用正蒙版和负蒙版
comp_images( ..., masks=[Path("positive_mask.png")], invert_masks=[Path("negative_mask.png")] )
5. 许可证
- 想法 & 版权 (c) 2024 Adam Twardoch
- Python 代码 在 OpenAI GPT-4o 和 Anthropic Claude 3 的帮助下编写
- 根据 Apache License 2.0 许可
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解有关 安装软件包 的更多信息。
源分布
maskilayer-1.0.6.tar.gz (23.9 kB 查看哈希)
构建分布
maskilayer-1.0.6-py3-none-any.whl (11.8 kB 查看哈希值)
关闭
maskilayer-1.0.6.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 999798a6749b0c375e658d148c88398e6e96ee7a05b00a7223ea25fba5519140 |
|
MD5 | 2772b2d411372a757cf1da979b6e7c05 |
|
BLAKE2b-256 | 0c0a45f262ad5ce2627b5d8a433375f4ddf9ed3a1677ea5e4c2446d4e40378e4 |
关闭
maskilayer-1.0.6-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0a2778ede017b02e41fc0a1eb26fd5317428e72bf9a4125b8aa3cd3c29cd4821 |
|
MD5 | f4d9774151724dfcb3f2e6939ea7f0ce |
|
BLAKE2b-256 | 8692f7289c0595b3f7aa25cd4e2a0cb1c74575ea19d2202c6a915c5d85d14663 |