色彩的数学规则(二)(转)

2024-08-24 01:58
文章标签 规则 数学 色彩

本文主要是介绍色彩的数学规则(二)(转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://zhan.renren.com/mathart?gid=3602888498046783626&from=PubNewFeed&ref=hotnewsfeed&sfet=3731&fin=7&fid=24757543928&ff_id=671062753&platform=0&expose_time=1392813177

一首曲子高八度唱,声音截然不同,旋律还是一样,单独的声音意义不大,我们通过一串单独的声音组成的整体辨识出旋律这种美丽的模式,正如烹调在于搭配,你不会爱单独吃醋啃辣椒舔芥末,食物和调料组成的整体才让我们可口怡然。同理我们注重色彩和色彩的关系,单独的色彩很难有很大的吸引力。可我们还是经常问人最喜欢哪种颜色,甚至说你所喜欢的某个色彩可以反映你的性格,我相信这是非常武断的事情,单独的颜色没有太多意义。

      之前我们讨论了某个颜色怎么产生,如何在计算机里表示,显示器上合成,从这儿开始,我们讨论这个颜色和其他颜色怎样组合显得好看。

分析色彩

       每张图片都是一堆像素,每个像素对应一种色彩,每种色彩有色彩模式,除了RGB,还可以是HSB:色相(H),饱和度(S),明度(B),HSB更符合人们判断色彩的习性,此外还有HSL、LAB等别的模式。色彩模式之间相互有着转换公式,可以详见一个叫做easyRGB的网站(图)。不过无论哪种色彩模式,每个色彩都有3个维度,3个维度彼此独立,也就是如果以色彩的三个维度为坐标轴,就形成一个色彩空间。通常,这个坐标系由xyz三个相互的轴线形成,但HSB、HSL模式中色相(H)经常被理解成角度,由此我们可以得到一个圆柱坐标系,可以想象359度的色相和1度的色相非常接近,但在直角坐标系中,他们的距离差之千里,因此圆柱更科学。

      对于我们看到的任何一张图片,或者说视网膜上真实世界拍平形成的输入矩阵,从像素群的角度看,都有5个维度,每个像素除了色彩上的3个维度,还有位置坐标x、y。这个五维度的数据集,是我们视觉原始的出发点。

       于是我和同事做了这么个在线图片分析工具(请用chrome访问http://color3d.herokuapp.com/),我们将用这个工具玩转各种图片的分析,且待下文。

色彩构成分析

         你想分析图片的色彩构成,最简单的方法是把每个像素的色彩变成一个点,丢掉位置信息,挨个丢到色彩空间里,就形成一团点云,我们可以在这里观察某张图片的色彩分布:我为点云设置了透明度让他们不至互相遮挡,又让点云相互遮挡的时候色彩叠加显得更加明亮,所以最耀眼的地方就是像素分布最多的地方。由此我们马上能发现,绝大部分图片即使色彩再花俏,如果我们在HSB空间下查看图片的色彩分布,通常会发现此图只有几个色相,也就是只占领色彩空间的一小部分:

 色彩的数学规则2(原创)

         接近一步,我们将问题简化,不讨论明度也不讨论饱和度,只看看色相的关系,也就是粗略地知道哪些颜色配起来好看。对此我相信你早已有很多配色的经验,比如你应该知道什么颜色的衣服配什么颜色的裤子,而经验又告诉我们一些常识性的东西,有些图片是纯色的也很好看,澄净美丽的无垠蓝天,日落暖黄的大地万物,四月无际的金色菜花,他们都主要只由一个色相构成(但不是一个颜色!), 色相的固定让他们显得纯净,明度和饱和度的变化让他们变得丰富。我们也会遇到许多色相互补的情况,比如北方秋天,万木黄而明亮,天空蓝而深沉,对比卓然。经过我的这个程序分析(processing+ecllipse),在这张内蒙古额济纳的秋天里,这种黄色和蓝色正好在对角线上,还记得美术老师说这叫互为补色不,视觉上对比强烈。

 色彩的数学规则2(原创)

        互为补色和只有一色都只是特殊情况,还有不少例子如下:

 色彩的数学规则2(原创)

色彩的数学规则2(原创)


 色彩的数学规则2(原创)

    这些图的色相紧密地分布在几个峰值附近,在微软亚洲研究院的这个paper里指出,一张漂亮的图片里,色相往往只有几个,而他们之间会产生一定的夹角,这些夹角产生了诸如对角线、三等分等几种模式,这些模式就是色彩搭配的规则。

    从这些简单的规律出发,我们发明了很多经验的配色算法,虽然名字形形色色,其实原理大同小异,无非约束了几个相互协调的色相,有时候再去约束明度和饱和度的关系,简要介绍下:

   Complementary:互为补色,色相角度差180,想象一下秋天的树林和天空!这类配色往往对比度比较大。

  Split-Complementary color scheme :这是1的延伸,

  Triadic:三等分角度,各自呈现180度

  Analogous :相邻的颜色,想象有梯度的渐变

 蓝天,渐变,QQ的UI(色彩-位置变化分析

    曾经喜欢夏日午后在树下仰望天空,记忆里天空总美得充满玄机,可后来我从来就没有在水彩颜料中调出那种性感的蓝色。后来我又买了一个带着偏振镜的单反相机,每次拍摄天空的时候带着暗角,这种效果加剧了天空中那种蓝色变化。

    这种渐变也充满了我们的UI设计,如QQ和旺旺的界面。我们可以在程序里分析他们。这是我写的一个processing程序,沿着箭头方向划一道线,把所有的像素点排列在直角坐标轴里,我们可以发现:这些蓝色的渐变色相都保持着固定,在hsv模式中,一端是明度极高,饱和度很低的亮端,另一端则是饱和度高,明度很低的暗端,换言之,如果让一堆色相相同的颜色保持和谐,可以使明度低的颜色饱和度高,明度高的颜色饱和度低。

 色彩的数学规则2(原创)

      

    作为一个可视化工程师,我觉得这个发现是有意义的,在数据可视化中,我们通常用颜色去标记数量的大小,不同色相的颜色可以表示不同维度的数值,而相同色相则可反映数量的变化。色相相同的颜色里,随着数值增大,亮度和饱和度究竟各自会增大还是减小,会在视觉上看起来更和谐?或许我们可以找到一个函数,可以对任意的数字显示一个特定的颜色:

Color = color(k),其中0<k<1,color是我们想知道的转换函数

   按照我们刚才分析的逻辑,粗糙地假定亮处s为0,b为1,暗处s为1,b为,0我们可以猜测配色关系可以是:

1、Color = HSB(H,1-k,0+k),其中0<k<1

除此,还有3个线性的可能解:

2、Color = HSB(H,0+k,1-k)

3、Color = HSB(H,1-k,1-k)

4、Color = HSB(H,0+k,0+k)

另外,色彩模式可以为HSL,和HSB类似。

     事实上,1和2式,3和4式是一样的,如果另k1=1-k代入式子就显而易见。于是我们可以实验,在一个长条上置入颜色,容易发现,和天空模式最接近的是色彩最和谐的:


色彩的数学规则2(原创)

Color = HSB(H,1-k,0+k),其中0<k<1

 

考虑亮处和暗处的反差没那么明显,设最亮处的明度为Smax,暗处为Smin,饱和度最大与最小分别为Bmax,Bmin,那么对某输入数值k而言:

S = map(k,Smax,Smin),

B=map(k,Bmin,Bmax),

Color = HSB(H,S,B).

其中function map(k,min,max) =min+(max-min)*k。

    最后,让我们测试下这个算法对所有的色相都比较和谐!

 色彩的数学规则2(原创)

Smax = 1,Smin =0,Bmax = 1,Bmin=0.4。

我们也容易发现,在不同的可视化图中,这种算法都能调出和谐的颜色:

色彩的数学规则2(原创)

       这种实验是多此一举吗?请听下文分解。

 

复杂性

        你身上的红衣服和他的红衣服可能很不不一样,搭配的辅助色不一样,材质不一样,甚至只是因为背景环境不同......

      相同的色彩在不同的环境里给人感觉不同,我们对色彩的判断易被环境影响,甚至,我们不需要色彩,用一个超有名的错觉说明这点,这个叫Checker shadow illusion,事实上AB点的颜色是一模一样的,不信你用photoshop吸一下。如果按照右图一样我们找个颜色把2个区域连起来,容易发现2个颜色是一样的。

色彩的数学规则2(原创)

又如下图:2张图颜色构成比例完全一致,但放的位置和尺度不同,看起来还是很不一样

颜色是受环境影响的,颜色是心理感受,时刻记住这一点。

 

 

所以,容易发现,上文的色彩算法要适应不同的情形,是一件值得论证的事情,比如假设我们的色彩算法是:

Color=HSB(k*360,0.8,0.5);

我们用同一种算法对2种不同的图案染色,第一种是有顺序的地形,色彩一层层延伸出来的时候,排列成了彩虹般的秩序,可第二种是无序的随机排列,色彩显得有点糟糕: 

 色彩的数学规则2(原创)

这篇关于色彩的数学规则(二)(转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101127

相关文章

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

2024年高教社杯数学建模国赛最后一步——结果检验-事关最终奖项

2024年国赛已经来到了最后一天,有必要去给大家讲解一下,我们不需要过多的去关注模型的结果,因为模型的结果的分值设定项最多不到20分。但是如果大家真的非常关注的话,那有必要给大家讲解一下论文结果相关的问题。很多的论文,上至国赛优秀论文下至不获奖的论文并不是所有的论文都可以进行完整的复现求解,大部分数模论文都为存在一个灰色地带。         白色地带即认为所有的代码均可运行、公开