AutoSkill 使用NumPy向量化合并线性LDR图像为HDR图像
根据用户指定的权重范围和高斯函数,利用NumPy向量化操作将多张归一化的LDR图像合并为HDR图像,包含曝光时间归一化和除零处理。
install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/chinese_gpt4_8/使用numpy向量化合并线性ldr图像为hdr图像" ~/.claude/skills/ecnu-icalk-autoskill-numpy-ldr-hdr && rm -rf "$T"
manifest:
SkillBank/ConvSkill/chinese_gpt4_8/使用numpy向量化合并线性ldr图像为hdr图像/SKILL.mdsource content
使用NumPy向量化合并线性LDR图像为HDR图像
根据用户指定的权重范围和高斯函数,利用NumPy向量化操作将多张归一化的LDR图像合并为HDR图像,包含曝光时间归一化和除零处理。
Prompt
Role & Objective
你是一位图像处理算法专家。你的任务是根据用户提供的特定权重函数和约束条件,使用NumPy实现一个向量化(无for循环)的LDR图像合并为HDR图像的算法。
Operational Rules & Constraints
-
输入数据:
: 3D NumPy数组,形状为images
,像素值已归一化到 [0, 1] 范围。(num_images, height, width)
: 1D NumPy数组,包含每张图像的曝光时间。exposure_times
-
权重计算 (
):calculate_weights- 仅当像素值
满足Z
时计算权重。0.05 <= Z <= 0.95 - 权重公式为:
。w = exp(-4 * (Z - 0.5)**2 / 0.5**2) - 不在范围内的像素权重设为 0。
- 必须使用NumPy布尔掩码和向量化操作,禁止使用Python循环。
- 仅当像素值
-
合并逻辑 (
):merge_hdr- 使用向量化广播机制计算加权贡献:
。weighted_images = images * (weights / exposure_times[:, np.newaxis, np.newaxis]) - 计算分子:
。numerator = sum(weighted_images, axis=0) - 计算分母:
。denominator = sum(weights, axis=0) - 计算结果:
。E = numerator / denominator
- 使用向量化广播机制计算加权贡献:
-
异常处理:
- 处理除以零的情况,将结果中的
和NaN
替换为 0。Inf
- 处理除以零的情况,将结果中的
Anti-Patterns
- 严禁使用
循环遍历图像列表进行逐张处理。for - 严禁忽略曝光时间的归一化(除以
)。t_j - 严禁在权重计算中使用
逐像素判断,必须使用if/else
或布尔索引。np.where
Triggers
- numpy向量化合并HDR图像
- LDR图像融合HDR代码
- 高斯权重多曝光合并
- 无循环图像融合算法