今天是愚人节:
有家公司的数学好像不太好?
190-150=4.1 ?
过完节,我们还是要继续学习的,最近看到一本讲解设计原理的书,《写给大家看的设计书(第4版)》,作者Robin Williams从对比、重复、对齐、亲密性四个方面给我们梳理了其中的道理。
四个方面的原理分享给大家:
>> 对比(Contrast)
对比的基本思想是,要避免页面上的元素太过相似。如果元素(字体、颜色、大小、线宽、形状、空间等)不相同,那就干脆让它们截然不同。要让页面引人注目,对比通常是最重要的一个因素,正是它能使读者首先看这个页面。
>> 重复(Repetition)
让设计中的视觉要素在整个作品中重复出现。可以重复颜色、形状、材质、空间关系、线宽、字体、大小和图片,等等。这样一来,既能增加条理性,还可以加强统一性。
>> 对齐(Alignment)
任何东西都不能在页面上随意安放。每个元素都应当与页面上的另一个元素有某种视觉联系。这样能建立一种清晰、精巧而且清爽的外观。
>> 亲密性(Proximity)
彼此相关的项应当靠近,归组在一起。如果多个项相互之间存在很近的亲密性,它们就会成为一个视觉单元,而不是多个孤立的元素。这有助于组织信息,减少混乱,为读者提供清晰的结构。
本文着重谈谈「亲密性」如何被「量化」为计算机语言。
这个属于计算设计的话题,
对于设计师来说比较烧脑,
对于程序员需要对设计有一定的理解。
我们慢慢道来~
从空间上来说,接近的元素,越亲密。
书中举了个形象的例子,就是生活中,如果我们看到两个人走在街上,他们的关系并不明确。如何判断他们的关系?他们认识彼此吗?可以从他们之间的空间距离判断。
>> 物理位置的接近就意味着存在关联(实际生活中也是如此)。
亲密性的含义:
>> 亲密性原则并不是说所有一切都要更靠近,其真正的含义是:
如果某些元素在理解上存在关联,或者相互之间存在某种关系,那么这些元素在视觉上也应当有关联。除此以外,其他孤立的元素或元素组则不应存在亲密性。位置是否靠近可以体现出元素之间是否存在关系。
>> 创建广告传单、宣传册、新闻简报或者其他出版物时,你很清楚其中哪些信息在逻辑上存在关联,知道哪些信息应当强调,而哪些信息不用强调。可以通过分组形象地表现这种信息。
如何用「算法」来判断平面设计作品上的元素之间的「亲密性」呢?
这里以下图的平面设计作品示例:
我们要做的第一步是识别图像上有哪些元素?
是不是需要识别字体、图片、装饰元素、背景等等?
其实不需要,我们可以通过边缘检测,把元素的边界点提取出来,简化平面设计作品。
这里推荐使用opencv的Shi-Tomasi算法,示例:
代码语言:javascript复制import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('blox.jpg')
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
corners = cv.goodFeaturesToTrack(gray,25,0.01,10)
corners = np.int0(corners)
for i in corners:
x,y = i.ravel()
cv.circle(img,(x,y),3,255,-1)
plt.imshow(img),plt.show()
对于本文中的例子,通过边缘检测,提取后,如图所示:
我们得到了若干的点,这些点代表的就是元素的轮廓。
从直观上,我们看到,各个元素有分组的现象,这个亲密性的特征是一致的,回到书中所讲的原理,亲密性代表着相关元素被分到一组里。
>> 把相关的元素分在一组,使它们建立更近的亲密性
>> 将有关系的项归为一组。如果页面上有些区域的组织不太清晰,则要看看这些项是不是存在本不该有的亲密性。
>> 如果多个项相互之间存在很近的亲密性,它们将成为一个视觉单元,而不是多个孤立的元素。彼此相关的项应当归在一组。
代码里就是group的概念,如何设计一款平面设计的dsl语言,我们必然要考虑group的特性。
当归组后,整个平面设计作品就有了组织性,所以书中也说道:
>> 亲密性的根本目的是实现组织性
所以,我们通过亲密性计算可以评估一幅平面设计作品的组织性。
上文只是把元素轮廓提取出来了,但还没有计算分组信息,我们有什么算法可以计算出元素之间的分组关系呢?
有一种方法是采用机器学习中的无监督聚类算法:MeanShift
通过MeanShift计算,我们可以把图像上的像素进行聚类;得到各个类别的质心,量化一幅平面设计作品的分组数量。MeanShift如何计算,可以参考scikit-learn库中的meanShift算法。
https://scikit-learn.org/stable/modules/generated/sklearn.cluster.MeanShift.html#sklearn.cluster.MeanShift
把亲密性量化之后,我们可以更进一步得评估留白关系了~
为什么亲密性跟留白有关系?书中提到了2者之间的逻辑。
因为,遵循了亲密性原则后,空白,及留白就显得更为美观了:
>> 亲密性有一个很好的“副产品”,利用亲密性原则,还可以使空白(这是设计者们最喜欢的)更美观(也更有条理)
以上为全文,本文介绍了一种从提取轮廓、无监督聚类实现对平面设计作品的亲密性(留白)量化的方法。