我在做一个工具,将一张整体色值相近的图片,调整到另一个色值。如图所示
我的策略是,在 lab 空间,取源图片的各通道的平均值(cv::meanStDdev),遍历像素,将他们"相对平均值的波动"叠加到目标色值上。效果还行,但是总感觉差点意思,想问大家, [平均值] 能大体代表这张图片吗?有其他更好的参数吗? (由于是公司项目,不方便放源码)
1
mxT52CRuqR6o5 2020-03-12 22:58:27 +08:00 via Android
直接用 hsv 颜色空间就能实现需求吧
|
2
xiaoming1992 OP @mxT52CRuqR6o5 能稍微详细一些吗?不是太明白你的意思。(不过我策略没变,仅仅从 lab 空间换到 hsv 空间,好像效果是好了些,可能是我显示器的缘故,明天到公司用他们的苹果显示器看看。)
|
3
mxT52CRuqR6o5 2020-03-12 23:54:27 +08:00 via Android
@xiaoming1992 我的想法是在 hsv 的 h 空间进行你说的那个操作,仅供参考,我也不是最专业的
|
4
mxT52CRuqR6o5 2020-03-12 23:57:35 +08:00 via Android
@mxT52CRuqR6o5 h 空间的取值是 0 到 360 度,叠加后溢出了也没关系
|
5
xiaoming1992 OP @mxT52CRuqR6o5 嗯嗯,我对 hsv 各分量都执行了,明天看看效果,再试试仅对 h 通道执行的效果
|
6
Muniesa 2020-03-13 00:05:00 +08:00
我之前写检测颜色程序的时候用的是通道直方图的峰值,我个人感觉“众数”比“平均数”应该要更有代表性一些,不知道在你这里会不会好一些
|
7
xiaoming1992 OP @mxT52CRuqR6o5 hsv 空间效果不太好,一些颜色畸变有些严重。。。
@Muniesa 刚刚试了一下,在色彩比较纯的图片中,效果为: 众数 > 平均数;色彩斑驳或者颜色变动幅度较大的图片中,平均数 > 众数。 谢谢两位 |