混合图片生成工具
部署地址: autumn21.top/miximg
旧版部署地址(gh-pages): autumnsun1996.github.io/MixedPNG
旧版Github仓库: AutumnSun1996/MixedPNG
混合图片生成工具其实就是基于图像的透明通道叠加原理, 让一张半透明图片在和不同的背景叠加后分别得到接近于指定的两张图片的展示效果.
这个东西其实有不少人做过一些研究, 网上也能找到一些基于PS等软件的制作教程.
但是大部分教程并没有比较完善的一套理论, 可量化地实现生成结果的优化.
因此我尝试了一些数学推导, 之后有空再继续完善吧.
数学描述
已知图像
显然,通用解不存在。为了处理无解的情况,首先对图像进行变换。
设
找到变换参数
基于图像显示限制, 要求
同时,为了保证图像还原度,应当使
当
当
像素点计算
Alpha合成(alpha compositing)公式:
当背景不透明(
图像使用标准化表示
对幻影图, 有:
此处
为了构造出可能的解,对图像2的显示效果进行放松, 要求变为:
从等式中可以得到:
带入
令
带入二次函数最小值公式,可得
设向量
显然,通过减小
当
例如,对黑白背景下的灰度图,有
预处理
上一步中得到的计算结果为
以
但是,这样计算得到的结果不一定能满足图片表达范围的限制
例如,当
由
变换后的图片,有
最简单情况: 黑白背景下的灰度图
此时
生成结果为:
由
因为
即要求图像1的任意像素亮度大于或等于图像2
灰度背景下的灰度图
灰度图各通道颜色值一致, 均用
设背景1的亮度更高, 则有
由
已知
任意两种颜色背景下的灰度图
令
应有:
此时可将灰度图调整为近单色图, 使
黑白背景下的彩色图
此时
各颜色分量分别为:
约束条件为:
亮度递减情况
当$255 {bg1} {out1} {out2} {bg2} $时,有:
要求
灰度背景下的彩色图
任意背景下的彩色图
更新
预处理亮度范围可以进行扩大 只需保证对应像素亮度差小于背景亮度差即可
求得
设目标为找到参数
设
然后得:
记
求解二元一次方程, 可得
为保证
为保证图片正常显示,应要求
此式可改写为
一般地
分别带入
数学描述
图像表示为
已知图像
设
求变换参数
基于图像显示限制, 要求
同时,为了保证图像还原度,应当使
当
问题转换为如下的最优化问题:
相等条件:
优化目标:
去饱和计算
HSL公式: RGB -> HSL:
Hue calculation:
TODO: 未完成
HSL -> RGB: C = (1 - |2L - 1|) × S X = C × (1 - |(H / 60°) mod 2 - 1|)
R', G', B' =
(R,G,B) = ((R'+m)×255, (G'+m)×255,(B'+m)×255)
- 标题: 混合图片生成工具
- 作者: AutumnSun
- 创建于: 2022-04-29 19:40:42
- 更新于: 2023-04-05 22:06:50
- 链接: https://autumn21.top/blog/2022-04-29/30279e3e3e0d/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。