前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >愚人节,沉迷 计算设计

愚人节,沉迷 计算设计

作者头像
mixlab
发布2019-05-05 15:25:24
5300
发布2019-05-05 15:25:24
举报

今天是愚人节:

有家公司的数学好像不太好?

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者之间的逻辑。

因为,遵循了亲密性原则后,空白,及留白就显得更为美观了:

>> 亲密性有一个很好的“副产品”,利用亲密性原则,还可以使空白(这是设计者们最喜欢的)更美观(也更有条理)

以上为全文,本文介绍了一种从提取轮廓、无监督聚类实现对平面设计作品的亲密性(留白)量化的方法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无界社区mixlab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档