photo_recoloring

实现了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按钮开始重着色。

二、算法实现

2.1 调色板计算
2.2 重着色

三、主要函数及说明

函数 位置 说明
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 综合几组颜色变换的结果,得到新的图片

Gallery



两天写完 都是DDL逼的(╯-_-)╯╧╧