实现了Huiwen Chang et al. 的论文"Palette-based Photo Recoloring, ACM SIGGRAPH 2015"
Zhou Bowei
2015.12.26
直接打开index.html或者访问http://b-z.github.io/photo_recoloring。
从相册中选择合适图片上传,程序将自动计算调色板。
待计算完成,可点击调色板编辑变换的目标颜色。
编辑完后,点击CONFIRM按钮开始重着色。
函数 | 位置 | 说明 |
---|---|---|
Color.lab2rgb(InputColor) |
color.js | 将RGB颜色转换为Lab颜色(\(RGB\to XYZ\to Lab\)) |
Color.rgb2lab(InputColor) |
color.js | 将Lab颜色转换为RGB颜色 |
Color.labBoundary(pin, pout) |
color.js | 在Lab空间内,求颜色pin与pout连线与Lab边界的交点(二分查找) |
Palette.palette() |
palette.js | 统计图像颜色属于各个bin的颜色个数 |
Palette.kmeansFirst() |
palette.js | 聚类,由统计好的bins数据得到调色板 |
Palette.kmeans() |
palette.js | 调整上一步聚类得到的颜色,直到调色板不再变化 |
Palette.colorTransformSingleL(l) |
palette.js | 根据调色板颜色亮度,确定新图像亮度的变化 |
Palette.colorTransformSingleAB(ab1,ab2,L,x) |
palette.js | 在Lab空间某一亮度的层内,根据论文方法,由\(ab1\to ab2\)这一对颜色变换,对x做a、b通道的颜色变换 |
Palette.colorTransform(colors1,colors2) |
palette.js | 综合几组颜色变换的结果,得到新的图片 |
两天写完 都是DDL逼的(╯-_-)╯╧╧