如题类似于QQ的换肤功能,判断图片的颜色深浅设置字体颜色为黑或者白。
一点思路都没了 !!!!!
本版專家分:16592
那好像是透明度的关系与颜色深浅没关系。
本版专家分:25082
1. 先求出整个图片的平均色逐个像素相加求平均
我自己也还没有试过。你可以试试
判断颜色的深浅,可以GetPixel如何像素值都偏小,则图像颜色偏神不然偏浅,,,
还有gdi+引进了alpha通道这个是判断透明度用的
最近想找个小项目练练手以便熟悉React,于是想到了“图像颜色提取”这个方向也有的说法是图像主题色提取,颜色量子化或者是叫由图像生成调色板,原因无他只昰因为漂亮!
“分析”的目的有这么几个:
中位切分算法首先把所有像素映射到RGB空间,在这个三维的空间里反复切分出子空間最后将切分空间的像素求均值作为提取结果。分割区块时都选择所有区块中最大(最长的边长最大或体积最大,或像素最多)的区塊切割点应位于边方向上,使得分割后两个区块的像素各一半的位置以上是为中位切分法。流程如下(推荐阅读:):
1.像素映射到RGB空間:
5.计算区块的平均颜色:
这里推荐一个采用中位切分法实现(JavaScript)的颜色量子化项目:
八叉树算法的核心理念是用八叉树来划分颜色空間,然后合并叶节点来逐步聚拢颜色(量子化)八叉树的解释可参考,关键就是下面这两幅图:
具体的解释可参考文章:作者还写了┅个颜色量子化的node模块:
K均值聚类的思想十分简单,可分这几步:
重新计算质心判断是否退絀条件:
这张图的原始分辨率是 1080 x 1800 ,缩放到canvas中分辨率是 216 x 360 (缩放规则是固定最大高度为360按原始宽高比唎缩放)。选择颜色降采样的间隔为 5一共是提取了 6251 种颜色,过滤掉出现次数小于 4 和过黑过亮的颜色后剩余 2555 种颜色K均值聚类的K设为 6 ,最終迭代次数是 10 耗时 106ms。
codepen的原始例子如下:
这方案执行下来会有一些问题:
这部分采用了,它应该是简单的BP神经网络训练数据采用的是的热门图片。目前带评分的图像数据库比较少而且评分往往是综合的,掺杂了其它(构图主题,光影人物等)因素,难以分离出只与色彩相关嘚评分所以我是按照自己的喜好对训练数据进行了评分,所以结果会非常强烈的接近我个人的喜好
另外神经网络的输入项也是比较关鍵的,因为它必须要正确反映颜色相关的图像信息我提取的是:
数据分为四类,评分从高到低分别是:10085,7565。
之前是采用的RGB空间三个冷冰冰的数字并不能让我们很好的分辨不同色彩,于是这里我试着转换到HSL空间:色相(H)、饱和度(S)、明度(L)这三个颜色通道楿互之间的叠加能得到各式各样的颜色,这个颜色空间几乎包括了人类视力所能感知的所有颜色是目前运用最广的颜色系统之一。
RGB和HSL的轉换可参考
转换到HSL空间对于我们提取颜色的目标有以下好处:
影响整个算法运行时间的关键步骤是颜色信息的统计,而统计环节中最耗时的是key的检测存储key的容器长度会越来越长,采用indexOf
的方式会越来越耗时實验证明绝大部分的时间都是耗费在这一步上。所以不妨试试查找二叉树这样的数据结构二叉树的优势在于每次查找的时间会指数级下降,以此加快程序运行
但是,我用js实现这种数据结构的结果并不理想运行时间基本与indexOf
一致,甚至大部分时候还会略微多一点我觉得原因在于:虽然每次查找重复key的时间减少了,但是每次新加入key的步骤变得复杂了而且indexOf()
是 native code
,运行效率应该比我们自己实现的js代码高综合起来看,在一定的样本量区间还是使用原生的indexOf
效率更高,这个区间在本文指的是 种颜色当然我还是相信当颜色更多的时候,二叉树还昰有它的优势的我实现的代码如下:
这是个非常实用的技巧(经过我多次验证),感觉已经离不开它了!
对图像进行模糊可以减少色彩嘚种类从而加速提取算法,这应该是可行的但是我还没有加入到项目中,我探索的比较快效果比较好的模糊算法的实现如下:
最开始只是想熟悉react,结果到后面项目的重心就完全偏向于算法和动画了。我觉得React对SVG还是比较友好的各种动画属性都可以放到state中。个人感受SVG動画相对于CSS的优势在于:更加灵活更加容易完成复杂动画效果,兼容性更好底层优化更流畅。
canvas动画的优势是比较流畅SVG动画在移动端還是有很多肉眼可见的掉帧卡顿的,而且SVG会让HTML变得很大很乱可能让有洁癖的你不舒服。
不管什么动画最终都还是归结于:数学比如:
地址:深圳市龙岗区横岗街道深峰路3号启航商务大厦5楼 邮编:518000 电话:
版权所有?深圳市二一教育股份有限公司 粤教信息(2013)2号
本网站大部分作品来源于会员上传除本网站组織编撰的作品外,版权归上传者所有如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据我们将在3个工作日内予以改正。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。